python - Sklearn f1_score 与意外结果
问题描述
我想通过使用 Scikit-learn 对我的预测计算 f1_score 来评估机器学习系统。然而,结果并不如预期。调用confusion_matrix 显示
[[ 3 11]
[ 5 31]]
如果我手动将 f1 分数计算为 2*(精确度 * 召回率)/(精确度 + 召回率),我得到 2*(3/8 * 31/42)/(3/8 + 31/42)= 0.497。但是调用 f1_score(y_true, y_pred, average="binary") 得到 0.7949。有人有解释吗?
即使当真正的标签混合时我调用 f1_score 时的持续预测为 1,我也会得到高分而不是 0 并带有我期待的警告。我怀疑 f1_score 不是我对 avg="binary" 的期望,但我无法理解它。
我的 scikit-learn 版本是 0.21.3。
谢谢你的帮助。
解决方案
您手动计算精度和召回值时出错。
精度 = TruePositives / (TruePositives + FalsePositives)
召回率 = TruePositives / (TruePositives + FalseNegatives)
请修改你的计算!正确后您将获得 0.7949 的值!
推荐阅读
- android - 无法将键盘事件发送到蓝牙 HID 连接设备
- lua - 问:在 Lua 中对数字表进行排序
- python - 在 Azure Web 作业中使用 Pandas 时出现 missing_dependencies 错误
- python - 查询无法执行但没有返回错误 - Python
- genetic-algorithm - 如何让我的世代价值为我的遗传算法(Python)工作
- r - 闪亮 - 反应不直接评估 textarea 变化?
- c# - 根据用户配置 JwtBearerOptions IssuerSigningKey
- c# - 无法将客户数据放入 sparkpost 电子邮件
- javascript - 警告非确定性路由危险:尝试创建页面:[...] 已存在
- microsoft-graph-api - 是否有可用于获取频道/通话信息(例如参与者列表)的 Teams API 端点?