빅데이터 전문가 되기

[skcikit-learn] Cross Validation(교차 검증) 본문

Python/skcikit-learn

[skcikit-learn] Cross Validation(교차 검증)

지야소이 2023. 4. 28. 14:11

👀 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