Python KNN查询数据维度必须与培训数据维度匹配

Python KNN查询数据维度必须与培训数据维度匹配,python,machine-learning,scikit-learn,knn,Python,Machine Learning,Scikit Learn,Knn,我正在尝试一个有两列的数据集,即summary和solution。我在用KNN。列车数据集有91列,测试数据集有15列 为了生成向量,我使用下面的一段代码 vectorizer = CountVectorizer() train_bow_set = vectorizer.fit_transform(dataset[0]).todense() print( vectorizer.fit_transform(dataset[0]).todense() ) print( vectorizer.vo

我正在尝试一个有两列的数据集,即summary和solution。我在用KNN。列车数据集有91列,测试数据集有15列

为了生成向量,我使用下面的一段代码

vectorizer = CountVectorizer()
train_bow_set = vectorizer.fit_transform(dataset[0]).todense()
 print( vectorizer.fit_transform(dataset[0]).todense() )
 print( vectorizer.vocabulary_ )
我训练过它

classifier = KNeighborsClassifier(n_neighbors=3)  
classifier.fit(train_bow_set, dataset[1]) 
现在,我正在测试它

y_pred = classifier.predict(test_bow_set) 
在这里,当我测试它时,我得到以下错误:

sklearn/neighbors/binary_tree.pxi in sklearn.neighbors.kd_tree.BinaryTree.query()
**ValueError: query data dimension must match training data dimension**

我猜您是在测试数据上再次安装
矢量器
,而不是使用
转换
功能

确保您正在执行以下操作

test_bow_set = vectorizer.transform(test_dataset)

您正在重新安装矢量器:

train_bow_set = vectorizer.fit_transform(dataset[0]).todense()
您需要使矢量器不受训练(实际上是所有预处理元素),并且只使用transform。再次拟合将深刻地改变结果

train_bow_set = vectorizer.transform(dataset[0]).todense()

你是如何制作测试弓的?这不仅仅是猜测。