ROC曲线和AUC

ROC曲线(Receptive Operating Characteristic,接受者工作曲线)和AUC(area under the curve,特指ROC曲线下的面积)通常用于评价一个二分类的优劣。AUC指标可以有两种解释

  1. 传统的曲线下面积
  2. A U C = P ( P 正 > P 负 ) AUC = P(P_{正} > P_{负}) AUC=P(P>P)。例如0.7的AUC可以表示,在70%的情况下,模型对正样本的打分高于负样本。

在这里插入图片描述
ROC曲线的纵坐标是真阳率(TPR),横坐标是假阳率(FPR)

下面解释图中四个点和一个曲线

  1. A点:这是一个完美的分类器
  2. B点:最糟糕的分类器
  3. C点:分类器全部输出正样本
  4. D点:分类器全部输出负样本

可以看出,曲线越接近左上角,该分类器的性能越好。

如何绘制ROC曲线

  • ROC:通过调整模型预测的阈值可以得到不同的点,将这些点连成的一条曲线。

显然,对于一个特定的分类器和特定的数据集,其真阳率和假阳率都是一个定值。那么就需要人为的改动模型认为是正类的概率阈值,从而得到多组(TPR, FPR)。

实际操作就是,先按每个测试样本的概率值排序,然后从高到低的将概率值作为阈值。当测试样本的正样本概率大于等于阈值时输出为正,否则为负。这样有多少组样本就能得到多少个ROC上的点。

代码实现

from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

y_score = rdf.fit(train_x, train_y).predict_proba(test_x)
fpr, tpr, thre = roc_curve(test_y, y_score[:, 1])
roc_auc = auc(fpr, tpr)

def drawRoc(roc_auc,fpr,tpr):
    plt.subplots(figsize=(7, 5.5))
    plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
    plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('ROC Curve')
    plt.legend(loc="lower right")
    plt.show()

drawRoc(roc_auc, fpr, tpr)

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值