sklearn.metrics.roc_curve使用说明
roc曲线是机器学习中十分重要的一种学习器评估准则,在sklearn中有完整的实现,api函数为sklearn.metrics.roc_curve(params)函数。
官方接口说明:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html
不过这个接口只限于进行二分类任务。!
下面主要是对官方接口做一下翻译。
接口函数 sklearn.metrics.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True)
参数说明
y_true:数组,存储数据的标签,维度就是样本数,形如[0,1,1,0,1...]这样的,也可以是-1和1,只要有两个值
y_score:数组,存储数据的预测概率值,维度也是样本数,形如[0.38,0.5,0.8]这样的
pos_label:整型或字符串,当y_true中只有一个值时,比如都是1或者都是0,无法判断哪个是正样本,需要用一个数字或字符串指出
sample_weight:采样权重,这个官方没有仔细说,是一个可选参数,有待考察
drop_intermediate:丢掉一些阈值,以便画roc曲线图
返回值:一共三个,分别是fpr,tpr,thresholds
fpr:数组,随阈值上涨的假阳性率
tpr:数组,随阈值上涨的真正例率
thresholds:数组,对预测值排序后的score列表,作为阈值,排序从大到小
举例
>>> import numpy as np
>>> from sklearn import metrics
>>> y = np.array([1, 1, 2, 2])
>>> scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
>>> fpr
array([ 0. , 0.5, 0.5, 1. ])
>>> tpr
array([ 0.5, 0.5, 1. , 1. ])
>>> thresholds
array([ 0.8 , 0.4 , 0.35, 0.1 ])
解释一下,样本标签为y,共有1和2两个值,预测值为scores,里面是预测为正样本的概率,正样本是什么呢,在函数中通过pos_label指定为2,然后便将score排序,
由大到小,也就有了后面的thresholds,按照这个顺序,依次将前面的样本预测为正样本,后面为负样本,这里看一下样本标签和预测值的一一对应
[1,1,2,2]->[0.1,0.4,0.35,0.8],共有两个正样本,两个负样本
以0.8为阈值,第一个假设为正样本,后面三个假设为负样本,0.8对应的确实为正样本,则真正例率为1/2,假阳性率为0,因为没有负样本被误判为正样本
然后以0.4为阈值,前两个假设为正样本,后两个假设为负样本,0.4对应的为负样本,则真正例数没有增加,于是仍为0.5,而假阳性增加一例,此时假阳性率为1/2
后面的依此类推,这就是这个api的基本使用说明。
补充下:tpr=tp/所有正样本,fpr=fp/所有负样本
sklearn.metrics.roc_curve使用说明的更多相关文章
- sklearn.metrics.roc_curve
官方网址:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics 首先认识单词:metrics: ['mɛ ...
- sklearn.metrics中的评估方法
https://www.cnblogs.com/mindy-snail/p/12445973.html 1.confusion_matrix 利用混淆矩阵进行评估 混淆矩阵说白了就是一张表格- 所有正 ...
- sklearn.metrics中的评估方法介绍(accuracy_score, recall_score, roc_curve, roc_auc_score, confusion_matrix)
1 accuracy_score:分类准确率分数是指所有分类正确的百分比.分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型.常常误导初学 ...
- Python Sklearn.metrics 简介及应用示例
Python Sklearn.metrics 简介及应用示例 利用Python进行各种机器学习算法的实现时,经常会用到sklearn(scikit-learn)这个模块/库. 无论利用机器学习算法进行 ...
- [sklearn]性能度量之AUC值(from sklearn.metrics import roc_auc_curve)
原创博文,转载请注明出处! 1.AUC AUC(Area Under ROC Curve),即ROC曲线下面积. 2.AUC意义 若学习器A的ROC曲线被学习器B的ROC曲线包围,则学习器B的性能优于 ...
- sklearn.metrics.mean_absolute_error
注意多维数组 MAE 的计算方法 * >>> from sklearn.metrics import mean_absolute_error >>> y_true ...
- 量化预测质量之分类报告 sklearn.metrics.classification_report
classification_report的调用为:classification_report(y_true, y_pred, labels=None, target_names=None, samp ...
- sklearn 下距离的度量 —— sklearn.metrics
1. pairwise from sklearm.metrics.pairwise import pairwise_distance 计算一个样本集内部样本之间的距离: D = np.array([n ...
- sklearn.metrics import precision_recall_fscore_support
二分类/多分类/多标签 对于二分类来说,必须定义一些matrics(f1_score,roc_auc_score).在这些case中,缺省只评估正例的label,缺省的正例label被标为1(可以通过 ...
随机推荐
- 10-17C#第四部分--类型(1)
C#类型--String类 一.String类型 () 注:string与String的不同:string属于String的数据类型,小写string是大写String类型的实例化:string属于S ...
- nested exception is java.net.UnknownHostException: mybatis.org异常处理
最近自己写了个小项目(丛林商城V1.0),一个简单的网上商铺:主界面是商品的展示和登录,面对三种角色的人群:一般客户,VIP客户,管理员,与之对应的三种商品价格,登陆后根据具体角色来显示商品的价格:还 ...
- mysql in 方法查询 按照 in队列里的顺序排序
String sql ' GROUP BY comm " + "order by field(comm,?,?,?,?,?,?,?,?)"; stmt = conn.pr ...
- Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案
Eclipse Maven 开发一个 jee 项目时,编译时遇到以下错误:Description Resource Path Location TypeDynamic Web Module 3.0 r ...
- os.path.join合并 os.path.dirname返回上一级目录 os.path.exists(path) os.stat('path/filename')获取文件/目录信息
import os str1 = "grsdgfd" str2 = "wddf" str3 = "gddgs" # print(str1 + ...
- mysql双机热备份的实现步骤
MySQL 提供了数据库的同步功能,这对我们实现数据库的冗灾.备份.恢复.负载均衡等都是有极大帮助的.本文描述了常见的同步设置方法.<?xml:namespace prefix = o /> ...
- WebGoat系列实验Buffer Overflows & Code Quality & Concurrency
WebGoat系列实验Buffer Overflows & Code Quality & Concurrency Off-by-One Overflows 实验需要访问OWASP Ho ...
- 对Dapper的一点改造
微软推出的ORM, EF在我开发的项目中给我的感觉一直都是慢.优点是高度封装的底层.便于开发. Dapper在多篇性能比较的网站中.都是名列前三.缺点是手写SQL,不便于开发. 如果能结合EF的优 ...
- JavaScript 测试和捕捉(try与catch)
JavaScript 测试和捕捉 try 语句允许我们定义在执行时进行错误测试的代码块. catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块. JavaScript 语句 try ...
- Ajax上传文件注意事项
如图: 因为传进来的参数被预先处理了,所以才出现了illegal invocation报错,只要将processData的值改为false就能解决这个小问题: 因为JQ自动的帮我们设置了请求头,但是a ...