One-Hot-Encoding 目标变量

数据挖掘 机器学习 一热编码 目标编码
2022-02-18 22:25:42

我有一个由目标变量中的 4 个值组成的数据集。我已经对对我有用的进行了序数编码,但我的问题是,如果我应用单热编码,我可以解决这个问题吗?因为它将是从单个目标变量生成的 4 个新列。

|classes|classes_a|classes_b|classes_c|classes_d
|a      |1        |0        |0        |0
|------ |---------|---------|---------|---------
|b      |0        |1        |0        |0
|------ |---------|---------|---------|---------
|c      |0        |0        |1        |0
|-------|---------|---------|---------|---------
|d      |0        |0        |0        |1

现在我有这 4 列 classes_a、classes_b、classes_c 和 classes_d。我该如何处理它的要求?

1个回答

正如评论中指出的,实际的问题是:

如果对响应数据进行 one-hot 编码,是否仍然可以训练 KNN 模型?

答案是肯定的:

如果您有一个包含四个类的目标(一列),则您有一个多类设置。

如果您有四个具有二进制类 (1, 0) 的目标(四列),则您有一个多标签设置。

请参阅sklearn对不同方法的概述。

使用 Keras,您可以使用“功能 API”来使用神经网络对多标签(多输出)案例进行建模。你可以这样写模型:

# Model
...

# Outputs
out1 = Dense(1)(x)
out2 = Dense(1)(x)

# Compile/fit the model
model = Model(inputs=Input_1, outputs=[out1,out2])
model.compile(optimizer = ..., loss = ...)
# Add actual data here in the fit statement
model.fit(train_data, [train_targets,train_targets2], epochs=..., batch_size=..., validation_split=0.2)

这是功能 API 的回归示例,可以轻松更改为分类。

但是,解决像您这样的问题的直观方法是简单地进行多类分类。我认为将目标重新排列为“一个热门”没有好处。