ROC曲线和AUC

ROC全称Receiver Operating Curve,最早应用于二战时的雷达探测,以评价信号侦测模型的优劣。在机器学习领域,ROC曲线同样用于模型效果的评价。

ROC曲线样例如下图所示,其横坐标为假正率(FPR),纵坐标为真正率(TPR),曲线上的点对应不同阈值下的模型(FPR,TPR)。
ROC理解的难点就在于阈值的变化,能够造成FPR和TPR的变化,从而形成曲线。
当判断正负样本的阈值为极端小时,所有的样本均为正样本,此时假正(FP)样本等于负样本(N)的量,即FPR=FP/N=100%;真正(TP)样本等于正样本的量,即TPR=TP/P=100%,这就形成了曲线右上角的点(1,1)。
当判断正负样本的阈值为极端大时,所有的样本均为负样本,此时假正(FP)样本数量为0(因为没有正样本),即FPR=FP/N=0;真正(TP)样本也为0,即TPR=TP/P=0,这就形成曲线左下角的点(0,0)。
当阈值设为极端小和极端大之间时,(FPR,TPR)在(0,0)和(1,1)之间滑动,从而形成ROC曲线。

AUC全称Area Under Curve,表示ROC曲线下的面积,一般认为AUC数值越大,则模型效果越好。图形中的蓝色虚线为参考线,表示随机模型的效果,在蓝色虚线下的模型,效果逊于随机模型。



python sklearn中有专门的绘制ROC曲线的包,如下示例代码供参考。
from sklearn import metrics
import matplotlib.pyplot as plt
# y_real表示实际值(或实际类别),y_pred表示预测值(或预测概率)
fpr, tpr, thresholds = metrics.roc_curve(y_real, y_pred, pos_label=1)
roc_auc = metrics.auc(fpr, tpr)
plt.figure()
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='--')


绘制ROC曲线计算AUC(Area Under Curve)是评估二分类模型性能的重要方法。以下是使用Python绘制ROC曲线计算AUC的示例代码: ```python import numpy as np from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 生成示例数据 y_true = np.random.randint(0, 2, size=100) # 真实标签 y_scores = np.random.rand(100) # 预测得分 # 计算ROC曲线AUC fpr, tpr, thresholds = roc_curve(y_true, y_scores) roc_auc = auc(fpr, tpr) # 绘制ROC曲线 plt.figure() 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('Receiver Operating Characteristic (ROC)') plt.legend(loc="lower right") plt.show() ``` 这段代码的主要步骤如下: 1. 导入必要的库:numpy用于数据处理,sklearn.metrics用于计算ROC曲线AUC,matplotlib.pyplot用于绘图。 2. 生成示例数据:真实标签y_true预测得分y_scores。 3. 使用roc_curve函数计算ROC曲线的数据:假正率(fpr)、真正率(tpr)阈值(thresholds)。 4. 使用auc函数计算AUC值。 5. 使用matplotlib绘制ROC曲线,并显示AUC值。 6. 设置图表的标题、标签图例。 通过这段代码,你可以生成一个ROC曲线图,其中显示了不同阈值下的真正率假正率,以及AUC值。AUC值越接近1,表示模型性能越好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值