如何在python中使用图例和AUC分数在一个图中绘制多条ROC曲线?

时间:2017-03-20 02:22:52

标签: python plot roc auc

我正在建造2个模型。

模型1

modelgb = GradientBoostingClassifier()
modelgb.fit(x_train,y_train)
predsgb = modelgb.predict_proba(x_test)[:,1]
metrics.roc_auc_score(y_test,predsgb, average='macro', sample_weight=None)

模型2

model = LogisticRegression()
model = model.fit(x_train,y_train)
predslog = model.predict_proba(x_test)[:,1]
metrics.roc_auc_score(y_test,predslog, average='macro', sample_weight=None)

如何在一个图中绘制两个ROC曲线,并使用图例&每个模型的AUC分数文本?

4 个答案:

答案 0 :(得分:9)

尝试根据您的数据进行调整:

from sklearn import metrics
import numpy as np
import matplotlib.pyplot as plt

plt.figure(0).clf()

pred = np.random.rand(1000)
label = np.random.randint(2, size=1000)
fpr, tpr, thresh = metrics.roc_curve(label, pred)
auc = metrics.roc_auc_score(label, pred)
plt.plot(fpr,tpr,label="data 1, auc="+str(auc))

pred = np.random.rand(1000)
label = np.random.randint(2, size=1000)
fpr, tpr, thresh = metrics.roc_curve(label, pred)
auc = metrics.roc_auc_score(label, pred)
plt.plot(fpr,tpr,label="data 2, auc="+str(auc))

plt.legend(loc=0)

答案 1 :(得分:2)

类似这样的事情...

Question2

答案 2 :(得分:1)

from sklearn.metrics import plot_roc_curve


fig = plot_roc_curve( clf, x_train_bow, y_train)
fig = plot_roc_curve( clf, x_test_bow, y_test, ax = fig.ax_)
fig.figure_.suptitle("ROC curve comparison")
plt.show() 

基本上 plot_roc_curve 函数绘制分类器的 roc_curve。因此,如果我们在没有指定 plot_roc_curve 参数的情况下使用 ax 两次,它将绘制两个图形。所以这里我们将第一个图形存储在图形变量中并访问它的轴并提供给下一个 plot_roc_curve 函数,以便仅显示第一个图形的轴的图。

答案 3 :(得分:0)

from sklearn.metrics import plot_roc_curve

classifiers = [log_reg, decision_tree, decision_forest]
ax = plt.gca()
for i in classifiers:
    plot_roc_curve(i, X_test, y_test, ax=ax)