Was ist der Unterschied zwischen cross_val_score mit scoring = 'roc_auc' und roc_auc_score?

Ich bin verwirrt über den Unterschied zwischen der Bewertungsmetrik 'roc_auc' für cross_val_score und der Bewertungsmetrik 'roc_auc_score', die ich einfach importieren und direkt aufrufen kann.

Die Dokumentation http: //scikit-learn.org/stable/modules/model_evaluation.html#scoring-paramete) gibt an, dass bei Angabe von scoring = 'roc_auc' der Wert sklearn.metrics.roc_auc_score verwendet wird. Wenn ich jedoch GridSearchCV oder cross_val_score mit scoring = 'roc_auc' implementiere, erhalte ich ganz andere Zahlen als wenn ich roc_auc_score direkt aufrufe.

Hier ist mein Code, um zu demonstrieren, was ich sehe:

# score the model using cross_val_score

rf = RandomForestClassifier(n_estimators=150,
                            min_samples_leaf=4,
                            min_samples_split=3,
                            n_jobs=-1)

scores = cross_val_score(rf, X, y, cv=3, scoring='roc_auc')

print scores
array([ 0.9649023 ,  0.96242235,  0.9503313 ])

# do a train_test_split, fit the model, and score with roc_auc_score

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
rf.fit(X_train, y_train)

print roc_auc_score(y_test, rf.predict(X_test))
0.84634039111363313 # quite a bit different than the scores above!

Ich habe das Gefühl, dass mir hier etwas sehr Einfaches fehlt - höchstwahrscheinlich ein Fehler bei der Implementierung / Interpretation einer der Scoring-Metriken.

Kann jemand Aufschluss über den Grund für die Diskrepanz zwischen den beiden Scoring-Metriken geben?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage