데이터 분할
모델을 제대로 평가하려면 데이터를 학습 세트와 테스트 세트로 분할해야 해요. 학습 세트는 모델을 학습하는 데 사용하고, 테스트 세트는 모델을 평가하는 데 사용해요. 이 분할은 무작위로 이루어지지만, 타깃 발생 비율이 낮을 때는 층화(stratification)를 사용해 학습 세트와 테스트 세트에 동일한 비율의 타깃이 포함되도록 해야 할 수 있어요.
이 연습 문제에서는 층화를 적용해 데이터를 분할하고, 학습 세트와 테스트 세트의 타깃 발생 비율이 같은지 확인할 거예요. train_test_split 메서드는 이미 임포트되어 있으며, X와 y DataFrame은 작업 공간에 준비되어 있어요.
이 연습은 강의의 일부입니다
Python으로 배우는 예측 분석 입문
연습 안내
train_test_split메서드를 사용해 이 DataFrame들을 층화하여 분할하세요. 학습 세트와 테스트 세트의 크기가 같고, 타깃 발생 비율도 같도록 하세요.- 학습 세트의 타깃 발생 비율을 계산하세요. 이는 학습 세트의 타깃 개수를 학습 세트의 관측치 수로 나눈 값이에요.
- 테스트 세트의 타깃 발생 비율을 계산하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Load the partitioning module
from sklearn.model_selection import train_test_split
# Create DataFrames with variables and target
X = basetable.drop("target", 1)
y = basetable["target"]
# Carry out 50-50 partititioning with stratification
X_train, X_test, y_train, y_test = ____(X, y, test_size = ____, stratify = ____)
# Create the final train and test basetables
train = pd.concat([X_train, y_train], axis=1)
test = pd.concat([X_test, y_test], axis=1)
# Check whether train and test have same percentage targets
print(round(sum(train[____])/len(____), 2))
print(round(sum(test[____])/len(____), 2))