我正在训练一个RandomForestClassifier (技能学习)来预测信用卡欺诈。然后,当我测试模型并检查rocauc得分时,当我使用roc_auc_score和plot_roc_curve时,会得到不同的值。roc_auc_score给了我大约0.89,而plot_curve计算出AUC值为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恰好在图的上方)。

发布于 2020-03-10 19:02:51
您正在将预测类而不是预测概率提供给roc_auc_score。
y_score:形状(n_samples,)或(n_samples,n_classes)目标分数的数组形式。在二元和多标签情况下,这些可以是概率估计或非阈值决策值(如某些分类器上的decision_function返回的)。
将您的代码更改为:
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[:, 1]))发布于 2020-03-11 12:49:35
ROC曲线和roc_auc_score将预测概率作为输入,但正如我从您的代码中看到的,您提供的是预测标签。你需要解决这个问题。
https://stackoverflow.com/questions/60615281
复制相似问题