오답노트
[ML] k-fold Cross Validation 본문
k-fold Cross Validation
모델링을 할 때, 데이터 셋을 train과 test로 나누고, train 데이터는 다시 train 과 validation 데이터로 나눠서 모델링한다.
k-fold Cross Validation은 train을 k개로 나누고 차례대로 validation으로 선택하고 성능을 평가한다.
이렇게 k 개의 Accuracy 평균을 측정한다.
Cross Validation은 Accuracy의 편차를 많이 줄여준다. Accuracy 편차가 줄어든다는 의미는 모델의 성능의 신뢰도가 올라간다는 의미다.
k 값은 보통 5 ~ 10 사이에서 많이 사용된다.
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth = 3)
dt_result = cross_val_score(model, x, y, cv=10)
print(dt_result)
print(dt_result.mean(), dt_result.std())
'''
[0.66 0.73 0.64 0.68 0.66 0.72 0.63 0.69 0.61 0.73]
0.675 0.040311288741492736
'''
cross_val_scroe의 cv 옵션이 k 값이다.
위 함수는 내부적으로 학습 예측 평가를 한번에 한다. 하지만 fit을 하지는 않으므로 수치를 파악하는 정도로만 사용하자.
'Python > ML' 카테고리의 다른 글
[ML] 복잡도와 과적합 (0) | 2022.08.25 |
---|---|
[ML] Learning Curve (데이터 늘리기, Bias 줄이기) (0) | 2022.08.25 |
[ML] HyperParameter Tuning (0) | 2022.08.24 |
[ML] 선형(선형 회귀, 로지스틱 회귀) 모델 변수 선택법 (0) | 2022.08.24 |
[ML] SVM - SVC (0) | 2022.08.24 |