zoukankan      html  css  js  c++  java
  • 机器学习:分类算法性能指标之ROC曲线

          在介绍ROC曲线之前,先说说混淆矩阵及两个公式,因为这是ROC曲线计算的基础。

    1.混淆矩阵的例子(是否点击广告):

         说明:

                TP:预测的结果跟实际结果一致,都点击了广告。

                FP:预测结果点击了,但是真实情况是未点击。

                FN:预测结果没有点击,但是真实情况是点击了。

                TN:预测结果没有点击,真实情况也是没有点击。

    2.两个公式:

        1)真正率:

             TPR=TP/(TP+FN)

        2)假正率

             FPR=FP/(FP+TN)

    3.ROC曲线就是真正率随假正率的变化情况。下面用一段代码展示一下(sklearn包中包含相关算法):

    ##导入相关包
    import numpy as np
    from sklearn import metrics
    import matplotlib.pyplot as plt
    
    ##设置y值:表示实际值
    y = np.array([1, 1, 2, 2])
    ##设置pred值:表示预测后的值
    pred = np.array([0.1, 0.4, 0.35, 0.8])
    ##计算相关数据:注意返回的结果顺序
    fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=2)
    ##计算曲线下面积
    roc_auc=metrics.auc(fpr, tpr)
    ##绘图
    plt.clf()
    plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
    plt.plot([0, 1], [0, 1], 'k--')
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.0])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.legend(loc="lower right")
    plt.show()

      结果如图所示:

     

    4.关于ROC曲线

      1)虚线所示直线随机分类时的ROC曲线,一般画到图中作为参照点

      2)对于一个完美的分类器,ROC曲线应该是从(0,0)到(0,1),然后横着连到(1,1)的折线

      3)ROC曲线越接近左上角,分类效果越好

    5.关于AUC

      1)AUC表示曲线下面的面积

      2)对于一个完美的分类器,AUC的值应该为1

      3)对于一个随机猜测分类器(即图中虚直线),AUC的面积为0.5

      4)AUC面积越大,分类效果越好

  • 相关阅读:
    不高级不能发帖的WPS论坛
    打不开盖子的酸奶
    无意中发现的一个好设计:不浸水的香皂盒
    几件小事
    解决ios微信页面回退不刷新
    require.js
    前端遇到的坑
    gulp详细入门教程
    js 获取当前日期
    模仿微信朋友圈 图片浏览 h5 html5 js
  • 原文地址:https://www.cnblogs.com/lc1217/p/6699377.html
Copyright © 2011-2022 走看看