我使用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)
知道如何让它发挥作用吗?
答案 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/devel/generated/statsmodels.regression.linear_model.RegressionResults.predict.html