首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同的结果roc_auc_score和plot_roc_curve

不同的结果roc_auc_score和plot_roc_curve
EN

Stack Overflow用户
提问于 2020-03-10 18:02:31
回答 2查看 1.1K关注 0票数 2

我正在训练一个RandomForestClassifier (技能学习)来预测信用卡欺诈。然后,当我测试模型并检查rocauc得分时,当我使用roc_auc_scoreplot_roc_curve时,会得到不同的值。roc_auc_score给了我大约0.89,而plot_curve计算出AUC值为0.96,这是为什么?

标签都是0和1,预测都是0或1。CodE:

代码语言:javascript
复制
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恰好在图的上方)。

EN

回答 2

Stack Overflow用户

发布于 2020-03-10 19:02:51

您正在将预测类而不是预测概率提供给roc_auc_score

来自Documentation

y_score:形状(n_samples,)或(n_samples,n_classes)目标分数的数组形式。在二元和多标签情况下,这些可以是概率估计或非阈值决策值(如某些分类器上的decision_function返回的)。

将您的代码更改为:

代码语言:javascript
复制
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]))
票数 2
EN

Stack Overflow用户

发布于 2020-03-11 12:49:35

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60615281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档