인프런 커뮤니티 질문&답변

찐찐님의 프로필 이미지
찐찐

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

사이킷런 소개와 머신러닝 분류 예측 모델 개요

random_state 질문

작성

·

22K

1

안녕하세요.

<X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, test_size=0.2, random_state=11)>

에서 random_state가 무엇을 의미하나요? 1일 때, 0일때, 11일때 각가 어떤 차이가 있나요?

답변 4

8

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

scikit learn에서 사용하는 random_state 인자는 수행시마다 동일한 결과를 얻기 위해 적용합니다.

train_test_split(..., test_size=0.2) 과 같은 함수는 80% train, 20% test 데이터 세트를 추출합니다. 하지만 추출된 데이터는 수행을 할때마다 다를수 있습니다. random하게 80%, 20%를 추출하기 때문입니다.

가령 1~ 100까지 일련번호로 된 100개의 데이터를 train_test_split(.., test_size=0.2) 로 수행하면 해당 함수를 첫번째 수행할 때는 1~80 번이 train, 81~100번이 test가 될 수 있지만, 다시 수행하면 이번에 21~100번이 train, 1~20번이 test가 될 수 있습니다. 80%, 20% 로 나누는건 동일하지만 함수를 수행 시마다 추출한 레코드들을 달라질수 있습니다. 내부적으로 80%, 20% 로 나눌때 random 함수를 적용합니다.

random_state=1 이라고 하면 바로 이 random 함수의 seed 값을 고정시키기 때문에 여러번 수행하더라도 같은 레코드를 추출합니다. random 함수의 seed값을 random_state라고 생각하시면 됩니다.

제가 강의에 사용된 train/test 데이터세트를 여러분도 동일하게 사용할 수 있도록 random_state를 고정값으로 할당했습니다. 그렇지 않으면 제가 설명드리는 데이터 세트와 여러분이 수행하는 데이터 세트는 80%, 20%는 맞더라도 서로 다른 레코드로 추출되기 때문입니다.

random_state를 어떤 값으로 하셔도 상관없습니다.  이는 random값을 고정하는 역할만 수행합니다.

감사합니다.

1

권 철민님의 프로필 이미지
권 철민
지식공유자

shuffle은 그냥 random 하게 섞는겁니다. 만약 random seed가 일정한 값을 주면, shuffle역시 수행할 때 마다 동일하게 섞입니다.

0

shuffle과는 무슨 차이인가요?

0

찐찐님의 프로필 이미지
찐찐
질문자

감사합니다 선생님 도움이 많이 되었습니다^^ 연말 잘 보내세요~!

찐찐님의 프로필 이미지
찐찐

작성한 질문수

질문하기