빅데이터 전문가 되기
[skcikit-learn] Cross Validation(교차 검증) 본문
👀 Cross Validation(교차 검증) 이란?
: 말 그대로 데이터를 교차하여 모델을 검증하는 것입니다. 'train_test_split' 함수는 데이터를 1회 분리해 모델을 학습하고 검증하지만, 교차 검증은 이를 여러번 시도해 같은 데이터로 여러번 훈련하는 효과를 통해 모델의 신뢰도를 높일 수 있게 됩니다.
👉 sklearn.model_selection.cross_validate
cross_val_score(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None,
verbose=0, fit_params=None, pre_dispatch='2*n_jobs', error_score=nan)
- 주요 Parameter
- estimator : 평가하려는 모델
- X : train data
- y : target table
- cv : 교차 검증 분할 수(k)
return
- 교차 검증 결과 정확도 점수의 배열
👉 sklearn.model_selection.cross_validate
cross_validate(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None,
verbose=0, fit_params=None, pre_dispatch='2*n_jobs', return_train_score=False,
return_estimator=False, error_score=nan)
- 주요 Parameter
- estimator : 평가하려는 모델
- X : train data
- y : target table
- cv : 교차 검증 분할 수(k)
- return_train_score : 훈련 점수 포함 여부
return
- 교차 검증 결과 정확도 점수의 배열
예시를 통해 확인해보도록 하겠습니다.
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_validate, cross_val_score
from sklearn.linear_model import LogisticRegression
iris = load_iris()
# 머신러닝 모델 생성
model = LogisticRegression(max_iter=10000)
# cross_val_score : 각 검증의 평가 스토어 도출
scores = cross_val_score(model, X=iris.data, y=iris.target, cv=5)
print(f"각 검증 별 점수 :\n {pd.Series(scores)}\n")
print(f"평균 점수 :{scores.mean()}\n")
> 각 검증 별 점수 :
0 0.966667
1 1.000000
2 0.933333
3 0.966667
4 1.000000
dtype: float64
> 평균 점수 :0.9733333333333334
cross_val_score 함수는 각 검증의 '평가 점수'만 보여주는 함수이며, 간단히 평가 점수만 확인하고 싶을 때 사용한다.
# cross_validate : 각 검증의 결과 도출
result = cross_validate(model, X=iris.data, y=iris.target, cv=5, return_train_score=True)
print("각 검증의 결과 :\n", pd.DataFrame(result))
> 각 검증의 결과 :
fit_time score_time test_score train_score
0 0.029001 0.001204 0.966667 0.966667
1 0.041232 0.001026 1.000000 0.966667
2 0.034352 0.000981 0.933333 0.983333
3 0.029515 0.001060 0.966667 0.983333
4 0.030946 0.001148 1.000000 0.975000
cross_validate 함수는 검증 결과로 '학습 시간', '평가 시간', '평가 점수', '훈련 점수'를 보여준다.
훈련 점수는 함수의 매개 변수 return_train_score=True를 추가해주면 함께 확인할 수 있다.
'Python > skcikit-learn' 카테고리의 다른 글
[scikit-learn] Linear Models (0) | 2023.04.28 |
---|---|
[scikit-learn] pipeline (0) | 2023.04.27 |
Comments