如何用Python的statsmodels线性回归模型预测单个新数据点?
解决statsmodels线性回归单个数据点预测的维度错误问题
错误原因
你的模型训练时,sm.add_constant(x)生成了2列的特征矩阵(第一列是常数项1,第二列是原始x值),对应模型的2个参数(截距和x的系数)。但你传入单个标量newX=2.5给sm.add_constant时,生成的特征矩阵形状为(1,1),和模型参数(2,)的维度不匹配,导致矩阵点乘时出错。
正确实现方法
方法1:将单个数据点包装为二维结构后添加常数项
把newX转换成二维列表/数组,这样sm.add_constant会正确添加常数项列,生成符合要求的(1,2)形状特征矩阵:
newX = [[2.5]] # 二维列表,形状(1,1) newX_const = sm.add_constant(newX) prediction = model.predict(newX_const) print(prediction) # 输出: [3.5]
方法2:手动构造包含常数项的特征矩阵
直接构造包含常数项(1)和特征值的二维数组,跳过sm.add_constant:
prediction = model.predict([[1, 2.5]]) print(prediction) # 输出: [3.5]
验证结果
你的训练数据拟合出的回归方程是y = 1 + 1*x,所以x=2.5时预测值为3.5,两种方法都能得到正确结果。
内容的提问来源于stack exchange,提问作者Catherine
相关产品推荐
相关产品推荐

