Измерение данных запроса KNN должно соответствовать измерению данных обучения - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь решить проблему Bag of Words с набором данных, который состоит из двух столбцов - сводка и решение.Я использую 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**

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы снова подгоняете векторизатор:

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

Вам нужно не допускать векторизатор к обучению (фактически все элементы предварительной обработки) и использовать только преобразование.Подгонка снова сильно изменит результаты.

train_bow_set = vectorizer.transform(dataset[0]).todense()
0 голосов
/ 13 декабря 2018

Я полагаю, вы снова подгоняете vectorizer к тестовым данным вместо использования функции transform.

Убедитесь, что вы делаете следующее.

test_bow_set = vectorizer.transform(test_dataset)
...