오답노트
[ML] KFold, cross_val_score 본문
KFold 는 데이터셋을 K 개로 훈련과 검증 데이터로 나눈다.
출처:en.wikipedia.org/wiki/Cross-validation_(statistics)
위의 그림에서는 전체 데이터를 8 개로 나누었으며 총 8번의 학습을 한 것을 볼 수 있다.
KFold 는 직접적인 성능 향상을 이루진 않지만,
단순 train_test_split 으로 훈련용, 검증용 데이터로 나눌 때에 발생하는 데이터의 낭비를 일반화 시켜 방지할 수 있다.
또한 cross_val_score 를 통해 해당 훈련용 데이터를 검증할 수 있다.
코드로 확인하면,
# 0. import libraries
import warnings
warnings.filterwarnings('ignore') # 경고문 무시 / 제거
from sklearn.model_selection import KFold, cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 1. data
from sklearn.datasets import load_iris # 붓꽃 데이터셋 로드
datasets=load_iris()
x=datasets.data
y=datasets.target
kf=KFold(n_split=5, shuffle=True, random_state=23) # KFold 변수 선언
# 2. model
model=RandomForestClassifier() # 랜덤포레스트 분류 모델
# 3. fitting, score
score=cross_val_score(model, x, y, cv=kf) # 모델 검증
# 4. predict
y_pred=model.predict(x) # 데이터 예측
print('score : ', score)
print('accuracy : ', accuracy_score(y, y_pred))
위와 같은 형식으로 모델 구성 및 훈련, 검증이 가능하다.
또한 cross_val_score 는 model.fit, model.score 를 포함하고 있어 모델만 구성 후 바로 로스를 출력 가능하다.
'머신러닝, 딥러닝' 카테고리의 다른 글
[ML] XGBoost - eval_metric, eval_set, eval_results (0) | 2021.02.02 |
---|---|
[ML] GridSearchCV, RandomizedSearchCV (0) | 2021.01.28 |
[ML] machine learning - all_estimators (0) | 2021.01.27 |
[DL] Google Colab (0) | 2021.01.26 |
[DL] pinball loss - Dacon (1) | 2021.01.25 |