我正在使用jupyter笔记本中使用统计模型进行线性回归。数据在一个名为" Train_base"的数据框中,其中ID列标识了我的数据库的每个唯一主题。Train_base就是这样:
id y x0 x1 x2
a123 20 8 1 3
b789 33 8 3 2
d782 77 9 6 5
代码的主要块如下所示。请注意,我正在使用另一个称为" test_base"的碱基来做出预测,除了" y"列:
,该基础的结构也与" train_base"相同。results = smf.ols('y ~ x0 + x1 + x2', data=train_base).fit()
predictions = results.predict(test_base)
predictions.head()
预测是这样的:
0 -0.054789
1 -0.036042
2 -0.043962
3 -0.135725
4 -0.409129
dtype: float64
在我看来,预测中显示的第一列是原始train_base的索引(我正确吗?)。由于我需要确定测试基础每个个体的预测值,因此在预测中拥有" ID"列需要做什么?
在@leda grasiele的答案中进行了一些微妙的校正(包括内部方括号和换位函数的使用),我到达了正确的代码,如下:
如下:predict = pd.DataFrame([results.predict(test_base), train_base['id']]).T
predict.columns = ['predictions', 'id']
predict
首先:是的,ID列是索引。第二:我无法访问您的数据来测试我的建议,但是我认为以下内容可能有效(或类似的内容):
predict = pd.DataFrame(results.predict(test_base), train_base['id'])
predict.columns = ['predict']
predict
我认为,如果您的预测中出现的每个值与每个ID索引有关,则可以工作,因为该代码的目的是创建由预测结果和ID索引组成的数据帧。