수치형 데이터를 예측하는 문제
지표 | 이름 | 수식 | 설명 |
---|---|---|---|
MAE | Mean Absolute Error | MAE = (1/n) * Σ 절댓값(y_i - ȳ_i) | 평균 절댓값 오차 |
MSE | Mean Squared Error | MSE = (1/n) * Σ(y_i - ȳ_i)² | 평균 제곱 오차 |
RMSE | Root MSE | RMSE = √[(1/n) * Σ(y_i - ȳ_i)²] | 실제 단위로 표현된 오차 |
MAPE | Mean Absolute Percentage Error | MAPE = (100/n) * Σ(절댓값(y_i - ȳ_i) / y_i) | 실제값 대비 오차 비율 (%) |
R² | 결정계수 (R-Squared) | R² = 1 - [Σ(y_i - ȳ_i)² / Σ(y_i - ȳ)²] | 모델의 설명력, 1에 가까울수록 좋음 |
모든 지표는 작을수록 좋고, R²는 클수록 좋음
from sklearn.metrics import mean_absolute_error, mean_squared_error, root_mean_squared_error, mean_absolute_percentage_error, r2_score
print('MAE:', mean_absolute_error(y_test, y_pred))
print('MSE:', mean_squared_error(y_test, y_pred))
print('RMSE:', root_mean_squared_error(y_test, y_pred))
print('MAPE:', mean_absolute_percentage_error(y_test, y_pred))
print('R2 Score:', r2_score(y_test, y_pred))
'''
MAE: 13.976843190385708
MSE: 341.67887406681893
RMSE: 18.484557718993955
MAPE: 0.4718597698848258
R2 Score: 0.5744131358040061
'''
카테고리(0/1 등)를 예측하는 문제
예측: 0 | 예측: 1 | |
---|---|---|
실제: 0 | TN | FP |
실제: 1 | FN | TP |
지표 | 수식 | 설명 |
---|---|---|
Accuracy | (TP + TN) / (TP + TN + FP + FN) | 전체 정답 비율 |
Precision | TP / (TP + FP) | 1로 예측한 것 중 실제 1의 비율 |
Recall | TP / (TP + FN) | 실제 1 중에서 1로 예측한 비율 |
F1-Score | 2 (Precision Recall) / (Precision + Recall) | 정밀도와 재현율의 조화 평균 |
상황에 따라 Precision(정밀도) 또는 Recall(재현율)을 더 중요하게 볼 수 있음
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score, classification_report
print(confusion_matrix(y_test, y_pred))
print('Accuracy:', accuracy_score(y_test, y_pred))
print('Precision:', precision_score(y_test, y_pred))
print('Recall:', recall_score(y_test, y_pred))
print('F1 Score:', f1_score(y_test, y_pred))
print(classification_report(y_test, y_pred))
'''
[[77 7]
[12 54]]
Accuracy: 0.8733333333333333
Precision: 0.8852459016393442
Recall: 0.8181818181818182
F1 Score: 0.8503937007874016
precision recall f1-score support
0 0.87 0.92 0.89 84
1 0.89 0.82 0.85 66
accuracy 0.87 150
macro avg 0.88 0.87 0.87 150
weighted avg 0.87 0.87 0.87 150
'''