#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon May 25 20:27:38 2020@author: lg
"""import pandas as pd
import matplotlib.pyplot as plt
import numpy as np#%matplotlib inline#测试样本的数量
parameter=100data=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']))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])#TPimport 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))
plt.xticks(tick_marks, classes, rotation=0)
plt.yticks(tick_marks, classes)
thresh = cm.max() / 2.
for i, j in  itertools.product(range(cm.shape[0]), range(cm.shape[1])):plt.text(j, i, cm[i, j],horizontalalignment="center",color="white" if cm[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')data.sort_values('probability',inplace=True,ascending=False)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]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--')
plt.xlim([-0.01,1.01])
plt.ylim([-0.01,01.01])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()

ROC曲线和 AUC值的计算相关推荐

  1. ROC曲线和AUC值的计算

    转载自:https://zhuanlan.zhihu.com/p/25212301,本文只做个人记录学习使用,版权归原作者所有. 1.混淆矩阵 混淆矩阵如下图所示,分别用0和1代表负样本和正样本.FP ...

  2. 分类模型-评估指标(2):ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】【AUC的计算方式:统计所有正负样本对中的正序对】

    评价二值分类器的指标很多,比如precision.recall.F1 score.P-R曲线等.但这些指标或多或少只能反映模型在某一方面的性能.相比而言,ROC曲线则有很多优点,经常作为评估二值分类器 ...

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

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

  4. 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1

    文章目录 二分类的评价指标 一.混淆矩阵与 TP.TN.FP.FN 二.准确率.精确率.召回率.F1值 三.P-R 曲线 四.ROC 曲线.AUC 值 五.P-R曲线和ROC曲线有什么区别,如何选择? ...

  5. 机器学习之分类器性能指标之ROC曲线、AUC值

    机器学习之分类器性能指标之ROC曲线.AUC值 http://www.cnblogs.com/dlml/p/4403482.html 分类器性能指标之ROC曲线.AUC值 一 roc曲线 1.roc曲 ...

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

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

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

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

  8. ROC曲线,AUC值,PR曲线,AP值

    Receiver Operating Characteristic (ROC) with cross validation - scikit-learn 1.0.2 documentation Pre ...

  9. AUC值越大_模型评价——准确率、精确率与召回率与F值、宏平均与微平均、ROC曲线与AUC值...

    在上一篇文章中(baiziyu:模型评价--训练误差与测试误差.过拟合与欠拟合.混淆矩阵)主要介绍了模型评价涉及的基本概念,本节给出一些常用的评价指标.这些指标大致可以分为三类,第一大类是普通的准确率 ...

最新文章

  1. displaytag 导出
  2. 设计模式四:简单工厂
  3. Leetcode题解(26)
  4. 关于python直接用列表名复制的一些问题 以及 python 子串查找
  5. java 中符号_谁能告诉我java中符号的用法,见代码
  6. Java——集合(练习题)
  7. python实现isodd函数、参数为整数、如果整数为奇数_python 程序练习题
  8. 设计模式之单例模式8种实现方式,其一:饿汉式-静态常量饿汉式
  9. linux编程基础黑马要点总结,黑马《linux基础编程》学习笔记(从6到10)
  10. WinCE应用程序产生Data Abort 错误分析
  11. python os模块 os.chmod
  12. 2010年年终“飞”的总结
  13. Ant-编译构建(2)-第3方jar包引入、log4j2
  14. 也谈SQLite效率:Julia和CSV
  15. 台式计算机时间跳动,电脑时间总是自动跳
  16. 大型网站图片服务器架构的演进!
  17. 认识你7年后终于领证了 2019-09-16
  18. pandas强大的Python数据分析工具
  19. 袁宝华 oracle,关键词优化难易分析_SEO优化难度分析 - 站长工具
  20. 主引导记录(MBR)、硬盘分区表(DPT)、扩展引导记录(EBR)

热门文章

  1. addEntriesFromDictionary用法
  2. 二十八、layui的日历组件使用
  3. 《Oracle数据库管理与维护实战》——2.11 Oracle数据字典
  4. [OSG]OSG的相关扩展
  5. VMware手动启动USB Arbitration Service
  6. ipsec_over_gre
  7. C#连接EXCEL数据库
  8. python知识点:上下文管理器[__enter__ 和 __exit__ ]
  9. php 数据分别是怎么传的_四种php页面间传递数据方法
  10. numpy随机生成01矩阵_NumPy数组基本介绍