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

线性回归中最优权重求解问题求助

问题分析与解决方案

问题原因

sklearn的LinearRegression默认会拟合截距项(模型形式为 $y = w_0 + w_1x_1 + w_2x_2$),而你的输入特征x1全为1,这和截距对应的虚拟特征(x0=1)完全线性相关,导致模型参数解不唯一。此时sklearn会选择最小L2范数的解——让w1和w2都为0,仅保留截距w0=1,这样所有样本都能满足预测值等于真实值。

修正方案

如果你希望求解不含截距的线性模型(形式为 $y = w_1x_1 + w_2x_2$),只需在初始化模型时设置fit_intercept=False:

from sklearn.linear_model import LinearRegression
import numpy as np

x = np.ones(202, dtype='int').reshape(101,2)
x[100,1]= 0
y = np.ones(101, dtype='int')

# 关闭截距拟合
model = LinearRegression(fit_intercept=False).fit(x,y)

print(f"w1 and w2: {model.coef_}")

运行后会输出:w1 and w2: [1. 0.],这和手动推导的结果一致:

  • 最后一个样本:$1 = w11 + w20$ → $w1=1$
  • 前100个样本:$1 = 11 + w21$ → $w2=0$

补充说明

如果一定要保留截距项,参数解是不唯一的:只要满足$w0 = 1 - w1$且$w2=0$,所有样本都能被完美拟合。sklearn给出的[0. 0.]是其中范数最小的解,从数学角度合理,但不符合你求解w1和w2的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:37:43