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

基于球队比赛数据预测胜负:线性回归输出概率转分类方法咨询

问题:将连续预测值转为二分类结果(0/1)

我用某篮球队的比赛统计数据(得分、三分球等)预测比赛胜负(0负1胜),已完成数据预处理:

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 定义变量
y = data.Result.values
x_data = data.drop(["Result"],axis='columns')

# 归一化与数据集划分
x = (x_data - np.min(x_data))/(np.max(x_data) - np.min(x_data)).values
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size = 0.2, random_state=42)

# 转置调整维度
x_train = x_train.T
x_test = x_test.T
y_train = y_train.T
y_test = y_test.T

使用线性回归预测时,输出的是连续值而非0/1的明确结果,如何处理?


解决方案

方法一:改用逻辑回归(推荐)

线性回归是为回归任务设计的,输出无概率约束,不适合二分类场景。逻辑回归专门针对二分类任务,输出是样本属于正类(1)的概率,可直接输出0/1类别:

from sklearn.linear_model import LogisticRegression

# 初始化逻辑回归模型
lr = LogisticRegression()
# 训练模型(注意将转置后的特征转回来适配sklearn接口)
lr.fit(x_train.T, y_train.T)
# 直接预测0/1类别
y_pred = lr.predict(x_test.T)
# 输出测试集准确率
print("逻辑回归测试准确率: {}".format(lr.score(x_test.T, y_test.T)))

方法二:对线性回归输出做阈值转换

如果坚持使用线性回归,可设定阈值(通常选0.5)将连续预测值转为0/1:

# 获取线性回归的连续预测值
mlr_pred = mlr.predict(x_test.T)
# 阈值转换:大于0.5转为1,否则为0
y_pred = (mlr_pred > 0.5).astype(int)
# 手动计算准确率
accuracy = (y_pred == y_test.T).mean()
print("线性回归转换后测试准确率: {}".format(accuracy))

注意:线性回归的输出没有概率意义,阈值选择缺乏理论依据,分类效果通常不如逻辑回归。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:42:24