2016-07-04 6 views
2

Ich folgte einem Tutorial zum Anzeigen der Roc-Kurven und der entsprechenden Auc; Ich habe die ggplot-Bibliothek nie benutzt, daher kann ich nicht verstehen, wo mein Fehler liegt. Hier ist der Code unter:Python, Roc Kurven und 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') 

Dies ist der Fehler:

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

, wie ich dieses Problem beheben könnte?

+0

Müssen Sie wirklich die ggplot-Bibliothek verwenden? Siehe http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc_crossval.html oder http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html für Matplotlib-Beispiele. – dukebody

Antwort

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

Bitte fügen Sie eine kurze Erklärung zu Ihrer Antworten. Es wird zukünftigen Besuchern helfen. –

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

der Fehler, sagte Sie die args Steigung müssen hinzufügen =? und intercept = ?. danach funktioniert es

0

Dies ist der einfachste Weg, eine ROC-Kurve zu zeichnen, mit einer Reihe von Grundwahrheiten und vorhergesagten Wahrscheinlichkeiten. Der beste Teil ist, es zeichnet die ROC-Kurve für alle Klassen, so dass Sie mehrere ordentlich aussehende Kurven erhalten. Ändern Sie Ihren Code ...

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

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

Wörtlich alles, was Sie brauchen, ist die vorhergesagten Wahrscheinlichkeiten und wahre Etiketten.

Hier ist eine Beispielkurve, die von plot_roc_curve generiert wird. Ich habe den Sample-Digit-Datensatz von scikit-learn verwendet, also gibt es 10 Klassen. Beachten Sie, dass für jede Klasse eine ROC-Kurve geplottet wird.

ROC Curves

Haftungsausschluss: Beachten Sie, dass diese verwendet die scikit-plot Bibliothek, die ich gebaut.