Statsmodels中OLS预测结果如何识别主体?
How to identify the subjects in the predicted results of OLS in Statsmodels?
我正在使用 Jupyter 笔记本中的 Statsmodels 进行线性回归。数据位于名为 "train_base" 的 DataFrame 中,其中 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" 的基数进行预测,并且此基数也具有与 "train_base" 相同的结构,除了 "y" 列:
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" 列?
首先:是的,id 列是一个索引。
第二:我无法访问您的数据来测试我的建议,但我认为以下方法可能有效(或类似的方法):
predict = pd.DataFrame(results.predict(test_base), train_base['id'])
predict.columns = ['predict']
predict
我认为如果出现在您的预测中的每个值都与每个 id 索引相关,那么这会起作用,因为这段代码的目的是创建一个由预测结果和 id 索引组成的数据框。
在@Leda Grasiele 的回答中进行了一些细微的更正(包括内部方括号和使用换位函数),我得到了正确的代码,如下所示:
predict = pd.DataFrame([results.predict(test_base), train_base['id']]).T
predict.columns = ['predictions', 'id']
predict
我正在使用 Jupyter 笔记本中的 Statsmodels 进行线性回归。数据位于名为 "train_base" 的 DataFrame 中,其中 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" 的基数进行预测,并且此基数也具有与 "train_base" 相同的结构,除了 "y" 列:
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" 列?
首先:是的,id 列是一个索引。 第二:我无法访问您的数据来测试我的建议,但我认为以下方法可能有效(或类似的方法):
predict = pd.DataFrame(results.predict(test_base), train_base['id'])
predict.columns = ['predict']
predict
我认为如果出现在您的预测中的每个值都与每个 id 索引相关,那么这会起作用,因为这段代码的目的是创建一个由预测结果和 id 索引组成的数据框。
在@Leda Grasiele 的回答中进行了一些细微的更正(包括内部方括号和使用换位函数),我得到了正确的代码,如下所示:
predict = pd.DataFrame([results.predict(test_base), train_base['id']]).T
predict.columns = ['predictions', 'id']
predict