Python 多类分类中的错误输入形状()

Python 多类分类中的错误输入形状(),python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我正在使用sci工具包学习执行多类分类任务。在我创建的设置中,我想比较不同的分类算法 我使用一个管道,其中文本插入为X,Y是类(多类,N=5)。使用TfidfVectorizer()在管道中提取文本特征 KNN完成了这项工作,但其他分类器给出了以下信息:ValueError:bad input shape(670,5) 完全回溯: "/Users/Robbert/pipeline.py", line 62, in <module> train_pipeline.fit(X_train

我正在使用sci工具包学习执行多类分类任务。在我创建的设置中,我想比较不同的分类算法

我使用一个管道,其中文本插入为X,Y是类(多类,N=5)。使用TfidfVectorizer()在管道中提取文本特征

KNN完成了这项工作,但其他分类器给出了以下信息:
ValueError:bad input shape(670,5)

完全回溯:

"/Users/Robbert/pipeline.py", line 62, in <module>
train_pipeline.fit(X_train, Y_train)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/pipeline.py", line 130, in fit
self.steps[-1][-1].fit(Xt, y, **fit_params)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/svm/base.py", line 138, in fit
y = self._validate_targets(y)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/svm/base.py", line 441, in _validate_targets
y_ = column_or_1d(y, warn=True)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/utils/validation.py", line 319, in column_or_1d
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (670, 5)

KNN怎么可能接受数组的形状而其他分类器不接受?以及如何更改此形状?

如果比较和中拟合(X,y)函数的文档,您将看到只有前者接受形式为[n_示例,n_输出]的y


可能的解决方案:为什么需要LabelBinarizer?不要使用它。

如果Y向量的大小(n_个样本,n_个类),并且至少包含一行,其中包含多个非零元素,那么您正在解决一个多标签分类问题。如果是这种情况,scikit learn docs中的算法页面将KNN列为支持多标签分类的分类器之一。您可能需要尝试该列表中的其他分类器

* sklearn.tree.DecisionTreeClassifier
* sklearn.tree.ExtraTreeClassifier
* sklearn.ensemble.ExtraTreesClassifier
* sklearn.neural_network.MLPClassifier
* sklearn.neighbors.RadiusNeighborsClassifier
* sklearn.ensemble.RandomForestClassifier
* sklearn.linear_model.RidgeClassifierCV
* sklearn.tree.DecisionTreeClassifier
* sklearn.tree.ExtraTreeClassifier
* sklearn.ensemble.ExtraTreesClassifier
* sklearn.neural_network.MLPClassifier
* sklearn.neighbors.RadiusNeighborsClassifier
* sklearn.ensemble.RandomForestClassifier
* sklearn.linear_model.RidgeClassifierCV