我有一个标签为0-4的数据集。我使用以下代码将它们单热编码为np数组:labels = (np.arange(5) == labels[:, None]).astype(np.float32)
。我的问题是,我们有一个热门编码吗?我可以将标签数字/浮点数保持在0-4并使用它们吗?如果是这样的话?
答案 0 :(得分:2)
一个热门编码使您能够估计每个班级的概率。对于单个实数或整数类编码,网络永远不会给你相同。如果你有类似的1和5类,网络可能会混淆它们,它会给你平均结果,它会是1到5之间的某个数字,它可能是2,3或4之间的任何数字,但这些数字对你的类进行编码,因此输出完全错误。
答案 1 :(得分:2)
你的标签是什么?
他们是“水平”,“强度”还是某种“措施”?
如果是,最好不要对它们进行编码,只需将它们压缩到0和1之间。然后,您的模型将能够计算出一个结果,即强度。但它永远不会是准确的。
如果没有,那么您应该对标签进行编码,因为每个数字与另一个数字无关,它们是“离散的”,并且模型最好也显示离散结果。然后,每个结果将是每个类的结果的可能性(可能不是完全取决于您的模型参数的概率)。
因此,简而言之:如果你想测量某事物的强度,一个变量。如果您想要不同“类”的可能性,请创建一个热门向量。