[sklearn]性能度量之AUC值
(from sklearn.metrics import roc_auc_curve)
1.AUC

AUC(Area Under ROC Curve),即ROC曲线下面积。

2.AUC意义

若学习器A的ROC曲线被学习器B的ROC曲线包围,则学习器B的性能优于学习器A的性能;若学习器A的ROC曲线和学习器B的ROC曲线交叉,则比较二者ROC曲线下的面积大小,即比较AUC的大小,AUC值越大,性能越好。

3.sklearn中计算AUC值的方法

形式:
from sklearn.metrics import roc_auc_score
auc_score = roc_auc_score(y_test,y_pred)

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print(roc_auc_score(y_true, y_scores))
0.75
fpr,tpr,thresholds=metrics.roc_curve(y_true,y_scores,pos_label=1)
print(metrics.auc(fpr,tpr))
0.75

说明:
y_pred即可以是类别,也可以是概率。
roc_auc_score直接根据真实值和预测值计算auc值,省略计算roc的过程。

案例

#(1)导库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np#测试样本的数量
parameter=30# (2)随机生成结果集
data=pd.DataFrame(index=range(0,parameter),columns=('probability','The true label'))
data['The true label']=np.random.randint(0,2,size=len(data))
data['probability']=np.random.choice(np.arange(0.1,1,0.1),len(data['probability']))# (3)计算混淆矩阵
cm=np.arange(4).reshape(2,2)
cm[0,0]=len(data[data['The true label']==0][data['probability']<0.5])#TN
cm[0,1]=len(data[data['The true label']==0][data['probability']>=0.5])#FP
cm[1,0]=len(data[data['The true label']==1][data['probability']<0.5]) #FN
cm[1,1]=len(data[data['The true label']==1][data['probability']>=0.5])#TP# (4)计算假正率和真正率
# 首先,画出混淆矩阵。import itertools
classes = [0,1]
plt.figure()
plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)
plt.title('Confusion matrix')
tick_marks = np.arange(len(classes))
print(tick_marks)#[0,1]
plt.xticks(tick_marks, classes,rotation=0)
plt.yticks(tick_marks, classes)
print(cm.shape)
print('cm',cm)#显示中间数字
thresh = cm.max() / 2.
print('thresh',thresh)
print(cm.shape[0])
print(cm.shape[1])
# product(A, B)函数,返回A、B中的元素的笛卡尔积的元组。听起来有点绕,先看代码吧:
for i, j in  itertools.product(range(cm.shape[0]), range(cm.shape[1])):plt.text(j, i, cm[i, j],horizontalalignment="center",color="green" if cm[i,j] > thresh else "black")# tight_layout会自动调整子图参数,使之填充整个图像区域plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()

# 三、ROC曲线和AUC值
#
# ROC曲线是一系列threshold下的(FPR,TPR)数值点的连线。此时的threshold的取值分别为测试数据
# 集中各样本的预测概率。但,取各个概率的顺序是从大到小的。
# (1)按概率值排序  首先,按预测概率从大到小的顺序排序:
data.sort_values('probability',inplace=True,ascending=False)
# 此时,threshold依次取0.9,0.9,0.9,0.9,0.9,0.9,0.8,0.8,0.7,...。 比如,
# 当threshold=0.9(第3个0.9),一个”0“预测错误,两个”1“预测正确,FPR=1/11=0.09,
# TPR=2/19=0.11。 当threshold=0.9(第5个0.9),一个”0“预测错误,四个”1“预测正确,
# FPR=1/11=0.09,TPR=4/19=0.21。 当threshold=0.6(第1个0.6),三个”0“预测错误,
# 九个”1“预测正确,FPR=3/11=0.27,TPR=9/19=0.47。# (2)计算全部概率值下的FPR和TPR
TPRandFPR=pd.DataFrame(index=range(len(data)),columns=('TP','FP'))
for j in range(len(data)):data1=data.head(n=j+1)FP=len(data1[data1['The true label']==0][data1['probability']>=data1.head(len(data1))['probability']])/float(len(data[data['The true label']==0]))TP=len(data1[data1['The true label']==1][data1['probability']>=data1.head(len(data1))['probability']])/float(len(data[data['The true label']==1]))TPRandFPR.iloc[j]=[TP,FP]
print(TPRandFPR)
# (3)画出最终的ROC曲线和计算AUC值
#
from sklearn.metrics import auc
AUC= auc(TPRandFPR['FP'],TPRandFPR['TP'])
plt.scatter(x=TPRandFPR['FP'],y=TPRandFPR['TP'],label='(FPR,TPR)',color='k')
plt.plot(TPRandFPR['FP'], TPRandFPR['TP'], 'k',label='AUC = %0.2f'% AUC)plt.legend(loc='lower right')
plt.title('Receiver Operating Characteristic')
plt.plot([(0,0),(1,1)],'r--')
#定义x轴长度和y轴长度
plt.xlim([-0.01,1.01])
plt.ylim([-0.01,01.01])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()# AUC(Area Under roc Cure),顾名思义,其就是ROC曲线小的面积,在此例子中AUC=0.62。AUC越大,说明分类效果越好。

[sklearn]性能度量之AUC值相关推荐

  1. 聚类分析的评价指标(性能度量)

    聚类分析的评价指标也称为:性能度量指标 聚类算法聚类后,如何评价聚类结果,如何确定各聚类算法结果的优劣,如何确定聚类算法的参数值,可以通过聚类性能度量指标从一个侧面说明聚类算法和算法参数的选择. 聚类 ...

  2. 聚类性能度量指标及距离计算

    Python实现KMeans算法 1.外部指标 将聚类结果与某个"参考模型进行比较" 每次抽出两个样本,讨论所属聚类结果和参考模型,确定四个值: a:聚类结果同属于一类,参考模型同 ...

  3. 【机器学习-西瓜书】二、性能度量:召回率;P-R曲线;F1值;ROC;AUC

    关键词:准确率(查准率,precision):召回率(查全率,recall):P-R曲线,平衡点(Break-Even Point, BEP):F1值,F值:ROC(Receiver Operatin ...

  4. 机器学习之性能度量指标——决定系数R^2、PR曲线、ROC曲线、AUC值、以及准确率、查全率、召回率、f1_score

    一.线性回归的决定系数(也称为判定系数,拟合优度) 相关系数是R哈~~~就是决定系数的开方! 正如题所说决定系数是来衡量回归的好坏,换句话说就是回归拟合的曲线它的拟合优度!也就是得分啦~~ 决定系数它 ...

  5. 分类器性能度量指标之ROC曲线、AUC值

    目录 概述 混淆矩阵(Confusion matrix) ROC曲线 AUC(Area under the ROC curve) AUC能拿来干什么 总结 参考资料: 概述 二分类问题在机器学习中是一 ...

  6. 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率

    北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习 快速带你晋级阅读全文> 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分 ...

  7. 分类性能度量指标:ROC曲线、AUC值、正确率、召回率、敏感度、特异度

    在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分的样例比例.实际上,这样的度量错误掩盖了样例如何被分错的事实.在机器学习中,有一个普遍适用的称为混淆矩阵 ...

  8. 机器学习性能度量(1):P-R曲线与ROC曲线,python sklearn实现

    最近做实验要用到性能度量的东西,之前学习过现在重新学习并且实现一下. 衡量模型泛化能力的评价标准,这就是性能度量.性能度量反应了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判 ...

  9. 机器学习:性能度量篇-Python利用鸢尾花数据绘制ROC和AUC曲线

    文章目录 前言 一.ROC与AUC 1.ROC 2.AUC 二.代码实现 总结 前言 内容接上一篇机器学习:性能度量篇-Python利用鸢尾花数据绘制P-R曲线_fanstuck的博客-CSDN博客_ ...

最新文章

  1. 16、设计模式-行为型模式-命令模式
  2. A Crowdsourcing Method for Correcting Sequencing Errors for the Third-generation Sequencing Data 一种用
  3. c语言中字符串操作的工具类
  4. 嵌入式大牛常用的十大C/C++开发利器
  5. Springboot利用poi导出excel下载
  6. 【译文】用Spring Cloud和Docker搭建微服务平台
  7. 中国物联网激荡 20 年
  8. idea引入本地jar包及打包
  9. [C++]二维数组还是一维数组?
  10. 【编程语言】【Ruby】语言介绍
  11. ELK logstash的grok 自带的正则匹配
  12. 因为分区表已变,使用再生龙恢复ubuntu系统后无法休眠的解决办法
  13. 嵌入式Ubuntu 搭建caffee环境
  14. Microsoft Dynamics NAV成本原理讲解
  15. JAVA Oracle插入大量数据优化
  16. 搭建内网穿透工具-ngrok
  17. SIGCOMM2022 Starvation in End-to-End Congestion Control
  18. win10 开机软件自动启动设置
  19. 纳米软件分享:电子测量行业仪器必备测试软件合集分享
  20. 智慧零售企业向服务升级进行时,全面实时监控成重点

热门文章

  1. Linux三剑客详解带实验
  2. 基于python的opencv图像处理实现对斑马线的检测(最简单的方法!!!几十行代码搞定!!!)
  3. python字符串逆序输出的6种方法
  4. 即时通讯怎么做到安全可靠的传输信息
  5. 使用github的API
  6. 基础算法3——归并排序 c语言
  7. 表示颜色的有三种方式
  8. 最小二乘法-多项式拟合曲线
  9. python中与或运算
  10. 盘点计算机科学技术,盘点计算机科学中最重要的32个算法