본문 바로가기
프로그램

[파이썬] train_test_split의 random_state 옵션

by 오디세이99 2022. 10. 9.
728x90
반응형

 

train, test를 분리 시 동일한 결과가 나오게 하느냐 아니냐입니다.

random_state에 어떤 수든 동일한 결과를 보이게 됩니다.

다음과 같이 데이터를 만들어서 테스트해보죠.

import numpy as np
from sklearn.model_selection
import train_test_split

X = np.arange(20).reshape(10, 2)
y = np.arange(10)
print(X,'\n\n', y)

일반적으로 test 테이터 20%로 해서 train_test_split를 하면 다음과 같이 나뉩니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)

동일하게 실행하면 train, test 가 나뉘는데, 앞에서와 다른 데이터들이 나뉜 것을 볼 수 있습니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)

이제 random_state=0로 해서 해보겠습니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)

동일하게 random_state=0로 해서 해보면 앞에서와 같은 데이터들이 니오는 것을 확인할 수 있습니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)

그럼 random_state=1000으로 하면 어떨까요?

random_state=0일 때와는 다른 데이터로 나뉜 것을 볼 수 있습니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1000)
print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)

역시 random_state=1000으로 하면 같은 데이터가 나옵니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1000)
print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)

random_state=5로 하면 1000 때와는 다른 데이터로 해서 나뉩니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=5)
print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=5)print(X_train,'\n\n', X_test, '\n\n', y_train, '\n\n', y_test)

 

 

728x90
반응형

댓글