基于Python绘制ROC曲线:从鸢尾花数据到TPR/FPR计算详解
本文详细解析如何使用Python绘制ROC曲线。以鸢尾花数据集为例,通过回归拟合获取概率值,对测试数据进行排序,并基于TPR和FPR公式计算真阳性率与假阳性率。文章涵盖从数据预处理、模型预测到最终绘图的全过程,帮助读者理解分类模型的性能评估方法。
ROC曲线简介与结果概述
ROC
结果

数据准备:鸢尾花数据集处理
源数据采用鸢尾花数据集,且仅选取其中的两个类别进行训练和检测。
Summary
特征字段包括:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
实例数据为:[5.1, 3.5, 1.4, 0.2] 目标标签:'setosa' 和 'versicolor'(分别对应0和1)
模型训练与概率预测
使用回归方法进行拟合,从而得到模型参数和偏置项(bias)。
model.fit(data_train, data_train_label)
对测试数据进行预测,得到相应的概率值。
res = model.predict(data[:100])
数据排序与统计量计算
将预测结果与训练集的标签进行匹配,并按概率值从大到小进行排序。
pred labels
68 0.758208 1
87 0.753780 1
76 0.745833 1
50 0.743156 1
65 0.741676 1
75 0.739117 1
62 0.738255 1
54 0.737036 1
52 0.733625 1
77 0.728139 1
86 0.727547 1
74 0.726261 1
58 0.725150 1
71 0.724719 1
36 0.724142 0
14 0.723990 0
31 0.721648 0
41 0.720308 0
72 0.717723 1
79 0.712833 1
97 0.705148 1
51 0.702838 1
35 0.702203 0
98 0.701731 1
92 0.701106 1
82 0.700661 1
53 0.700465 1
18 0.699350 0
16 0.696915 0
64 0.693333 1
.. ... ...
33 0.658937 0
96 0.656761 1
30 0.656279 0
57 0.655673 1
4 0.652616 0
85 0.648620 1
59 0.648586 1
19 0.646965 0
70 0.646262 1
88 0.644482 1
8 0.643191 0
38 0.642704 0
3 0.640933 0
55 0.640630 1
47 0.640444 0
95 0.639552 1
13 0.639050 0
22 0.638485 0
29 0.635590 0
90 0.634376 1
37 0.632224 0
6 0.631119 0
46 0.630037 0
11 0.629718 0
66 0.627807 1
42 0.624795 0
44 0.621703 0
32 0.614932 0
24 0.603874 0
84 0.603249 1
计算训练集中正确预测的个数与错误预测的个数。
TPR与FPR计算及绘图
运用以下算式进行TPR(真正例率)和FPR(假正例率)的计算。
index = 0
for i in sorted_mat.values:
if i[1] == 0:
TPR.append(TPR[index])
FPR.append(FPR[index] + 1.0/F_num)
else:
TPR.append(TPR[index] + 1.0/T_num)
FPR.append(FPR[index])
index += 1
最后,根据计算得到的TPR和FPR值进行绘图。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









