[파이썬][scikit-learn] scikit-learn에서 데이터 분할 (Train/Test Split)

데이터 과학과 머신 러닝에서 데이터 분할은 매우 중요한 단계입니다. 데이터를 적절하게 분할하는 것은 모델의 성능을 평가하고 일반화하기 위해 필수적입니다. scikit-learn은 파이썬에서 데이터 분할을 쉽게 수행할 수 있는 강력한 도구입니다. 이 포스트에서는 scikit-learn을 사용하여 데이터를 훈련 세트(train set)와 테스트 세트(test set)로 분할하는 방법을 설명하겠습니다.

데이터 분할의 중요성

데이터 분할은 모델의 성능을 정확히 평가하고 일반화하기 위해 매우 중요합니다. 데이터를 한 번에 사용하면 모델이 훈련 데이터에 과적합(overfitting)될 수 있기 때문에 모델의 성능을 신뢰할 수 없게 만들 수 있습니다. 따라서 데이터를 훈련 세트와 테스트 세트로 분할하여 모델을 훈련하고 평가하는 것이 일반적인 접근 방식입니다.

scikit-learn을 사용한 데이터 분할

scikit-learn에서 데이터 분할은 train_test_split 함수를 사용하여 간단하게 수행할 수 있습니다. 이 함수는 두 개의 매개변수인 Xy를 받아서 훈련 세트와 테스트 세트로 분할된 데이터를 반환합니다.

from sklearn.model_selection import train_test_split

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

위의 코드에서 X는 입력 특성(feature)을, y는 출력(타겟) 변수를 나타냅니다. test_size 매개변수를 통해 테스트 세트의 크기를 지정할 수 있으며, 일반적으로 0.2(20%)로 설정됩니다. random_state 매개변수는 난수 발생기 시드(seed)를 제어하여 매번 동일한 분할을 생성할 수 있도록 합니다.

분할된 데이터는 X_train, X_test, y_train, y_test 변수에 각각 저장됩니다. X_train은 훈련 세트의 입력 특성, y_train은 훈련 세트의 출력 변수, X_test는 테스트 세트의 입력 특성, y_test는 테스트 세트의 출력 변수를 나타냅니다.

데이터 분할 예제

다음은 scikit-learn을 사용하여 데이터를 분할하는 간단한 예제입니다. 아래 코드는 붓꽃 데이터셋을 로드하고, 입력 특성과 출력 변수를 분할합니다.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 붓꽃 데이터셋 로드
iris = load_iris()

# 입력 변수와 출력 변수 분할
X = iris.data
y = iris.target

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 훈련 세트의 크기 확인
print("훈련 세트의 크기:", len(X_train))

# 테스트 세트의 크기 확인
print("테스트 세트의 크기:", len(X_test))

이 예제에서는 붓꽃 데이터셋을 불러와서 X에 입력 변수(feature)를, y에 출력 변수(target)를 저장합니다. 그리고 train_test_split 함수를 사용하여 데이터를 훈련 세트와 테스트 세트로 분할한 후, 각 세트의 크기를 확인합니다.

데이터 분할의 중요성을 강조하고, scikit-learn을 사용하여 데이터를 훈련 세트와 테스트 세트로 분할하는 방법을 알아봤습니다. 이를 통해 모델의 성능을 평가하고 일반화할 수 있는 기본적인 워크플로우를 구축할 수 있습니다.