目录
一、ROC曲线
定义可见:
作用:通过ROC曲线可以获取相关性能指标,如EER、AUC等,这些性能指标可以用来评价一个SVM训练出来模型的优劣
二、TP、FP、TN、FN
三、 python绘制ROC曲线(二分类)
1、思路
python主要的思路是通过roc_curve函数和测试样本的实际标签集test_label、由训练模型预测得到的标签集test_predict_label获得。通过比对实际标签和预测标签来计算TP、FP、TN、FN,通过roc_curve函数可以实现,返回的是TP、FP、以及阈值threshold。计算ROC曲线只需要TPFP即可。
2、关键代码
................
#train_data用于训练的样本集, test_data用于测试的样本集, train_label训练样本对应的标签集, test_label测试样本对应的标签集
###通过decision_function()计算得到的test_predict_label的值,用在roc_curve()函数中
test_predict_label = svm.fit(train_data, train_label).decision_function(test_data)
#首先通过fit来对训练样本和训练样本标签进行训练得到模型,然后通过decision_function来获得模型对于测试样本集预测的标签集
# Compute ROC curve and ROC area for each class#计算tp,fp
#通过测试样本输入的标签集和模型预测的标签集进行比对,得到fp,tp,不同的fp,tp是算法通过一定的规则改变阈值获得的
fpr,tpr,threshold = roc_curve(test_label, test_predict_label) ###计算真正率和假正率
roc_auc = auc(fpr,tpr) ###计算auc的值,auc就是曲线包围的面积,越大越好
..................
#test_predict_label
[ 0.17284263 0.65445393 -0.54087101 0.3555818 0.00579262 -0.20174248
0.0565328 0.00571205 -0.1517872 0.25656427 0.39764688 0.04549989
0.33455816 -0.12499602 0.23724787 -0.36250412 -0.0874348 -0.11575856
-0.25270656 -0.23457408 -0.18239472 -0.10728706 -0.32201471 0.71954289
-0.29292995 -0.22073314 -0.32473373 -0.19383585 -0.24296148 0.37524795]
在二分类问题中,阈值的改变其实就是相当于从一个边界移动到另一个边界,阈值的改变也就使得tp和fp的改变