¿Cuál es la diferencia entre cross_val_score con scoring = 'roc_auc' y roc_auc_score?
Estoy confundido acerca de la diferencia entre la métrica de puntuación cross_val_score 'roc_auc' y la roc_auc_score que solo puedo importar y llamar directamente.
La documentación (http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter) indica que al especificar scoring = 'roc_auc' se usará sklearn.metrics.roc_auc_score. Sin embargo, cuando implemento GridSearchCV o cross_val_score con scoring = 'roc_auc', recibo números muy diferentes que cuando llamo a roc_auc_score directamente.
Aquí está mi código para ayudar a demostrar lo que veo:
# 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!
Siento que me estoy perdiendo algo muy simple aquí, probablemente un error en la forma en que estoy implementando / interpretando una de las métricas de puntuación.
¿Alguien puede arrojar alguna luz sobre el motivo de la discrepancia entre las dos métricas de puntuación?