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

使用sklearn的PolynomialFeatures时,LinearRegression自带y-intercept的情况下是否需要bias column?

使用sklearn的PolynomialFeatures时,LinearRegression自带y-intercept的情况下是否需要bias column?

嗨,刚入坑机器学习的时候确实会被这些细节绕晕,我来帮你把这个问题理清楚~

你观察到的现象完全没问题:当你用默认的PolynomialFeatures(3)生成特征矩阵时,它会自动添加一列全1的“bias列”,而LinearRegression默认又会自动拟合一个y-intercept(截距),这就导致了模型里出现了两个和截距相关的参数,属于冗余了。

核心逻辑是这样的:

  • LinearRegression的默认参数是fit_intercept=True,这意味着它会自动为模型学习一个截距项,不需要我们手动给特征矩阵加全1列;
  • 而PolynomialFeatures的默认参数是include_bias=True,所以它会生成那列全1的bias列,这时候如果直接把这个特征矩阵喂给默认的LinearRegression,模型会把这个全1列当成一个普通特征来拟合系数,同时还会额外学习一个截距项,也就出现了你看到的“两个截距相关变量”的情况。

那该怎么处理呢?有两种靠谱的方案:

方案一:关闭PolynomialFeatures的bias列生成,让LinearRegression自己拟合截距

这也是sklearn里比较常规的用法,逻辑更清晰:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

X = np.arange(6).reshape(3, 2)
# 设置include_bias=False,不生成全1的bias列
poly = PolynomialFeatures(3, include_bias=False)
X_Poly3 = poly.fit_transform(X)

# LinearRegression默认fit_intercept=True,自动拟合截距
model = LinearRegression()
model.fit(X_Poly3, y)  # y是你的目标变量

# 此时coef_是9个系数(对应X1,X2,X1²,X1X2,X2²,X1³,X1²X2,X1X2²,X2³)
print(f"特征系数数量:{len(model.coef_)}")
# intercept_就是单独的截距项
print(f"模型截距:{model.intercept_}")

方案二:保留PolynomialFeatures的bias列,关闭LinearRegression的自动截距拟合

这种方式也能避免冗余,不过逻辑上是把全1列的系数当成截距:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

X = np.arange(6).reshape(3, 2)
poly = PolynomialFeatures(3)  # 默认生成全1的bias列
X_Poly3 = poly.fit_transform(X)

# 设置fit_intercept=False,不让模型自动拟合截距
model = LinearRegression(fit_intercept=False)
model.fit(X_Poly3, y)

# 此时coef_是10个系数,第一个就是截距(对应全1列),剩下9个是其他特征的系数
print(f"总系数数量:{len(model.coef_)}")
print(f"模型截距(第一个系数):{model.coef_[0]}")

总结一下,两种方法都能解决冗余问题,但更推荐第一种,因为它的逻辑更符合我们对“截距”和“特征系数”的直观理解,也更贴合sklearn的常规使用范式。

备注:内容来源于stack exchange,提问作者pdycassidy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:08:11