Python,Roc曲线和ggplot?

时间:2016-07-04 10:49:23

标签: python-2.7 roc python-ggplot auc sklearn-pandas

我按照教程显示了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>

我该如何解决这个问题?

3 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

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

错误说你必须添加args slope =?并且拦截=?。之后它起作用

答案 2 :(得分: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 Curves

免责声明:请注意,这会使用我构建的scikit-plot库。