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
方法。可能这个 可能会有所帮助。
训练数据集总分类列: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
方法。可能这个