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

岭回归中9个预测变量却得到10个系数的原因咨询

Ridge回归输出10个系数而非9个的原因分析

你的Clean_df确实包含9个预测变量,但最终得到10个系数,问题出在PolynomialFeatures(degree=1)的默认设置上:

核心原因

PolynomialFeatures默认参数include_bias=True,会自动给输入特征矩阵添加一列全为1的常数项(截距项)。这就导致经过fit_transform后的训练数据cdp_train变成了9个原始特征 + 1个常数项,共10列特征。

而你使用的Ridge模型默认参数fit_intercept=True——模型本身会单独拟合截距项,这时候就会出现冲突:PolynomialFeatures添加的常数项对应的系数会被强制置为0(你输出的第一个系数就是0.0),剩下的9个系数对应原始的9个特征,加起来正好10个。

验证与解决办法

验证

你可以查看处理后训练数据的列数,会发现它比原始cdx_train多1列:

print(cdp_train.shape[1])  # 输出应为10

解决办法

有两种方式可以让系数数量和原始特征数一致:

  1. 禁用PolynomialFeatures的常数项
    创建PolynomialFeatures实例时设置include_bias=False,让Ridge模型自己拟合截距:

    cpr=PolynomialFeatures(degree=1, include_bias=False)
    

    此时cdp_train会保留原始9个特征,Ridge的coef_就会输出9个系数,截距项单独存在于RigeModel_cd.intercept_中。

  2. 禁用Ridge的截距拟合
    如果需要保留PolynomialFeatures添加的常数项,就把Ridge的fit_intercept设为False,让模型用那个常数项作为截距:

    RigeModel_cd=Ridge(alpha = 1000, fit_intercept=False)
    

    此时coef_的第一个值就会是截距的系数,不会是0,剩下9个对应原始特征。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:01:09