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

如何将sklearn模型predict输出转为0/1?是否支持原地转换?

原地转换预测值为0/1的解决办法

嘿,先插一句:你现在用LinearRegression(线性回归)来处理0/1的贷款审批分类任务,其实有点"用错工具"啦——线性回归是针对连续值预测的回归模型,输出范围不受限制(比如你得到的-0.22这种负数,完全不符合分类标签的意义)。更适合的是sklearn.linear_model.LogisticRegression,它专门处理二分类任务,能直接输出0/1的结果,不过先解决你当前问的原地转换问题:

方法1:用numpy的round函数原地修改

numpy的np.round()支持通过out参数直接在原数组上完成四舍五入操作,不用新建数组:

# 先获取预测结果
preds = clf_LR.predict(X_predict)
# 原地四舍五入到最近的整数(0或1)
np.round(preds, out=preds)

这样执行后,preds就会被直接修改成0或1的数组,比如0.5及以上会变成1,低于0.5变成0。

方法2:布尔索引自定义阈值原地赋值

如果你不想用0.5作为分界(比如业务上有其他需求),可以用布尔索引直接原地修改数组:

preds = clf_LR.predict(X_predict)
# 自定义阈值,比如0.6,大于等于转1,否则转0
preds[preds >= 0.6] = 1
preds[preds < 0.6] = 0

这种方式更灵活,你可以根据实际需求调整阈值,而且完全是原地修改,不会额外占用内存。

强烈建议:换成分类模型才是正道

刚才提到的,用线性回归做分类是不合理的,不仅输出会出现无意义的数值,模型的预测逻辑也不适合分类任务。换成逻辑回归的话,直接就能得到0/1的结果,不用额外转换:

from sklearn.linear_model import LogisticRegression

# 初始化逻辑回归分类器
clf_LR = LogisticRegression()
clf_LR.fit(X, y)
# 直接得到0或1的分类预测结果
preds = clf_LR.predict(X_predict)

逻辑回归会基于概率输出分类结果,性能和合理性都比用线性回归强很多,更适合你的贷款审批分类场景。

内容的提问来源于stack exchange,提问作者Prayas.code

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:13:42