机器学习之分类模型评价指标:查准率、查全率、ROC曲线
混淆矩阵
| 真实情况 | 预测结果 | |
| 正例 | 反例 | |
| 正例 | TP(真正例) | FN(假反例) |
| 反例 | FP(假正例) | TN(真反例) |
查准率
,
查全率
ROC曲线
即根据模型的预测结果按属于正例的概率值从高到低排序,得到“真正例率”(True Positive Rate,简称tpr),“假正例率”(False Positive Rate,简称fpr)两个指标,分别作为ROC曲线的纵坐标与横坐标。
真正例率:即标准正例(标准的正例就等于真正例加假反例=TP + FN)中,被预测为正例的概率
假正例率:即标准负例(标准的负例就等于假正例加真负例=FP + TN)中,被预测为正例的概率
绘制ROC曲线
sklearn.metrics.roc_curve(y_true, y_score, pos_label=None,)
params:
y_true : 数组,shape = [样本数]
在范围{0,1}或{-1,1}中真正的二进制标签。如果标签不是二进制的,则应该显式地给出pos_label
y_score : 数组, shape = [样本数]
目标得分,可以是正样本类的概率估计,或者是决定的非阈值度量(在某些分类器上由“decision_function”返回)。
pos_label:int or str, 标签被认为是正样本类,其他的被认为负样本类。
return:
fpr : array, shape = [>2] 增加假阳性率,例如,i是预测的假阳性率,得分>=临界值[i]
tpr : array, shape = [>2] 增加真阳性率,例如,i是预测的真阳性率,得分>=临界值[i]。
thresholds : array, shape = [n_thresholds] 减少了用于计算fpr和tpr的决策函数的阈值。
y_train_pred=rfc.predict(x_train)
y_train_predproba=rfc.predict_proba(x_train)y_test_pred=rfc.predict(x_test)
y_test_predproba=rfc.predict_proba(x_test)fpr, tpr, thresholds = metrics.roc_curve(y_test, y_test_predproba[:,1], pos_label=1)