Python sckit学习中多类问题的编码标签

Python sckit学习中多类问题的编码标签,python,machine-learning,scikit-learn,labels,Python,Machine Learning,Scikit Learn,Labels,当使用scikit learn中的分类器处理多类问题时,是否需要使用一个热编码对标签进行编码?例如,我有3个类,在将这些数据输入不同的分类器进行训练时,将它们简单地标记为0、1和2。据我所知,它似乎工作正常。但是有什么理由不推荐这种基本编码吗 有些算法,如随机林,以本机方式处理分类值。对于logistic回归、多层感知器、高斯朴素贝叶斯和随机森林等方法,如果我没有弄错的话,这些方法似乎天生就可以处理分类值。这个评估正确吗?scikit learn的哪些分类器不以本机方式处理这些输入,并且受到顺序

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


有些算法,如随机林,以本机方式处理分类值。对于logistic回归、多层感知器、高斯朴素贝叶斯和随机森林等方法,如果我没有弄错的话,这些方法似乎天生就可以处理分类值。这个评估正确吗?scikit learn的哪些分类器不以本机方式处理这些输入,并且受到顺序性的影响?

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

在内部,它们将被适当地转换为,如果算法支持本机多类问题,则将简单编码转换为0、1、2等;如果算法通过以下方式处理多类问题,则将其转换为一个热编码

请参阅以下内容:

所有scikit学习分类器都能够进行多类分类

您可以看到,“逻辑回归、多层感知器、高斯朴素贝叶斯和随机森林”在标题下
“固有多类”

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


用户唯一需要显式地将标签转换为一个热编码的是多标签问题,在这个问题中,可以为一个样本预测多个标签。但我认为你的问题与此无关。

看看。要点是一个热编码有助于防止分类变量的有序性。@skruber在那里的一个回复中提到:“一些算法,如随机林,以本机方式处理分类值。”我也许应该更明确一些。对于logistic回归、多层感知器、高斯朴素贝叶斯和随机森林等方法,如果我没有弄错的话,这些方法似乎天生就可以处理分类值。这个评估正确吗?哪个scikit learn的分类器不以本机方式处理这些输入?谢谢,这有助于澄清问题。我知道他们能够处理多类问题,但不确定默认设置,也不知道标签是自动转换的。文档是否明确说明了自动编码?也许值得注意的是,如果没有指定多类,逻辑回归将使用一对一的方法。@Mathews24是的,
multi\u class
的默认值是
'ovr'
,如@Kumar:you是一本ML字典,我可以在StackOverFlow中找到。昨天,我尝试了LabelBinarizer对我的多类分类问题的标签进行热编码。结果对我大喊大叫
ValueError:分类指标无法处理多标签指标和多类别目标的混合
。那么,我们为什么要使用
scikit learn
中的标签编码器库呢?