You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么二分类神经网络predict输出为浮点数而非整数?

问题解决方法

问题原因

你搭建的二分类网络最后一层使用sigmoid激活函数,该函数的输出范围为0~1,本质是样本属于正类的概率值,Keras的predict接口默认返回该原始概率输出,不会自动转换为0/1二分类标签,属于正常设计,并非代码错误。

解决方法

你只需要对预测得到的概率值做阈值切割即可得到二分类结果,可根据你的场景选择合适的阈值:

  • 通用场景使用默认0.5阈值:
# 先得到概率输出
y_pred_prob = cost_sensitive_NN.predict(X_test_NN)
# 阈值切割得到0/1标签
y_pred = (y_pred_prob > 0.5).astype(int)
  • 代价敏感场景自定义阈值:
    你当前训练时设置了class_weight = {0:1, 1:100},说明错分正类的代价远高于错分负类,为了匹配该代价设定,建议下调分类阈值(例如设置为0.2~0.3),降低正类的漏判率:
custom_threshold = 0.3
y_pred = (y_pred_prob > custom_threshold).astype(int)

注意:你当前代码仅设置了1轮训练,模型大概率处于欠拟合状态,概率输出的区分度会很差,建议先调整epoch数训练到验证集AUC不再上升后再执行预测操作。

内容的提问来源于stack exchange,提问作者Ozzie427

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:24:09