【问题标题】:KNN query data dimension must match training data dimensionKNN查询数据维度必须匹配训练数据维度
【发布时间】:2019-05-14 11:56:21
【问题描述】:

我正在尝试使用包含两列(摘要和解决方案)的数据集的词袋问题。我正在使用 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 的?

标签: python machine-learning scikit-learn knn


【解决方案1】:

我猜你是在测试数据上再次拟合vectorizer,而不是使用transform 函数。

确保您正在执行以下操作。

test_bow_set = vectorizer.transform(test_dataset)

【讨论】:

  • 这不仅仅是猜测。
【解决方案2】:

您再次拟合矢量化器:

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

您需要保留矢量化器训练(实际上是所有预处理元素)并且只使用变换。再次拟合将极大地改变结果。

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

【讨论】:

    猜你喜欢
    • 2019-07-10
    • 2020-03-15
    • 2015-07-09
    • 2017-05-19
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多