В чем разница между cross_val_score и scoring = 'roc_auc' и roc_auc_score?

Я запутался в разнице между метрикой оценки cross_val_score 'roc_auc' и roc_auc_score, которую я могу просто импортировать и вызвать напрямую.

Документация (http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter) указывает, что при определении scoring = 'roc_auc' будет использоваться sklearn.metrics.roc_auc_score. Однако, когда я реализую GridSearchCV или cross_val_score с scoring = 'roc_auc', я получаю очень разные числа, которые, когда я вызываю roc_auc_score напрямую.

Вот мой код, чтобы помочь продемонстрировать то, что я вижу:

# 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!

Мне кажется, что я здесь упускаю что-то очень простое - скорее всего, ошибка в том, как я реализую / интерпретирую одну из метрик оценки.

Может ли кто-нибудь пролить свет на причину несоответствия между двумя показателями оценки?

Ответы на вопрос(3)

Ваш ответ на вопрос