sckit-learn中用于多类问题的编码标签

时间:2018-07-25 17:56:38

标签: python machine-learning scikit-learn labels

在将scikit-learn的分类器用于多类问题时,是否需要使用一种热编码对标签进行编码?例如,我有3个类别,并且在将这些数据输入不同的分类器进行训练时,将它们简单地标记为012。据我所知,它似乎工作正常。但是,有什么理由不建议使用这种基本编码吗?

一些算法,例如随机森林,本机处理分类值。对于逻辑回归,多层感知器,高斯朴素贝叶斯和随机森林之类的方法,如果我没有记错的话,这些方法似乎可以本地处理分类值。该评估正确吗?哪个scikit-learn分类器不是本地处理这些输入的,而是受常规性影响的?

1 个答案:

答案 0 :(得分:1)

所有scikit估计器都会自动处理多类问题。

内部将它们转换为适当的格式,如果该算法支持本机多类问题,则将其简单编码为0,1,2等,如果该算法通过transforming to binary处理多类问题,则将它们转换为单热编码。

请参阅the documentation来查看此内容:

  

所有scikit-learn分类器都可以进行多类分类,...

您可以看到“逻辑回归,多层感知器,高斯朴素贝叶斯和随机森林”位于标题"Inherently multiclass"下。

诸如SGD或LinearSVC之类的其他对象使用one-vs-rest方法来处理多类,但是正如我上面所说的那样,它将由scikit内部处理,因此您作为用户不需要做任何事情就可以通过所有分类估计量的y的单个数组中包含多个多类标签(甚至是字符串)。

用户唯一需要将标签显式转换为单热编码的方法是多标签问题,在该问题中,一个样本可以预测多个标签。但我认为您的问题与那无关。