ROC曲线学习
Posted qi-yuan-008
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROC曲线学习相关的知识,希望对你有一定的参考价值。
ROC曲线:全称 Receiver Operating Characteristic曲线,即受试者工作特性曲线,在机器学习领域常用于判断分类器的好坏。
要了解ROC曲线,首先要了解该曲线的横纵坐标 —— FPR(1-特异度)和TPR(召回率或者灵敏度)。
1. 基本概念 —— 混淆矩阵
绘制混淆矩阵:https://www.cnblogs.com/qi-yuan-008/p/11675499.html
2. ROC曲线的横坐标是FPR值,纵坐标是TPR值;每指定一个threshold,就对应一个FPR-TPR值对。
threshold 表示的是:测试样本中每个样本预测为正的概率,并且从大到小排列。
AUC的值表示的是:ROC曲线下方区域的面积大小 —— 即对曲线进行积分所得;一般来说,AUC的值越大,分类器的分类性能越好。
3. Python绘制ROC曲线:
以支持向量机分类为例,假设训练样本为:x_train,y_train,测试样本为:x_test,y_test
from sklearn.svm import SVC from sklearn.metrics import confusion_matrix from sklearn import metrics import matplotlib.pyplot as plt def svm_func(x_train,y_train,x_test,y_test): clf = SVC(kernel = ‘linear‘, verbose=True) clf.fit(x_train,y_train) pred = clf.predict(x_test) #混淆矩阵, labels为数据中各类标签值,这里0为负样本,2为正样本 cm = confusion_matrix(y_test, pred, labels=[0, 2]) #纵坐标是y_test,横坐标是pred print(cm) # 绘制ROC曲线 fpr, tpr, thresholds = metrics.roc_curve(y_test, pred, pos_label=2) # pos_label表示选定该标签是正,其他的均为负,绘制ROC曲线 auc = metrics.auc(fpr, tpr) #计算AUC值 # # 设置绘图风格 plt.figure() plt.style.use(‘ggplot‘) # 绘制ROC曲线 plt.plot(fpr, tpr,‘‘) # 绘制参考线 plt.plot((0,1),(0,1),‘r--‘) # 添加文本 plt.text(0.5,0.5,‘AUC值为%.2f‘ % auc, fontsize=16) plt.title(‘支持向量机模型的ROC曲线‘) plt.xlabel(‘1-specificity‘) plt.ylabel(‘Sensitivity‘) # 中文和负号的正常显示 plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘] plt.rcParams[‘axes.unicode_minus‘] = False # 去除图形顶部边界和右边界的刻度 plt.tick_params(top=False, right=False) plt.show()
注:
[1]. ROC曲线适用于二分类,但是可以扩展至多分类。
[2]. 当负样本数量远远大于正样本数量时,ROC曲线可能会不正确,这时可用PR曲线(Precision-Recall曲线)。
##
参考:
https://blog.csdn.net/u012429555/article/details/82973387
https://www.cnblogs.com/Zhi-Z/p/8728168.html
https://blog.csdn.net/qq_30992103/article/details/99730059
https://zhuanlan.zhihu.com/p/25212301
https://www.jianshu.com/p/2ca96fce7e81
以上是关于ROC曲线学习的主要内容,如果未能解决你的问题,请参考以下文章
机器学习中的性能指标:精度召回率,PR曲线,ROC曲线和AUC,及示例代码