2016-07-04 98 views
2

我遵循教程來顯示roc曲線和相應的auc;我從來沒有使用ggplot庫,因此我不明白我的錯誤在哪裏。這裏下面的代碼:Python,Roc曲線和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> 

我怎麼能解決這個問題?

+0

你真的需要使用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

回答

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') 
+0

請向您的簡短說明添加回答。這將有助於未來的遊客。 –

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

錯誤說你必須添加ARGS斜率=?和截距=?之後,它的工作原理

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庫,我建。