Я пытаюсь сделать KNN с помощью сходства Косинус в SciKIt Learn, но он продолжает бросать эти предупреждения. Может ли кто-нибудь объяснить, в чем смысл этого, и почему он приходит только тогда, когда я пытаюсь подгонять модель KNN с подобием косинуса, а не с какой-либо другой метрикой расстояния?KNN с TF-IDF Бросок «Измените свои данные» Предупреждения с косинусом Сходство как метрика расстояния
Код:
t0 = time.time()
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(X)
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
vectorizer = TfidfVectorizer()
vec_fit = vectorizer.fit_transform(X)
t1 = time.time()
total = t1-t0
print "TF-IDF built:", total
#######################------------------------############################
t0 = time.time()
nbrs = NearestNeighbors(n_neighbors=20, algorithm='auto', metric=cosine_similarity)
nbrs.fit(X_train_tfidf.toarray())#,Y)
#KD_TREE won't work here becuase it doesn't work with Sparse Matrix -- on giving it a dense matrix, it throws a memory error
t1 = time.time()
total = t1-t0
print "KNN Built:", total
Повторное предупреждение Msg:
C:\Anaconda2\lib\site-packages\sklearn\utils\validation.py:386: DeprecationWarning: Passing 1d arrays as data is depreca
ted in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single
feature or X.reshape(1, -1) if it contains a single sample.
DeprecationWarning)
По предложению Попробованная это сделать:
nbrs = NearestNeighbors(n_neighbors=20, algorithm='auto', metric=cosine_similarity)
nbrs.fit(numpy.array(X_train_tfidf).reshape(1, -1))
который выдает следующее сообщение об ошибке:
Traceback (most recent call last):
File ".\tf-idf.py", line 54, in <module>
nbrs.fit(numpy.array(X_train_tfidf).reshape(1, -1))
File "C:\Miniconda2\lib\site-packages\sklearn\neighbors\base.py", line 816, in fit
return self._fit(X)
File "C:\Miniconda2\lib\site-packages\sklearn\neighbors\base.py", line 221, in _fit
X = check_array(X, accept_sparse='csr')
File "C:\Miniconda2\lib\site-packages\sklearn\utils\validation.py", line 373, in check_array
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.
TF-IDF - это редкая матрица, поэтому я не очень разбираюсь в ней. и что numpy.array(). reshape (1, -1) ---- не работает. Отредактировал ответ. – user3667569
попробуйте этот 'X_train_tfidf.toarray(). Reshape (1, -1)' – kazAnova
Пробовал. Та же проблема. – user3667569