사이킷런은 교차 검증을 좀 더 편리하게 수행할 수 있게 해주는 API를 제공한다. 대표적인 것이 cross_val_score( )이다.
K Fold로 데이터를 학습하고 예측하는 코드를 보면
1. 폴드 세트를 설정하고
2. for 루프에서 반복으로 학습 및 테스트 데이터의 인덱스를 추출한 뒤
3. 반복적으로 학습과 예측을 수행하고 예측 성능을 반환했다.
cross_val_score( )는 이런 일련의 과정을 한번에 하는 API다. 이것의 매개변수를 보도록 하자
cross_val_score(estimator, X, y, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs)
이 중에서 중요한 매개변수는 estimator, X, y, scoring, cv가 주요 매개변수이다.
- estimator는 사이킷런의 분류 알고리즘 클래스 또는 회귀 알고리즘 클래스를 의미
- X는 피처 데이터 세트
- y는 레이블 데이터 세트
- scoring은 예측 성능 평가 지표를 기술
- cv는 교차 검증 폴드 수를 의미
cross_val_score()는 수행 후 반환 값은 scoring 파라미터로 지정된 성능 지표 측정값을 배열 형태로 반환한다.
우리가 앞에서 교차검증에서 봤듯이 사이킷런의 알고리즘 클래스를 결정하는 esitimator의 따라 교차검증이 바뀐다.
- estimator가 분류(classifier)인 경우 Stratified K 폴드 방식으로 레이블값의 분포에 따라 학습/테스트 세트를 분할
- estimator가 회귀인 경우 Stratified K 폴드 방식을 사용할 수 없으므로 K Fold방식으로 분할한다.
이제 코드를 보자
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score, cross_validate
from sklearn.datasets import load_iris
import numpy as np
iris_data = load_iris()
dt_clf = DecisionTreeClassifier(random_state=156)
feature_data = iris_data.data # 피처 데이터(독립변수)
label = iris_data.target # 레이블 데이터(종속변수)
# 성능 지표는 정확도, 교차 검증 폴드세트는 3개
scores = cross_val_score(dt_clf, feature_data, label, scoring='accuracy', cv = 3)
print('교차 검증별 정확도:', np.round(scores,4))
print('평균 검증 정확도:', np.round(np.mean(scores), 4))
교차 검증별 정확도: [0.98 0.94 0.98]
평균 검증 정확도: 0.9667
cross_val_score( )는 cv로 지정된 횟수만큼 scoring 파라미터로 지정된 평가 지표로 평가 결괏값을 배열로 반환한다. 그리고 일반적으로 이를 평균을 내서 평가 수치, 평가 지표로 사용한다. !!!
코드의 결과값을 보면 scoring 매개변수로 우리가 원하는 평가 지표를 받을 수 있고, cv를 통해서 교차 검증까지 아주 쉽게 끝낼 수 있다.!!!
결론 : cross_val_score( ) 이용하면 아주 편하게 교차 검증을 할 수 있다. ++
'머신러닝' 카테고리의 다른 글
교차검증(K 폴드 교차 검증, Stratified K 폴드) (0) | 2024.02.21 |
---|---|
머신러닝의 성능 올리기 (0) | 2024.02.21 |
교차검증(K 폴드 교차 검증, Stratified K 폴드) (0) | 2024.02.21 |
머신러닝 분류 모델 성능평가 지표(ROC곡선과 AUC) (0) | 2024.02.20 |
머신러닝 분류 모델 성능평가 지표(F1 스코어) (0) | 2024.02.20 |