scikit-learn 中多 class 问题的编码标签

Encoding labels for multi-class problems in sckit-learn

当利用来自 scikit-learn 的 class 化器解决多 class 问题时,是否有必要使用一种热编码对标签进行编码?例如,我有 3 个 classes,并在将此数据输入不同的 class 训练器时将它们简单地标记为 012 .据我所知,它似乎工作正常。但是有什么理由不推荐这种基本编码吗?

某些算法(例如随机森林)可以原生处理分类值。对于诸如逻辑回归、多层感知器、高斯朴素贝叶斯和随机森林之类的方法,如果我没记错的话,这些方法似乎可以原生处理分类值。这样的评价对吗? scikit-learn 的哪些 classifier 本身不处理这些输入并且受序数影响?

所有 scikit 估算器都会自动处理 multi-class 问题。

在内部它们将被适当地转换为简单编码为 0、1、2 等(如果算法支持本机 multi-class 问题)或 one-hot 编码(如果算法处理 multi-class) transforming to binary.

的问题

请参考the documentation看这个:

All scikit-learn classifiers are capable of multiclass classification,...

您可以看到 "logistic regression, multilayer perceptron, Gaussian naive Bayes, and random forest" 在标题 "Inherently multiclass" 下。

SGD 或 LinearSVC 等其他方法使用 one-vs-rest 方法来处理 multi-class,但正如我上面所说,将由 scikit 内部处理,因此您作为用户不需要做任何东西,并且可以将 y 的单个数组中的 multi-class 标签(甚至作为字符串)传递给所有分类估计器。

唯一需要用户将标签显式转换为 one-hot 编码的问题是 multi-label 问题,其中可以为一个样本预测多个标签。但我认为你的问题不是关于那个。