2017-09-25 144 views
0

我有以下代碼繪製ROC曲線。無法使用ggplot繪製AUC

from sklearn.datasets import make_classification 
from sklearn.linear_model import LogisticRegression 
from sklearn import metrics 
from ggplot import * 
import pandas as pd 

X, y = make_classification(n_samples=10000,n_features=10,n_classes=2, n_informative=4) 

X_train = X[:9000] 
X_test = X[9000:] 

y_train = y[:9000] 
y_test = y[9000:] 

clf = LogisticRegression() 
clf.fit(X_train,y_train) 

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

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

auc = metrics.auc(fpr, tpr) 
ggplot(df, aes(x='fpr', ymin=0, ymax='tpr')) +\ 
     geom_area(alpha=0.2) +\ 
     geom_line(aes(y='tpr')) +\ 
     ggtitle("ROC Curve w/ AUC=%s" % str(auc)) 

但是,在第二行中,它拋出了一個錯誤:「'int'對象不可迭代」。任何人都可以幫我解決這個問題,因爲我不明白。

回答

0

您缺少的情節y值:

ggplot(df, aes(x='fpr', y='tpr')) +\ 
    geom_area(alpha=0.2) +\ 
    geom_line(aes(y='tpr')) +\ 
    ggtitle("ROC Curve w/ AUC=%s" % str(auc)) 

應該工作