python计算召回率_混淆矩阵、准确率、精确率、召回率、F值、ROC曲线、AUC、PR曲线-Sklearn.metrics评估方法...

目录

混淆矩阵 confusion-matrix

分类准确率 accuracy

精确率Precision

召回率 recall

F1值

Roc曲线、AUC

PR曲线

混淆矩阵 confusion-matrix

TP(True Positive): 真实为0,预测也为0

FN(False Negative): 真实为0,预测为1

FP(False Positive): 真实为1,预测为0

TN(True Negative): 真实为0,预测也为0

混淆矩阵的API

from sklearn.metrics import confusion_matrix

confusion_matrix = confusion_matrix(y_test, y_predict)

image.png

image.png

分类准确率 accuracy

所有样本中被预测正确的样本的比率

分类模型总体判断的准确率(包括了所有class的总体准确率)

准确率的API:

from sklearn.metrics import accuracy

accuracy = accuracy_score(y_test, y_predict)

image.png

精确率Precision

预测为正类0的准确率

TP / ( TP + FP )

from sklearn.metrics import precision_score

precision = precision_score(y_test, y_predict)

召回率 recall

真实为0的准确率

image.png

真实为1的准确率

Recall = TN/(TN+FP)

召回率API:

from sklearn.metrics import recall_score

recall = recall_score(y_test, y_predict)

#recall得到的是一个list,是每一类的召回率

F1值

用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。

image.png

from sklearn.metrics import f1_score

f1_score(y_test, y_predict)

Roc曲线、AUC

TPR FPR

样本中的真实正例类别总数即TP+FN

TPR即True Positive Rate,TPR = TP/(TP+FN)。

TPR:真实的正例0中,被预测为正例的比例

样本中的真实反例类别总数为FP+TN

FPR即False Positive Rate,FPR=FP/(TN+FP)。

FPR:真实的反例1中,被预测为正例的比例

理想分类器TPR=1,FPR=0

截断点thresholds

机器学习算法对test样本进行预测后,可以输出各test样本对某个类别的相似度概率。比如t1是P类别的概率为0.3,一般我们认为概率低于0.5,t1就属于类别N。这里的0.5,就是”截断点”。

总结一下,对于计算ROC,最重要的三个概念就是TPR, FPR, 截断点。

ROC曲线

ROC曲线越接近左上角,代表模型越好,即ACU接近1

from sklearn.metrics import roc_auc_score, auc

import matplotlib.pyplot as plt

y_predict = model.predict(x_test)

y_probs = model.predict_proba(x_test) #模型的预测得分

fpr, tpr, thresholds = metrics.roc_curve(y_test,y_probs)

roc_auc = auc(fpr, tpr) #auc为Roc曲线下的面积

#开始画ROC曲线

plt.plot(fpr, tpr, 'b',label='AUC = %0.2f'% roc_auc)

plt.legend(loc='lower right')

plt.plot([0,1],[0,1],'r--')

plt.xlim([-0.1,1.1])

plt.ylim([-0.1,1.1])

plt.xlabel('False Positive Rate') #横坐标是fpr

plt.ylabel('True Positive Rate') #纵坐标是tpr

plt.title('Receiver operating characteristic example')

plt.show()

运行结果如下图所示:

你可能感兴趣的:(python计算召回率)