zoukankan      html  css  js  c++  java
  • 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_truey_scorepos_label=Nonesample_weight=Nonedrop_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/所有负样本

  • 相关阅读:
    【数论】好推不好记的扩展欧几里德
    【GDOI2016模拟3.11】历史
    【NOIP2013模拟】守卫者的挑战(期望概率)
    【NOIP2015模拟10.27】魔道研究
    【NOIP2015模拟10.27】挑竹签
    【NOIP2015模拟10.22】最小代价
    【NOIP2015模拟10.22】最大子矩阵
    【NOIP2015模拟10.22】矩形
    【NOI2013模拟】棋盘游戏
    机器人M号
  • 原文地址:https://www.cnblogs.com/wzyuan/p/9440017.html
Copyright © 2011-2022 走看看