Python/Scikit-learn
Scikit-learn의 기초 - 지도학습 데이터 split(학습, 검증용), 교차 검증
NeatyNut
2023. 11. 22. 16:00
★ 학습 및 검증용 데이터 구분하기 위한 데이터 샘플(사이킷런 라이브러리 포함 자료_당뇨)
import pandas as pd
from sklearn.datasets import load_diabetes
dataset = load_diabetes()
df = pd.DataFrame(data=dataset.data, columns=dataset.feature_names)
df['target'] = dataset.target
1. 지도학습 데이터 split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.3, random_state=1)
- target을 분리한 이유: target은 결과값입니다. 고로 x는 이외 변수들, y에는 target변수를 담았습니다.
- test_size : 0.3 즉, 30% 정도의 샘플만 검증 데이터로 쓰겠다는 뜻입니다. 20%, 35% 등 원하는 만큼 조정 가능합니다.
- random_state : 매번 split하게 된다면 바뀌게 되기 때문에 특정 숫자를 넣어 고정합니다.(아무 숫자 상관없습니다.)
2. K-fold(교차 검증)
앞선 행위를 나눈 개수만큼 반복하여 검증의 정확도를 올리기 위함.
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.model_selection import StratifiedKFold
model = DecisionTreeClassifier(random_state=0) # 난수 고정
kfold = StratifiedKFold(n_splits=5) # 5개로 나눔
scores = cross_val_score(model, X, y, cv=kfold) # cv(교차검증) 인자로 나눈 샘플 넣음
scores