При использовании ближайших соседей (scikit) при классификации текста иногда нет сходства ни с одним из классов. Когда это происходит, алгоритм scikit возвращает расстояние 1 и, кажется, выбирает, казалось бы, случайный класс (он одинаков для каждого бега, но иногда меняется при повторном запуске). Было бы полезно, чтобы векторы были ортогональными и возвращали что-то конкретное, например None.
vec = CountVectorizer(strip_accents='ascii', stop_words = stopwords, ngram_range=(1, 3))
bag_of_words = vec.fit_transform(list(map(str, Property))) #reference
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(bag_of_words.minimum(1))
neigh = NearestNeighbors(n_neighbors = neighbors)
neigh.fit(X_train_tfidf)
X_test_counts = vec.transform(wines_strings).minimum(1)
res = neigh.kneighbors(X_test_counts, return_distance = True)