我正在尝试使用“数据袋”问题,该数据集有两列-摘要和解决方案。我正在使用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**
答案 0 :(得分:2)
我想您正在将vectorizer
再次拟合到测试数据上,而不是使用transform
函数。
确保您正在执行以下操作。
test_bow_set = vectorizer.transform(test_dataset)
答案 1 :(得分:0)
您再次适合矢量化器:
train_bow_set = vectorizer.fit_transform(dataset[0]).todense()
您需要从训练中保留矢量化器 (实际上是所有预处理元素),并且仅使用变换。再次拟合将深刻改变结果。
train_bow_set = vectorizer.transform(dataset[0]).todense()