使用带有statsmodel的OLS模型预测值

时间:2012-11-04 12:21:07

标签: python pandas linear-regression statsmodels

我使用OLS(多元线性回归)计算了一个模型。我把我的数据分成了训练和测试(每个一半),然后我想预测下半部分标签的值。

model = OLS(labels[:half], data[:half])
predictions = model.predict(data[half:])

问题是我得到并且错误:     文件“/usr/local/lib/python2.7/dist-packages/statsmodels-0.5.0-py2.7-linux-i686.egg/statsmodels/regression/linear_model.py”,第281行,预测     return np.dot(exog,params)     ValueError:矩阵未对齐

我有以下数组形状: data.shape:(426,215) labels.shape:(426,)

如果我将输入转置为model.predict,我会得到一个结果,但形状为(426,213),所以我认为它也是错误的(我希望一个213个数字的矢量作为标签预测):

model.predict(data[half:].T)

知道如何让它发挥作用吗?

1 个答案:

答案 0 :(得分:15)

对于statsmodels> = 0.4,如果我没记错的话

model.predict不知道参数,并且在调用中需要它们 见http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.OLS.predict.html

您的情况应该适合模型,然后使用结果实例的预测方法。

model = OLS(labels[:half], data[:half])
results = model.fit()
predictions = results.predict(data[half:])

或更短

results = OLS(labels[:half], data[:half]).fit()
predictions = results.predict(data[half:])

http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.RegressionResults.predict.html缺少文档字符串

注意:这在开发版本中已经改变(向后兼容),可以利用预测中的“公式”信息 http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults.predict.html