我遇到了Sklearn.neighbors分类器的排序问题。也就是说,我想要的是在分类器的情况下,预测出现在数据帧上的第一个结果。
Sklearn.neighbors的文档说:
''关于最近邻居算法的警告,如果是两个 邻居,邻居k + 1和k,具有相同的距离但不同 标签,结果将取决于培训的顺序 数据。 ''
但是我发现只有在我使用算法“暴力”时才会出现这种情况,即:
clf = NearestNeighbors(n_neighbors=2, algorithm='brute').fit(X)
我的问题是,即使使用暴力作为算法,在特定数量的预测邻居之后,订单也会丢失。即:
clf.kneighbors(np.array(y), n_neighbors=1) -> Predicts 0 row which is correct in terms of ordering
clf.kneighbors(np.array(y), n_neighbors=2) -> Predicts 0 and 101 rows which are correct in terms of ordering
clf.kneighbors(np.array(y), n_neighbors=3) -> Predicts 0, 101 and 115 rows which are correct in terms of ordering
但是当我使用n_neighbors = 4时,我得到了:
clf.kneighbors(np.array(y), n_neighbors=4) -> Predicts 4416, 223, 7626 and 2047 rows which are not correct in terms of ordering
对于任何数字> 3,它都会像这样。订单完全丢失。
以前处理过这个问题的人?