python - 使用 Sklearn 的 ROC 曲线下的面积?
问题描述
我无法弄清楚为什么Sklearn
函数在以下情况下roc_auc_score
返回:1
y_true = [0, 0, 1, 0, 0, 0, 0, 1]
y_scores = [0.18101096153259277, 0.15506085753440857,
0.9940806031227112, 0.05024950951337814,
0.7381414771080017, 0.8922111988067627,
0.8253260850906372, 0.9967281818389893]
roc_auc_score(y_true,y_scores)
最后的三个分数0.7381414771080017, 0.8922111988067627, 0.8253260850906372
与标签不匹配0, 0, 0
。那么,AUC 怎么可能是 1?我在这里做错了什么?
解决方案
如果您查看 ROC 本身,就更容易理解原因:
> roc_curve(y_true, y_scores)
(array([0., 0., 0., 1.]),
array([0. , 0.5, 1. , 1. ]),
array([1.99672818, 0.99672818, 0.9940806 , 0.05024951]))
返回的元组中的第一个值是FPR,第二个是TPR,第三个是值变化的阈值点。
对于 0.99672818 的阈值,FPR 确实是 0.5,而不是 0,这会让您认为 ROC 的 AUC 不是 0。但是,FPR/TPR 点只是线 0, 0 -> 0, 1 -> 1, 1,其下方的区域确实是 1。
推荐阅读
- php - 如果元素有这个或那个类,如何使用 getElementsByTagName()?
- asp.net - C# Entity Framework - 验证记录是否成功保存的最佳实践
- c# - Nunit -Check method was called with a parameter
- r - 用动态名称替换一列中的 NA
- javascript - Javascript 类 Getter Setter
- sql-server - SQL Server:将唯一标识符更改为字符串
- git - 合并 Bitbucket 中的两个分支
- c++ - 嗨,我的名字是亚当莱特,我该如何使用这个
- jquery - 无法使用 jquery post 访问 Modern Warfare API
- histogram - Plotly:连续直方图颜色