gpt4 book ai didi

python - Scikit 学习 : roc_auc_score

转载 作者:太空狗 更新时间:2023-10-29 21:42:46 30 4
gpt4 key购买 nike

我正在使用 scikit-learn 中的 roc_auc_score 函数来评估我的模型性能。但是,无论我使用 predict() 还是 predict_proba(),我都会得到不同的值

p_pred = forest.predict_proba(x_test)
y_test_predicted= forest.predict(x_test)
fpr, tpr, _ = roc_curve(y_test, p_pred[:, 1])
roc_auc = auc(fpr, tpr)

roc_auc_score(y_test,y_test_predicted) # = 0.68
roc_auc_score(y_test, p_pred[:, 1]) # = 0.93

请问有什么建议吗?

提前致谢

最佳答案

先看看predict和predict_proba的区别。前者预测特征集的类别,而后者预测各种类别的概率。

您将看到隐含在 y_test_predicted 的二进制格式中的舍入误差的影响。 y_test_predicted 由 1 和 0 组成,而 p_pred 由介于 0 和 1 之间的浮点值组成。roc_auc_score 例程改变阈值并生成真阳性率和假阳性率,因此分数看起来非常不同。

考虑以下情况:

y_test           = [ 1, 0, 0, 1, 0, 1, 1]
p_pred = [.6,.4,.6,.9,.2,.7,.4]
y_test_predicted = [ 1, 0, 1, 1, 0, 1, 0]

请注意,ROC 曲线是通过考虑所有截止阈值生成的。现在考虑 0.65 的阈值...

p_pred 案例给出:

TPR=0.5, FPR=0, 

y_test_predicted 案例给出:

TPR=.75 FPR=.25.  

你大概可以看出,如果这两点不同,那么两条曲线下的面积也会有很大的不同。

但要真正理解它,我建议查看 ROC 曲线本身以帮助理解这种差异。

希望这对您有所帮助!

关于python - Scikit 学习 : roc_auc_score,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30623637/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com