如何使用分类列的二进制编码来预测 Python 中的标签?
How to use Binary Encoding of Categorical Columns to predict labels in Python?
我有 2 个文件 test.csv
和 train.csv
。属性值是分类的,我正在尝试将它们转换为数值。
我正在做以下事情:
import category_encoders as ce
encoder = ce.BinaryEncoder(cols = 'column_name' , return_df = True)
x_train_data = encoder.fit_transform(x_train_data)
这导致新的 table 共有 13 列。
之后,我正在 x_train_data
和 y_train_data
上训练我的 DecisionTreeClassifier
最后,我想预测test.csv
中的Labels
。
如果我在 test.csv 上再次重复 BinaryEncoding 过程,这次会导致 < 13 features
,我认为这是由于行数较少所致。
由于总列的差异,决策树分类器将不起作用。
那么,有没有办法预测呢?如果不是,那么二进制编码器的意义何在?因为我假设我们训练了一个模型,以便我们可以预测一个未知的数据集。
您只需对测试数据进行 transform()
操作即可(不再适合编码器)。 “训练”数据集中未出现的值在所有类别中都将编码为 0(只要您不更改 handle_unknown
参数)。例如:
import category_encoders as ce
train = pd.DataFrame({"var1": ["A", "B", "A", "B", "C"], "var2":["A", "A", "A", "A", "B"]})
encoder = ce.BinaryEncoder(cols = ['var1', 'var2'] , return_df = True)
x_train_data = encoder.fit_transform(train)
# var1_0 var1_1 var2_0 var2_1
#0 0 1 0 1
#1 1 0 0 1
#2 0 1 0 1
#3 1 0 0 1
#4 1 1 1 0
test = pd.DataFrame({"var1": ["C", "D", "B"], "var2":["A", "C", "F"]})
x_test_data = encoder.transform(test)
# var1_0 var1_1 var2_0 var2_1
#0 1 1 0 1
#1 0 0 0 0
#2 1 0 0 0
'D'
在训练数据的var1
中没有出现,所以编码为0 0
。 'C'
和 'F'
没有出现在训练数据的 var2
中,所以它们都被编码为 0 0
.
我有 2 个文件 test.csv
和 train.csv
。属性值是分类的,我正在尝试将它们转换为数值。
我正在做以下事情:
import category_encoders as ce
encoder = ce.BinaryEncoder(cols = 'column_name' , return_df = True)
x_train_data = encoder.fit_transform(x_train_data)
这导致新的 table 共有 13 列。
之后,我正在 x_train_data
和 y_train_data
DecisionTreeClassifier
最后,我想预测test.csv
中的Labels
。
如果我在 test.csv 上再次重复 BinaryEncoding 过程,这次会导致 < 13 features
,我认为这是由于行数较少所致。
由于总列的差异,决策树分类器将不起作用。
那么,有没有办法预测呢?如果不是,那么二进制编码器的意义何在?因为我假设我们训练了一个模型,以便我们可以预测一个未知的数据集。
您只需对测试数据进行 transform()
操作即可(不再适合编码器)。 “训练”数据集中未出现的值在所有类别中都将编码为 0(只要您不更改 handle_unknown
参数)。例如:
import category_encoders as ce
train = pd.DataFrame({"var1": ["A", "B", "A", "B", "C"], "var2":["A", "A", "A", "A", "B"]})
encoder = ce.BinaryEncoder(cols = ['var1', 'var2'] , return_df = True)
x_train_data = encoder.fit_transform(train)
# var1_0 var1_1 var2_0 var2_1
#0 0 1 0 1
#1 1 0 0 1
#2 0 1 0 1
#3 1 0 0 1
#4 1 1 1 0
test = pd.DataFrame({"var1": ["C", "D", "B"], "var2":["A", "C", "F"]})
x_test_data = encoder.transform(test)
# var1_0 var1_1 var2_0 var2_1
#0 1 1 0 1
#1 0 0 0 0
#2 1 0 0 0
'D'
在训练数据的var1
中没有出现,所以编码为0 0
。 'C'
和 'F'
没有出现在训练数据的 var2
中,所以它们都被编码为 0 0
.