回归模型、分类二分类模型下的评估方式
1. 回归问题的模型评估 : 均方误差(MSE) 均方根误差(RMSE) 平均绝对误差(MAE) 决定系数(R^2 Score)
mean_squared_error 均方误差MSE
均方误差是预测值与真实值之差的平方的均值
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred) # 均方误差(MSE)
rmse = np.sqrt(mse) # 均方根误差(RMSE)
mean_absolute_error 平均绝对误差(MAE)
平均绝对误差是预测值与真实值之差的绝对值的平均
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)
r2_score 决定系数(R^2 Score)
决定系数是模型对观测数据的拟合程度的度量,取值范围在 0 到 1 之间。越接近 1 表示模型拟合得越好,越接近 0 表示模型拟合效果较差
from sklearn.metrics import r2_score
r2 = r2_score(y_true, y_pred)
2. 分类问题
准确率Accuracy 精确率Precision 召回率Recall F1Ccore 混淆矩阵
from sklearn.metrics import accuracy_score ...
准确率:accuracy_score(y_true, y_pred)
准确率是指模型正确预测的样本数量占总样本数量的比例。
精确率:precision_score(y_true, y_pred)
精确率是指模型在预测为正例的样本中,实际为正例的比例
在二分类问题中,精确率衡量了模型将负例预测为正例的能力。当我们希望降低误报的情况时,精确率是一个重要指标。
召回率:recall_score(y_true, y_pred)
召回率是指模型在所有实际为正例的样本中,成功预测为正例的比例。
召回率衡量了模型找出所有正例的能力。当我们希望尽可能找出所有的正例时,召回率是一个重要指标。
F1 Score:f1_score(y_true, y_pred)
F1 Score 是精确率和召回率的调和平均数,综合考虑了两者的性能
F1 Score 的取值范围在 0 到 1 之间,值越高表示模型的性能越好。特别是当数据不平衡(即正负样本比例差异较大)时,F1 Score 是一个常用的指标。
混淆矩阵:confusion_matrix(y_true, y_pred)
混淆矩阵是一个 N×N 的矩阵,其中 N 是类别的数量。
对于二分类问题,混淆矩阵包含 True Positive (TP)、True Negative (TN)、False Positive (FP)、False Negative (FN) 四个值。
True Positive (TP):实际为正例,模型预测为正例的样本数。
True Negative (TN):实际为负例,模型预测为负例的样本数。
False Positive (FP):实际为负例,模型预测为正例的样本数。
False Negative (FN):实际为正例,模型预测为负例的样本数。
3. 二分类问题 AUC ROC
from sklearn.metrics import roc_auc_score, roc_curve
ROC(Receiver Operating Characteristic)曲线是一个概率曲线,描述了二分类模型在不同阈值下真正例率(True Positive Rate,也称为召回率)与假正例率(False Positive Rate)之间的关系。
ROC 曲线:
ROC 曲线是以真正例率(True Positive Rate,TPR)为纵轴,假正例率(False Positive Rate,FPR)为横轴绘制的曲线。
TPR 是指在所有实际为正例的样本中,模型成功预测为正例的比例,计算公式为: TPR = TP / (TP + FN)
FPR 是指在所有实际为负例的样本中,模型错误预测为正例的比例,计算公式为: FPR = FP / (FP + TN)
ROC 曲线展示了在不同阈值下,模型在灵敏度(TPR)和特异度(1-FPR)之间的权衡关系. 一般来说,ROC 曲线越靠近左上角(0,1),模型的性能越好。
AUC :
AUC 是 ROC 曲线下方的面积,取值范围在 0 到 1 之间。
AUC 的意义是:随机选择一个正样本和一个负样本,分类器将正样本排在负样本前面的概率。换句话说,AUC 表示模型将正例排在负例前面的能力。
当 AUC = 1 时,表示模型完美地将所有正例排在所有负例前面。
当 AUC = 0.5 时,表示模型的分类效果和随机分类器的效果一样(即没有区分能力)。
当 AUC < 0.5 时,表示模型的分类效果比随机分类器还差。
在 sklearn 中,可以使用以下函数来计算 AUC 和绘制 ROC 曲线:
计算 AUC:roc_auc_score(y_true, y_score)
绘制 ROC 曲线:roc_curve(y_true, y_score)