什么是模型评估,如何评估模型的好坏?代码举例讲解

模型评估是对机器学习模型性能和效果进行评价的过程。

常用的评估指标有:

  • 1. 准确率(Accuracy):正确预测的样本数占总样本数的比例。用于评估分类模型。
  • 2. 精确率(Precision):真阳性样本数占预测为阳性的样本数的比例。用于评估分类模型,尤其是不平衡数据集。
  • 3. 召回率(Recall):真阳性样本数占实际阳性样本数的比例。用于评估分类模型,尤其是不平衡数据集。
  • 4. F1分数:精确率和召回率的调和平均值。综合考虑精确率和召回率,用于评估分类模型。
  • 5. 混淆矩阵(Confusion Matrix):显示模型在测试集上的正确与错误预测结果,每个类别的真实情况与预测情况的对应矩阵。
  • 6. ROC曲线:显示模型在不同分类阈值下的真阳性率(TPR)和假阳性率(FPR)。用于评估分类模型。
  • 7. 平均绝对误差(MAE):预测值与真实值绝对差的平均值。用于评估回归模型。
  • 8. 均方根误差(RMSE):预测值与真实值平方差的平均值的平方根。用于评估回归模型。
  • 9. R方(R2):真实值与预测值之间的相关系数平方。用于评估回归模型,值越接近1越好。

代码示例:

python
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import roc_auc_score, roc_curve
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

y_true = [0, 1, 0, 0, 1]
y_pred = [0, 1, 0, 0, 0]

# 准确率
accuracy = accuracy_score(y_true, y_pred)  

# 精确率、召回率和F1分数
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred) 
f1 = f1_score(y_true, y_pred)

# 混淆矩阵
cm = confusion_matrix(y_true, y_pred)

# ROC和AUC
fpr, tpr, thresholds = roc_curve(y_true, y_pred)
roc_auc = roc_auc_score(y_true, y_pred)

# 回归评估
y_true = [1, 2, 3]  
y_pred = [1, 2, 2] 
mae = mean_absolute_error(y_true, y_pred)  
rmse = np.sqrt(mean_squared_error(y_true, y_pred))
r2 = r2_score(y_true, y_pred)