Python ROC曲线绘制

一、混淆矩阵

分类问题中,不管建模人员使用什么模型都难以到达100%的预测准确率,所以人们普遍使用分类错误率来衡量一个模型的优劣。但是在实际生产过程中分类问题经常存在样本不均衡问题,所以仅仅使用错误率是不能很好的表现模型的好坏,也不能直观的体现每一类数据的分类准确性。例如:一个二分类样本中0:1占比为9:1,当一个分类器将所有的样本都识别为0,此时模型的错误率为10%,准确率为90%,如果仅仅看错误率是比较低的,但是根本没有起到数据分类的效果。因此在机器学习中,有一个普遍适用的称为混淆矩阵(confusion matrix)的工具,它可以帮助人们更好地了解分类中的错误。

一个二分类问题的混淆矩阵如下图:

1表示真类,0表示负类

若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)

若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)

若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)

若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)

二、ROC曲线

横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-Specificity)

纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率)

由混淆矩阵可得出横,纵轴的计算公式:

(1)真正类率(True Postive Rate)TPR:TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。Sensitivity

(2)负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity

python实现:

#===================ROC曲线函数===================#

def PlotROC(preds, labels, plot_chart=True):

    fpr, tpr, threshold = roc_curve(labels, preds) ### 计算真正率和假正率

    roc_auc = auc(fpr, tpr) ### 计算auc值

    print('auc_value is' + str(np.round(roc_auc,4)))

    if plot_chart==True:

        lw = 2

        plt.gca().set(title='model_ROC'

                      ,xlabel='FPR'

                      ,ylabel='TPR'

                      ,xlim=[0,1]

                      ,ylim=[0,1]

                      ,aspect='equal')

        # test

        # plt.text(0.5,0.95,'ROC',fontsize=15,horizontatalignment='certer')

        plt.text(0.5,0.45,'AUC:'+str(round(roc_auc,4)),horizontatalignment='center',color='b')

        plt.plot(fpr, tpr, color='blue'

                ,lw=lw,label='ROC curve (area = %0.2f)' % roc_auc) ###假正率为横坐标,真正率为纵坐标做曲线

        plt.plot([0,1],[0,1],color='red',lw=lw,linestyle='--')

        plt.fill_between(fpr, 0, tpr, color='blue', alpha=0.1)

        plt.xlim([0.0,1.0])

        plt.ylim([0.0,1.0])

        plt.xlabel('Flase Positive Rate')

        plt.ylabel('True Positive Rate')

        plt.title('model-ROC')

        plt.legend(loc='lower right')

        plt.show()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容