因此,目前我的训练和测试集以669个特征开始,其中许多是绝对的,需要进行单热编码。
对两组进行一次热编码后,我发现训练集具有其他功能。
我不太清楚如何处理这个问题,但我觉得我有三个选择:
任何反馈都会非常感激。
答案 0 :(得分:1)
我认为你在Train& amp;单独测试数据。也许,将它们组合起来,然后应用编码或单独对它们进行pandas.get_dummies,并使用以下代码symmetric difference来获取差异,然后为缺失的列分配0。
missing_cols = (set(train.columns)).symmetric_difference(set(test.columns))
for c in missing_cols:
titanic_test[c] = 0
答案 1 :(得分:0)
分别为训练和测试集创建假人。排除正在测试中但不在训练集中的功能,因为它们未在训练中使用。包括在训练集中但不在测试集中的要素,并使用训练集中的“平均值”,“中位数”,“模式”或零填充与它们相对应的数据。
可以执行以下操作:
Xdummies=pd.get_dummies(X,drop_first=True)
features=Xdummies.columns
xtest=pd.get_dummies(Xhold,drop_first=True)
test_feat=xtest.columns
exclude=list(set(test_feat)-set(features))
include=list(set(features)-set(test_feat))
Xtest=pd.concat([xtest.drop(exclude,axis=1).reset_index(drop=True),pd.DataFrame(index=range(0,xtest.shape[0]),data=0,columns=include).reset_index(drop=True)],axis=1)