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

如何在Sklearn中用.reshape()配合PolynomialFeatures适配多变量多项式回归输入

问题根源与解决方法

你遇到的错误本质是训练和预测时用的特征维度不匹配:

  • 训练模型时,你用了经PolynomialFeatures转换后的14维特征(Dum_poly)
  • 但预测时直接传入了原始的4维数据(Dum_data),模型自然会报错

为什么是14维?

原始数据有4个特征,生成2次多项式特征(include_bias=False)时,特征包含:

  • 4个原始一次特征
  • 6个两两交互项(比如x1x2、x1x3等,组合数C(4,2)=6)
  • 4个各特征的二次项(x1²、x2²等)
    加起来4+6+4=14,这就是模型期望的特征数。

修正代码

预测时必须用训练时的同一个poly_fit对象对输入数据做相同的多项式转换,而不是直接传原始数据:

# 导入依赖库
import pandas as pd
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 创建数据
Dum_data = pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
Dum_data_y = pd.DataFrame([[13],[14],[15]])

# 生成2次多项式特征
poly_fit = PolynomialFeatures(degree = 2, include_bias = False)
Dum_poly = poly_fit.fit_transform(Dum_data)

# 训练线性模型
modl = LinearRegression()
modl.fit(Dum_poly, Dum_data_y)

# 预测:先对输入数据做相同的多项式转换
Dum_data_poly_pred = poly_fit.transform(Dum_data)
Dum_y_pred = modl.predict(Dum_data_poly_pred)
print(Dum_y_pred)

额外说明

你看到的reshape()解决的是单特征(比如1维数据)的维度适配问题,而你的情况是特征转换未同步,和reshape无关。只要保证训练和预测的输入都经过相同的多项式特征转换,不管是DataFrame还是numpy数组都可以正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:32:55