Machine learning 如何将一个热编码标签与一些sklearn分类器结合使用?

Machine learning 如何将一个热编码标签与一些sklearn分类器结合使用?,machine-learning,scikit-learn,Machine Learning,Scikit Learn,我有一个包含10个类的多类分类任务。因此,我使用sklearn将单列标签转换为10列标签。我试图拟合训练数据。虽然我可以使用进行此操作,但在安装时收到以下错误消息: 我知道这两个分类器中y的允许形状不同: 高斯B: y : array-like, shape (n_samples,) 随机森林: y : array-like, shape = [n_samples] or [n_samples, n_outputs] 问题是,为什么会这样?这难道不矛盾吗?有办法绕过它吗?谢谢 问题是,为什么

我有一个包含10个类的多类分类任务。因此,我使用sklearn将单列标签转换为10列标签。我试图拟合训练数据。虽然我可以使用进行此操作,但在安装时收到以下错误消息:

我知道这两个分类器中y的允许形状不同:

高斯B:

y : array-like, shape (n_samples,)
随机森林:

y : array-like, shape = [n_samples] or [n_samples, n_outputs]
问题是,为什么会这样?这难道不矛盾吗?有办法绕过它吗?谢谢

问题是,为什么会这样

这是因为有一点理解错误,在scikit学习中,您不编码标签,而是将其作为标签的一维向量传递,从而代替

1 0 0
0 1 0
0 0 1
你真的通过了

1 2 3
那么为什么随机森林会接受不同的方案呢?因为它不适用于多类设置!它适用于多标签,其中每个实例可以有许多标签,如

1 1 0
1 1 1
0 0 0
这与“scikit学习中的所有分类器都是开箱即用的多类分类”不矛盾吗

相反-这是最简单的解决方案-除非是多标签,否则永远不要要求一个热标签

有办法绕过它吗


是的,只是不要编码-传递原始标签:-)

太好了。谢谢你的澄清!
1 1 0
1 1 1
0 0 0