Как сделать K-NN на мешок слов - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть тренировочный и тестовый набор (равный по размеру).Я сделал модель мешка слов, и я пытаюсь сделать K-ближайшего соседа на нем, и я не уверен, как это сделать.

Модель "Мешок слов":

from sklearn.feature_extraction.text import CountVectorizer
bow_vectorizer = CountVectorizer(max_features=100, stop_words='english')

bow = bow_vectorizer.fit(TrainData)
print(bow_vectorizer.vocabulary_)
bowTrain = bow_vectorizer.fit_transform(TrainData)
bowTest = bow_vectorizer.fit_transform(TestData)

Попытка сделать KNN на модели "Мешок слов", и я не уверен, что я должен положить в часть "knn.fit"

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors = 3)
knn.fit(bowTrain, ???? )
predict = knn.predict(bowTest[0:5000])

1 Ответ

0 голосов
/ 15 декабря 2018
from sklearn.feature_extraction.text import CountVectorizer
bow_vectorizer = CountVectorizer(max_features=100, stop_words='english')

X_train = TrainData
#y_train = your array of labels goes here
bowVect = bow_vectorizer.fit(X_train)

Вероятно, вам следует использовать тот же векторизатор, поскольку существует вероятность изменения словарного запаса.

bowTrain = bowVect.transform(X)
bowTest = bowVect.transform(TestData)

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors = 3)
knn.fit(bowTrain, y_train )
predict = knn.predict(bowTest[0:5000])
...