[python] 데이터 분할 및 훈련 세트 생성

Python에서 데이터를 효과적으로 분할하고 훈련 세트를 생성하는 것은 머신 러닝 및 데이터 분석 작업에서 중요한 단계입니다. 데이터를 효율적으로 분할하고 훈련 세트로 구성하는 방법을 살펴보겠습니다.

데이터 분할

데이터를 훈련 및 테스트 세트로 분할하는 방법은 모델의 성능을 평가하고 일반화하는 데 중요합니다. 이를 위해 train_test_split 함수를 사용합니다. 이 함수는 주어진 데이터를 지정된 비율에 따라 훈련 및 테스트 세트로 분할합니다.

다음은 예시 코드입니다.

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와 해당 레이블 또는 타깃 y를 80:20 비율로 훈련 및 테스트 세트로 분할합니다. random_state 매개변수를 사용하여 재현 가능한 결과를 얻을 수 있습니다.

계층적 샘플링

데이터가 불균형한 경우, 즉 클래스 간 샘플 수가 차이가 나는 경우, 계층적 샘플링(stratified sampling)을 사용하여 각 클래스가 훈련 및 테스트 세트에 고르게 분포되도록 할 수 있습니다. 이를 위해 stratify 매개변수를 이용합니다.

다음은 계층적 샘플링의 예시 코드입니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)

위 코드에서 stratify 매개변수를 사용하여 타깃 데이터 y를 기준으로 계층적 샘플링을 수행합니다.

교차 검증

더 강력한 성능평가를 위해 교차 검증(cross-validation)을 사용할 수 있습니다. 교차 검증은 데이터를 여러 개의 fold로 나누어 여러 모델을 훈련하고 평가하는 방법입니다.

다음은 5-fold 교차 검증을 사용하는 예시 코드입니다.

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
scores = cross_val_score(model, X, y, cv=5)

위 코드는 LogisticRegression 모델에 대해 5-fold 교차 검증을 수행하고 각 fold에 대한 정확도를 반환합니다.

데이터를 효과적으로 분할하고 훈련 세트를 생성하여 모델의 성능을 관찰하고 개선하는 것이 머신 러닝 및 데이터 분석 작업에서 필수적입니다.

참고 자료