Scikit learn 不同结果roc_auc_得分和绘制roc_曲线

Scikit learn 不同结果roc_auc_得分和绘制roc_曲线,scikit-learn,random-forest,roc,auc,Scikit Learn,Random Forest,Roc,Auc,我正在训练一个随机分类器(sklearn)来预测信用卡欺诈。然后,当我测试模型并检查rocauc分数时,当我使用roc\u auc\u分数和plot\u roc\u曲线时,我会得到不同的值。roc_auc_分数为0.89左右,曲线图计算auc为0.96,为什么 标签都是0和1,预测也是0或1。 代码: 代码的输出(roc_auc_分数正好在图形上方) 您将预测类而不是预测概率提供给 roc\u auc\u得分 发件人: y\u得分:形状数组(n\u样本)或(n\u样本,n\u类) 目标分数。在二

我正在训练一个
随机分类器
(sklearn)来预测信用卡欺诈。然后,当我测试模型并检查rocauc分数时,当我使用
roc\u auc\u分数
plot\u roc\u曲线
时,我会得到不同的值。roc_auc_分数为0.89左右,曲线图计算auc为0.96,为什么

标签都是0和1,预测也是0或1。 代码:

代码的输出(roc_auc_分数正好在图形上方)


您将预测类而不是预测概率提供给
roc\u auc\u得分

发件人:

y\u得分:形状数组(n\u样本)或(n\u样本,n\u类)

目标分数。在二进制和多标签情况下,这些值可以是概率估计值,也可以是非阈值决策值(由某些分类器上的决策函数返回)

将代码更改为:


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))


ROC曲线和ROC_auc_分数将预测概率作为输入,但正如我从您的代码中看到的,您提供了预测标签。你需要解决这个问题


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))