Разные результаты roc_auc_score и plot_roc_curve - PullRequest
1 голос
/ 10 марта 2020

Я тренирую RandomForestClassifier (sklearn) для прогнозирования мошенничества с кредитными картами. Затем, когда я тестирую модель и проверяю баллы по шкале Рокау c, я получаю разные значения при использовании roc_auc_score и plot_roc_curve. roc_auc_score дает мне около 0,89, а plot_curve вычисляет AU C до 0,96. Почему это так?

Все метки - 0 и 1, а прогнозы - 0 или 1. CodE:

clf = RandomForestClassifier(random_state =42)
clf.fit(X_train, y_train[target].values)
pred_test = clf.predict(X_test)
print(roc_auc_score(y_test, pred_test))
clf_disp = plot_roc_curve(clf, X_test, y_test)
plt.show()

Вывод кода (roc_auc_Score находится чуть выше графика).

image

Ответы [ 2 ]

1 голос
/ 11 марта 2020

RO C Кривая и roc_auc_score принимают вероятности предсказания в качестве входных данных, но, как я вижу из вашего кода, вы предоставляете метки предсказания. Вам нужно это исправить.

0 голосов
/ 10 марта 2020

Вы передаете классы прогнозирования вместо вероятностей прогнозирования на roc_auc_score.

С Документация :

y_score: массивоподобная форма (n_samples,) или (n_samples, n_classes)

Целевые оценки. В двоичном и многоуровневом случаях это могут быть либо оценки вероятности, либо значения решения без пороговых значений (как возвращено в решении для некоторых классификаторов).

измените код на:


clf = RandomForestClassifier(random_state =42)
clf.fit(X_train, y_train[target].values)
y_score = clf.predict_prob(X_test)
print(roc_auc_score(y_test, y_score))

...