Python sklearn二次多项式拟合报matmul维度不匹配错误求解
问题诱因
报错的核心原因是模型训练阶段和预测阶段的输入特征维度不匹配:
- 你通过
PolynomialFeatures生成了包含一次项、二次项的2维多项式特征x_poly,但训练LinearRegression模型时,传入的拟合数据是原始1维特征x,最终训练得到的模型权重仅适配1个输入特征 - 预测阶段传入的
x_vp是经过多项式转换的2维特征,做矩阵运算时特征数和模型权重维度无法对齐,就触发了维度不匹配报错,报错信息中提示的size 1 is different from 2,就是指模型训练时接收的1个特征和预测时传入的2个特征的维度差。
修复方案
仅需要修改模型拟合时的传入参数即可:
- 将模型训练语句中的输入特征从原始
x替换为多项式转换后的x_poly,让模型学习到一次项、二次项对应的权重,保证训练和预测阶段的特征维度完全一致 - 其余特征转换、绘图逻辑无需调整
修正后可运行代码
from numpy import * import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures x = array([[0.121644, 0.243288, 0.486576, 0.60822, 0.729864, 0.851508]]).reshape(-1,1) y = array([[0.95, 1.02, 1.21, 1.35, 1.47, 1.61]]).reshape(-1,1) poly = PolynomialFeatures(degree=2, include_bias=False) x_poly = poly.fit_transform(x) reg = LinearRegression() # 核心修正:使用多项式特征训练模型 reg.fit(x_poly, y) x_val = linspace(0.121644, 0.851508, 100).reshape(-1,1) x_vp = poly.transform(x_val) y_val = reg.predict(x_vp) plt.scatter(x,y) plt.plot(x_val, y_val) plt.show()
内容的提问来源于stack exchange,提问作者Quasar
相关产品推荐
相关产品推荐

