Mat*_*s24 3 python machine-learning labels scikit-learn
当使用来自 scikit-learn 的分类器解决多类问题时,是否有必要使用一种热编码对标签进行编码?例如,我有 3 个类并简单地将它们标记为0, 1, 并2在将这些数据输入不同的分类器进行训练时。据我所知,它似乎工作正常。但是有什么理由不推荐这种基本编码吗?
一些算法,如随机森林,本机处理分类值。对于逻辑回归、多层感知器、高斯朴素贝叶斯和随机森林等方法,如果我没记错的话,这些方法似乎可以在本机处理分类值。这样的评价正确吗?scikit-learn 的哪些分类器本身不处理这些输入并受序数的影响?
所有 scikit 估计器都会自动处理多类问题。
在内部,它们将被适当地转换为 0、1、2 等,如果算法支持本机多类问题,或者如果算法通过转换为 binary来处理多类问题,则使用单热编码。
请参阅文档以查看此内容:
所有 scikit-learn 分类器都能够进行多类分类,...
可以看到标题下有“逻辑回归、多层感知器、高斯朴素贝叶斯和随机森林” "Inherently multiclass"。
其他像 SGD 或 LinearSVC 使用 one-vs-rest 方法来处理多类,但是正如我上面所说的,将由 scikit 在内部处理,因此您作为用户不需要做任何事情并且可以传递多类标签(甚至作为字符串)在y所有分类估计器的单个数组中。
用户需要将标签显式转换为单热编码的唯一问题是多标签问题,其中可以为一个样本预测多个标签。但我认为你的问题与此无关。