为二进制分类任务嵌入分类数据的正确方法是什么

问题描述 投票:2回答:1

我想在Keras使用一个简单的前馈网络。我的一些数据值是在我将其提供给网络之前要嵌入的类别。

使用以下示例数据:

+-------------+---------+
|category_val | Numeric |
+-------------+---------+
|"A"          | 0.5     |
+-------------+---------+
|"B"          | 0.2     |
+-------------+---------+
|"C"          | 0.1     |
+-------------+---------+

我在category_val列上使用了pandas.get_dummies并得到:

+---+-----------+-----------+-----------+
| id| category=A| category=B| category=C|
+---+-----------+-----------+-----------+
|  0|          1|          0|          0|
|  1|          0|          1|          0|
|  2|          0|          0|          1|
+---+-----------+-----------+-----------+

这是否意味着我的输入层应该有4个输入功能(3个用于生成的热矢量,1个用于数值)?

喜欢SO: enter image description here

将类别更改为数字IE似乎更容易:A = 1,B = 2,C = 3然后只有2个功能,正确的方法是什么?为什么?

python pandas machine-learning deep-learning keras
1个回答
3
投票

这是否意味着我的输入层应该有4个输入功能(3个用于生成的热矢量,1个用于数值)?

是。这意味着输入层有4个功能。

将类别更改为数字IE似乎更容易:A = 1,B = 2,C = 3然后只有2个功能,正确的方法是什么?为什么?

更改A=1, B=2, C=3更容易。然而,它告诉神经网络C某种程度上比B更大,这在某种程度上大于A。要理解这个问题,让我们假设你的Category实际上是一个物体的颜色。将颜色作为数字处理意味着red大于blueblue大于red,这是非常无意义的。我们知道神经网络只是连接数学函数,它们会将分配较大数字的颜色视为较大的颜色,因此将数字分配给颜色是错误的方法。因此,通过单独的特征来表示每种颜色是有意义的。有助于将这些0和1视为与每个特征值相关的概率。例如,red的值为1表示该对象为red的概率为1.值0表示0概率。

© www.soinside.com 2019 - 2024. All rights reserved.