标签编码是否足以输出标签?

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

对于序数特征,使用标签编码是有意义的。但是对于分类特征,我们使用一种热编码。但是这些是输入功能的约定。但是对于输出变量,如果输出标签是分类的,是否有必要使用一种热编码?或者我也可以使用标签编码?哪一个更好?

我正在训练一个有120个班级的水果分类器。我使用在ImageNet上经过预训练的ResNet50模型作为特征提取器,并使用这些特征来训练Logistic回归分类器。由于有120个类别,对于标签编码,标签的范围为0到119。训练模型以使其保持标签编码是否可以?我之所以这样问是因为在sklearn的以下文档中,他们允许我这样做:

sklearn.preprocessing.LabelEncoder

他们在说:

...“此转换器应用于编码目标值,即y,而不是输入X。”

但是我很困惑为什么可以这样做,因为在此标签编码中,每个输出变量的优先级都没有使用热编码时的优先级。

machine-learning scikit-learn logistic-regression one-hot-encoding label-encoding
1个回答
0
投票

但是对于输出变量,如果输出标签是分类的吗?

不,这对您而言没有必要,也没有关系。另一方面,并​​非所有的算法都可以非热编码的方式返回数据:

  • [RandomForest可以使用标签编码进行分类,因为它是根据内部if样条件(简化)返回N个目标值之一”(简化)。
  • ResNet50,因为它是一个神经网络,将返回具有对数(未归一化的概率)或计算损失的概率的矩阵RandomForest。它无法返回[samples, labels]之类的值(用于4个样本),因为[0, 2, 18, 25]之类的操作破坏了梯度(在计算准确性之类的东西时,它沿着列获取标签的索引,但是我不认为它是其中的一部分网络)。

仍然有许多框架允许您将标签编码为序数,因为这样可以提高内存效率。您可以看到PyTorch的argmax,其中包含保存为序数值的目标。

正如注释中所指出的,它们都是标签的编码,可以根据需要轻松地进行传输。

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