One-hot encoding with categorial dataset:如何处理分类数据中的不同值(数量较少)

One-hot encoding with categorial dataset: how to deal with different values (less number) in categorical data

训练数据集总分类列:27

测试数据集总分类列:27

OH_encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
OH_cols_test = pd.DataFrame(OH_encoder.fit_transform(X_test[test_low_cardinality_cols]))

编码后,同时为预测准备测试数据,

测试数据的列数:115

火车数据的列数:122

我检查了测试数据中的基数,与训练数据列相比,少数列的基数较低。

Train_data.column#1: 2
Test_data:column#1: 1

Train_data.column#2: 5
Test_data:column#2: 3
and more..

所以在one-hot编码时会自动减少列数。有没有更好的方法来准备测试数据集而不丢失任何数据?

理想的过程是在训练数据中拟合 OneHotEncoder,然后在测试数据中拟合 transform。通过这种方式,您将在训练和测试数据中获得一致数量的列。

类似于以下内容:

OH_encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
OH_encoder.fit(X_train)

OH_cols_test = pd.DataFrame(OH_encoder.transform(X_test))

要了解 OneHotEncoder 输出的列名,请使用 get_feature_names 方法。可能这个 可能会有所帮助。