ROC曲线绘制(Python)_python将分训练组和验证组绘制roc曲线

194 阅读3分钟

首先以支持向量机模型为例

先导入需要使用的包,我们将使用roc_curve这个函数绘制ROC曲线!

from sklearn.svm import SVC
from sklearn.metrics import roc_curve
from sklearn.datasets import make_blobs
from sklearn. model_selection import train_test_split
import matplotlib.pyplot as plt
%matplotlib inline

然后使用下面make_blobs函数,生成一个二分类的数据不平衡数据集;

使用train_test_split函数划分训练集和测试集数据;

训练SVC模型。

X,y = make_blobs(n_samples=(4000,500), cluster_std=[7,2], random_state=0)

X_train,X_test,y_train, y_test = train_test_split(X,y,random_state=0)

clf = SVC(gamma=0.05).fit(X_train, y_train)

fpr,tpr, thresholds = roc_curve(y_test,clf.decision_function(X_test))

plt.plot(fpr,tpr,label='ROC')

plt.xlabel('FPR')
plt.ylabel('TPR')

从上面的代码可以看到,我们使用roc_curve函数生成三个变量,分别是fpr,tpr, thresholds,也就是假正例率(FPR)、真正例率(TPR)和阈值。

而其中的fpr,tpr正是我们绘制ROC曲线的横纵坐标,于是我们以变量fpr为横坐标,tpr为纵坐标,绘制相应的ROC图像如下:

值得注意的是上面的支持向量机模型使用的decision_function函数,是自己所特有的,而其他模型不能直接使用。

比如说我们想要使用其他模型(例如决策树模型)的结果绘制ROC,直接套用上面的代码,会报错,会显示没有这个函数。

以决策树模型为例,解决上述问题(适用于除向量机外的模型)

导入决策树模型包以及训练模型的代码省略了,只需要手动改一改就行了,我们直接看绘图的代码!

fpr,tpr, thresholds = roc_curve(y_test,clf.predict_proba(X_test)[:,1])


plt.plot(fpr,tpr,label='ROC')

plt.xlabel('FPR')
plt.ylabel('TPR')

可以看到我们直接把只适用于支持向量机模型的函数decision_function更改成predict_proba(X_test)[:,1]就行了,让我们看看结果:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

了解详情:docs.qq.com/doc/DSnl3ZG…