【发布时间】:2019-06-15 13:31:25
【问题描述】:
在文本分类中使用最近邻 (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)
【问题讨论】:
-
你使用了什么样的算法,你能分享一些你的代码吗?邻居搜索算法的选择是通过关键字'algorithm'来控制的,它必须是['auto', 'ball_tree', 'kd_tree', 'brute']之一。当传递默认值“auto”时,算法会尝试从训练数据中确定最佳方法。
-
我添加了我的代码,但认为它在这种情况下不会有帮助。这只是标准的东西。
-
不知道是不是我把它改成Brute,每次运行它是否会导致至少在同一个类中,这至少可以被二次处理
标签: python scikit-learn nearest-neighbor