🤔 cross_val_score과 cross_validate의 차이는 뭘까?
➡︎ cross_val_score()와 cross_validate()는 교차 검증을 수행한다는 점에서 비슷하지만, 반환 값과 기능에서 중요한 차이가 있음
🥊 cross_val_score() vs cross_validate()
항목 | cross_val_score() | cross_validate |
반환값 | 각 fold의 단일 지표 값 리스트 (ex. 정확도 리스트) | 여러 지표 포함된 dict (학습시간, 평가점수 등) |
여러 평가 지표 지원 | ❌ 단일 지표만 가능 (scoring='accuracy' 등) | ✅ 여러 지표 지원 (scoring=['accuracy', 'f1'] 등) |
학습/평가 시간 반환 | ❌ 제공하지 않음 | ✅ 'fit_time', 'score_time' 포함됨 |
유연성 | 단순하고 직관적 | 더 유연하고 상세한 정보 제공 |
사용 예시 | 빠르게 정확도 등 하나의 점수만 확인할 때 | 학습 시간, 복수 지표, 내부 과정 분석 필요할 때 |
❕예시
cross_val_score()
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
print(scores) # [0.91, 0.88, 0.93, 0.89, 0.92]
print(scores.mean()) # 평균 정확도
cross_validate()
from sklearn.model_selection import cross_validate
results = cross_validate(model, X, y, cv=5, scoring=['accuracy', 'f1_macro'], return_train_score=True)
print(results['test_accuracy']) # 각 fold의 테스트 정확도
print(results['test_f1_macro']) # 각 fold의 테스트 f1 점수
print(results['fit_time']) # 학습 시간
print(results['train_accuracy']) # 훈련 정확도 (선택적으로 반환)
📌 정리
- 단순히 검증 점수 (ex. 정확도)만 보고 싶다면 ➡︎ cross_val_score()
- f1, precision 등 여러 지표가 필요하다면 ➡︎ cross_validate()
- 학습 시간, 검증 시간도 확인하고 싶다면 ➡︎ cross_validate()
- 훈련 성능도 같이 보고 싶다면 (return_train_score=True) ➡︎ cross_validate()
필요한 기능이나 분석 목적에 따라 선택하면 되지만, 실전 프로젝트나 논문 수준에서는 cross_validate()가 더 자주 쓰이는 편
'개발 > Python' 카테고리의 다른 글
Python > Deep Learning > PyTorch (0) | 2025.06.03 |
---|---|
Scikit-Learn > fit(), transform() (0) | 2025.05.10 |
DB > fetchmany, fetchone, fetchall (0) | 2025.04.27 |
🪄매직 메소드 __xxx__ (0) | 2025.04.17 |
🦭바다코끼리 연산자 (0) | 2025.04.13 |