scikitplot.metrics下的plot_roc_curve方法进行ROC曲线作图时如何做出一左一右两个子图的形式

我在调用scikitplot.metrics下的plot_roc_curve方法进行ROC曲线作图时,发现这个作图函数好像不能配合plt里的subplot方法进行子图分图的处理

from scikitplot.metrics import plot_roc_curve as auc_roc
plt.rc('figure', figsize=(10,5))
ax1=plt.subplot(1,2,1)
ax2=plt.subplot(1,2,2)
plt.sca(ax1)
auc_roc(y_test, mnb1.predict_proba(X_test), curves=['each_class']);
plt.title('text Native Bayes ROC curves');
plt.sca(ax2)
auc_roc(y_test, mnb2.predict_proba(X_se_test), curves=['each_class']);
plt.title('selected_text Native Bayes ROC curves');

img

如图所示,感觉plot_roc_curve这个作图完全独立于那两个子图一样,所以想请教一下,这种情况下可以怎么作图使得这两个ROC曲线图能够一左一右地呈现出来呢?
像下图中这种形式,我下图就是用plt来做子图划分的

img

https://img-mid.csdnimg.cn/release/static/image/mid/ask/153804842176182.png "#left")

望采纳。


对,scikitplot的plot_roc_curve函数默认是直接在当前的图上绘制ROC曲线的,而不是返回一个可以用于在其他图中绘制的对象。

如果你希望使用subplot进行分图,可以使用scikit-learn提供的roc_curve函数计算出ROC曲线的真正率和假正率的值,然后使用matplotlib的plot函数绘制ROC曲线。如下例:

from sklearn.metrics import roc_curve

# 计算真正率和假正率
fpr, tpr, _ = roc_curve(y_test, mnb1.predict_proba(X_test)[:, 1])

# 在第一个子图中绘制ROC曲线
ax1 = plt.subplot(1, 2, 1)
plt.plot(fpr, tpr)
plt.title('text Native Bayes ROC curve')

# 在第二个子图中绘制ROC曲线
fpr, tpr, _ = roc_curve(y_test, mnb2.predict_proba(X_se_test)[:, 1])
ax2 = plt.subplot(1, 2, 2)
plt.plot(fpr, tpr)
plt.title('selected_text Native Bayes ROC curve')

如果你想要绘制多条ROC曲线,可以在一张图中使用多条线来表示不同的类别。例如:

fpr, tpr, _ = roc_curve(y_test, mnb1.predict_proba(X_test))
plt.plot(fpr, tpr, label='class 1')
fpr, tpr, _ = roc_curve(y_test, mnb2.predict_proba(X_se_test))
plt.plot(fpr, tpr, label='class 2')
plt.legend()