AI

scikit-learn으로 모델 평가하는 방법

Geeyoon 2025. 4. 14. 12:22

목차

  1. 모델 평가가 왜 중요한가?
  2. 분류(Classification) 모델 평가 지표
  3. 회귀(Regression) 모델 평가 지표
  4. scikit-learn으로 간단히 평가하는 방법
  5. 예제 코드로 실습하기
  6. 마무리 정리

1. 모델 평가가 왜 중요한가?

모델을 잘 만들었다고 해도,
제대로 평가하지 않으면 그 성능이 좋은지 나쁜지 알 수 없습니다.

모델 평가 지표는 다음을 판단하는 데 사용됩니다:

  • 예측이 얼마나 정확한지
  • 특정 클래스(예: 암환자)를 잘 잡아내는지
  • 오차가 얼마나 큰지
  • 지나치게 학습(overfitting)하지 않았는지

2. 분류(Classification) 모델 평가 지표

분류 모델은 클래스 라벨을 예측합니다. (예: 스팸/비스팸)

지표                                                             설명
Accuracy (정확도) 전체 중 맞춘 비율
Precision (정밀도) Positive 예측 중 정답 비율
Recall (재현율) 실제 Positive 중 맞춘 비율
F1 Score Precision과 Recall의 조화 평균
ROC-AUC 이진 분류 예측 성능 전체 곡선 면적

✨ 상황에 따라 어떤 지표를 더 중요하게 볼지는 달라질 수 있습니다.


3. 회귀(Regression) 모델 평가 지표

회귀 모델은 연속적인 수치 값을 예측합니다. (예: 집값 예측)

지표                                                             설명
MAE (Mean Absolute Error) 예측값과 실제값 차이의 절대 평균
MSE (Mean Squared Error) 차이의 제곱 평균
RMSE MSE의 제곱근
R² Score 설명된 분산 비율 (0~1 사이 값, 1에 가까울수록 좋음)

✨ MSE는 큰 오차에 더 민감하므로 상황에 따라 MAE와 함께 사용해요.


4. scikit-learn으로 간단히 평가하는 방법

📦 분류 평가 함수

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, classification_report

print(accuracy_score(y_true, y_pred))
print(classification_report(y_true, y_pred))​

🧮 회귀 평가 함수

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

print(mean_absolute_error(y_test, y_pred))
print(mean_squared_error(y_test, y_pred))
print(r2_score(y_test, y_pred))​

🎯 ROC-AUC

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_true, y_proba))​

5. 예제 코드로 실습하기 (분류 모델 예시)

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report

# 데이터 불러오기
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42)

# 모델 훈련
model = LogisticRegression(max_iter=10000)
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 평가
print(classification_report(y_test, y_pred))​
 

출력 결과:

              precision    recall  f1-score   support
           0       0.95      0.91      0.93        64
           1       0.94      0.97      0.95       107
    accuracy                           0.94       171​

6. 마무리 정리

모델의 성능은 단순히 “정확하냐”로 판단하면 안 됩니다.
문제의 특성에 따라 다양한 지표를 복합적으로 고려해야 합니다.

scikit-learn은 머신러닝 입문자에게 가장 직관적이고 강력한 평가 도구를 제공합니다.

✨ Tip:

  • 분류 문제 → classification_report()로 간단하게 전체 지표 확인
  • 회귀 문제 → MAE, RMSE, R² Score 세 가지를 함께 확인!