我正在对一个特征工程训练集进行预测,没有任何标识键。我怎样才能将我的预测合并回原始df?
原始_DF
ID. ColumnB. ColumnC. ColumnD. Target
A 2 3 1 8
B 2 3 1 9
C 2 3 1 6
然后,我在ColumnC和ColumnD上训练我的模型,得到:
Subset_to_use = ['ColumnC', 'ColumnD', 'Target']
....
#Creating Train / Test resulting in train and test set, and X and Y:
X_train, y_train
X_test, y_test
# Then doing the modelling, simplified:
rf = RandomForestRegressor(n_estimators = 100)
rf.fit(X_train, y_train)
接下来的问题是:如何将预测绑定回original_df?因为中不再有ID列?
培训df:
ColumnC. ColumnD. Target
3 1 8
3 1 9
3 1 6
我的思考方向:
# Add the predictions to the df
X_train['Prediction_TEST'] = y_train. # to have the original values
X_test['Prediction_TEST'] = rf.predict(X_test) # to have the predicted values
然后将上述内容结合起来,例如:
all_data = pd.concat(X_train, X_test])
然而,这仅给出具有新预测的训练和测试DF,而没有其它原始列(例如,列A和列B)。
解决这个问题的最好方法是什么?谢谢!
预期结局(预测值是虚构的):
ID. ColumnB. ColumnC. ColumnD. Target Predicted
A 2 3 1 8 8
B 2 3 1 9 10
C 2 3 1 6 7
1条答案
按热度按时间sgtfey8w1#
只要输出的大小与输入的大小匹配,索引就不重要:
Predicted
列现在包含应用训练的随机森林回归函数的结果。ID
值在这里应该不重要。现在考虑这样一种情况:您有单独的
train
和test
拆分,并且每个拆分应该只能访问ColumnC
和ColumnD
:X_train
和X_test
仍然是DataFrame
对象,所以我们可以添加表示回归变量预测的列:X_test
现在如下所示,X_train
应该类似:索引应该在转换的每一步都被保留下来,所以我们可以将重复的列
C
、D
和join
放回到原始的df
上:给我们: