Python,Roc曲线和ggplot?

3

我按照一个展示ROC曲线和对应AUC的教程进行操作;我从未使用过ggplot库,因此我无法理解我的错误在哪里。下面是代码:

    from sklearn import metrics
    import pandas as pd
    from ggplot import *

    preds = clf.predict_proba(Xtest)[:,1]
    fpr, tpr, _ = metrics.roc_curve(ytest, preds)

    df = pd.DataFrame(dict(fpr=fpr, tpr=tpr))
    ggplot(df, aes(x='fpr', y='tpr')) + geom_line() + geom_abline(linetype='dashed')

这是错误信息:

   slope needed for <ggplot.geoms.geom_abline.geom_abline object at 0x7fae7e7f8d90>

我应该如何解决这个问题?


你真的需要使用ggplot库吗?请参考http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc_crossval.html或http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html以获取matplotlib示例。 - dukebody
3个回答

0
ggplot(df, aes(x='fpr', y='tpr',ymin=0, ymax='tpr'))+ \
geom_area(alpha=0.2)+\
geom_line(x,y,aes(y='tpr'))+\
ggtitle("ROC Curve w/ AUC=%s" % str(auc))
import matplotlib.pyplot as plt
plt.plot(x,y,'--',color='grey')

请在您的答案中添加简短的解释。这将有助于未来的访客。 - Nikolay Mihaylov

0
ggplot(df, aes(x='fpr', y='tpr'))+\
geom_line()+\
geom_abline(linetype='dashed',slope=1,intercept=0)

错误提示说你必须添加参数 slope=? 和 intercept=?之后它就可以工作了。


0

这是绘制ROC曲线的最简单方法,只需要给定一组真实标签和预测概率即可。最好的部分是,它为所有类别绘制ROC曲线,因此您还会获得多个漂亮的曲线。修改您的代码...

import scikitplot.plotters as skplt
import matplotlib.pyplot as plt

preds = clf.predict_proba(Xtest)
skplt.plot_roc_curve(ytest, preds)
plt.show()

实际上,您所需要的只是预测概率和真实标签。

以下是由 plot_roc_curve 生成的示例曲线。我使用了 scikit-learn 的样本数字数据集,因此有 10 个类。请注意,为每个类绘制了一个 ROC 曲线。

ROC 曲线

免责声明:请注意,这里使用了我开发的 scikit-plot 库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接