我有一个标签为 0-4 的数据集。我使用以下代码将它们一次性编码为 np 数组:labels = (np.arange(5) == labels[:, None]).astype(np.float32)
。我的问题是,我们是否必须对它们进行一次热编码?我可以只保留 0-4 之间的数字/ float 标签并使用它们吗?如果是这样怎么办?
最佳答案
你的标签是什么?
它们是“水平”、“强度”还是某种“度量”??
如果是,最好不要对它们进行编码,只需将它们压缩在 0 和 1 之间。然后您的模型将能够计算一个结果,即强度。但它永远不会准确。
如果没有,那么您应该对标签进行编码,因为每个数字彼此无关,它们是“离散的”,并且您的模型最好也显示离散结果。那么每个结果将是每个类别的结果的可能性(可能不完全是概率,具体取决于模型的参数)。
所以,简而言之:如果你想测量某物的强度,一个变量。如果您想要不同“类”的可能性,请创建 one-hot 向量。
关于machine-learning - Keras 是否需要一种热编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45943827/