여러 개의 평가지표를 사용하고 싶을 때 사용
cross_validate()
cross_validate()는 Scikit-learn 라이브러리에서 제공하는 cross-validation(교차 검증) 기능의 한 가지 방법입니다.
이 함수를 사용하면 데이터셋을 여러 개의 fold(겹)로 나누어 각각의 fold를 테스트셋으로 사용하고 나머지 fold를 학습셋으로 사용하여 모델을 학습시키고 평가하는 과정을 반복할 수 있습니다.
함수 구문
cross_validate(estimator, X, y=None, groups=None, scoring=None, n_jobs=None, cv=None,
verbose=0, fit_params=None, pre_dispatch='2*n_jobs',
return_train_score=False, return_estimator=False, error_score=nan)
함수 인자
- estimator: scikit-learn에서 제공하는 모델 객체
- X: 독립 변수 데이터셋
- y: 종속 변수 데이터셋
- groups: 그룹 데이터셋
- scoring: 모델의 성능을 측정하는 방법
- n_jobs: 병렬 처리에 사용할 CPU 개수
- cv: 교차 검증을 위한 fold 수
- verbose: 출력할 로그 레벨
- fit_params: 모델 학습 시 사용할 매개변수
- pre_dispatch: 작업을 실행할 작업자 수
- return_train_score: 훈련 데이터에 대한 스코어를 반환할 지 여부
- return_estimator: 추정기 객체를 반환할 지 여부
- error_score: 에러가 발생한 경우 대체 값
함수 반환값
- fit_time: 각 fold에서 모델 학습에 소요된 시간
- score_time: 각 fold에서 모델 성능 측정에 소요된 시간
- test_score: 각 fold에서 모델의 성능 측정 결과
- train_score: 각 fold에서 모델을 학습시키고 훈련 데이터에 대한 성능 측정 결과
사용 예시
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_validate
X, y = load_iris(return_X_y=True)
logreg = LogisticRegression()
scoring = ['precision_macro', 'recall_macro']
scores = cross_validate(logreg, X, y, scoring=scoring)
cross_validate() 를 사용하면 데이터셋을 여러 개의 fold(겹)로 나누어 각각의 fold를 테스트셋으로 사용하고 나머지 fold를 학습셋으로 사용하여 모델을 학습시키고 평가하는 과정을 반복할 수 있습니다.
cross_validate() 함수는 다음과 같은 인자를 받습니다.
- estimator: scikit-learn에서 제공하는 모델 객체
- X: 독립 변수 데이터셋
- y: 종속 변수 데이터셋
- groups: 그룹 데이터셋
- scoring: 모델의 성능을 측정하는 방법
- n_jobs: 병렬 처리에 사용할 CPU 개수
- cv: 교차 검증을 위한 fold 수
- verbose: 출력할 로그 레벨
- fit_params: 모델 학습 시 사용할 매개변수
- pre_dispatch: 작업을 실행할 작업자 수
- return_train_score: 훈련 데이터에 대한 스코어를 반환할 지 여부
- return_estimator: 추정기 객체를 반환할 지 여부
- error_score: 에러가 발생한 경우 대체 값
cross_validate() 함수는 다음과 같은 반환값을 가집니다.
- fit_time: 각 fold에서 모델 학습에 소요된 시간
- score_time: 각 fold에서 모델 성능 측정에 소요된 시간
- test_score: 각 fold에서 모델의 성능 측정 결과
- train_score: 각 fold에서 모델을 학습시키고 훈련 데이터에 대한 성능 측정 결과
예를 들어, 아이리스 데이터셋에서 로지스틱 회귀 모델을 학습시키고 교차 검증을 수행하는 코드는 다음과 같습니다.
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_validate
X, y = load_iris(return_X_y=True)
logreg = LogisticRegression()
scoring = ['precision_macro', 'recall_macro']
scores = cross_validate(logreg, X, y, scoring=scoring)
코드
이 코드는 scikit-learn 라이브러리의 cross_validate() 함수를 사용하여 로지스틱 회귀 분석 모델을 검증하는 예시
load_iris() 함수를 사용하여 iris 데이터셋을 로드하고, 데이터셋의 특성값을 X, 타겟값을 y 변수에 할당
LogisticRegression() 함수를 사용하여 로지스틱 회귀 분석 모델을 생성
cross_validate() 함수는 데이터를 k-fold 교차 검증하여 모델의 성능을 평가
이 함수는 여러 개의 평가 지표(scoring metric)를 계산
이 코드에서는 precision_macro과 recall_macro 지표를 사용
precision_macro은 클래스별 정밀도를 계산하고, 이를 클래스 수로 평균한 값
recall_macro은 클래스별 재현율을 계산하고, 이를 클래스 수로 평균한 값
cross_validate() 함수는 모델을 평가한 결과를 딕셔너리 형태로 반환
반환된 딕셔너리에서 test_precision_macro과 test_recall_macro 키를 사용하여 각각 precision_macro과 recall_macro 지표의 검증 점수를 얻는다
이 점수는 각 폴드에서 계산된 값을 리스트로 반환합니다.
따라서 cross_validate() 함수는 입력된 모델과 데이터셋으로부터 k-fold 교차 검증을 수행하고,
평가 지표(precision_macro, recall_macro)를 기반으로 각 폴드에서 모델의 성능을 평가하며, 결과를 딕셔너리로 반환합니다.
'Data_engineering > Machine_learning' 카테고리의 다른 글
[sklearn] accuracy_score (0) | 2023.03.06 |
---|---|
[sklearn] OneHotEncoder (0) | 2023.02.28 |
[교차검증] cross_val_score() (0) | 2023.02.27 |
[교차검증] cross_val_predict() (0) | 2023.02.27 |
[Machine learning] k-fold cross validation (0) | 2023.02.27 |
댓글