【问题标题】:Issue with sklearn k nearest neighborssklearn k最近邻居的问题
【发布时间】:2016-09-10 19:06:24
【问题描述】:

我想知道是否有一种方法可以强制 sklearn NearestNeighbors 算法,在有重复点时考虑输入数组中点的顺序。

举例说明:

>>> from sklearn.neighbors import NearestNeighbors
>>> import numpy as np

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
nbrs = NearestNeighbors(n_neighbors=2, algorithm='ball_tree').fit(X)
distances, indices = nbrs.kneighbors(X)
indices                                           
>>>> array([[0, 1],
     [1, 0],
     [2, 1],
     [3, 4],
     [4, 3],
     [5, 4]])

由于查询集与训练集相匹配,因此每个点的最近邻点是该点本身,距离为零。但是,如果我允许 X 中存在重复点,则可以理解,该算法不会区分重复点:

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1],[3, 2],[-1,-1],[-1,-1]])
nbrs = NearestNeighbors(n_neighbors=2, algorithm='auto').fit(X)
distances, indices = nbrs.kneighbors(X)
indices 
>>>> array([[6, 0],
   [1, 0],
   [2, 1],
   [3, 4],
   [4, 3],
   [5, 4],
   [6, 0],
   [6, 0]])

理想情况下,我希望最后一个输出类似于:

    >>>> array([[0, 6],
   [1, 0],
   [2, 1],
   [3, 4],
   [4, 3],
   [5, 4],
   [6, 0],
   [7, 6]])

【问题讨论】:

    标签: algorithm python-2.7 duplicates scikit-learn nearest-neighbor


    【解决方案1】:

    我认为你不能这样做,因为我们从ref 得到:

    警告:关于最近邻算法,如果有两个邻居, 邻居 k+1k,距离相同但标签不同, 结果将取决于训练数据的顺序。

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2018-01-06
      • 2011-05-09
      相关资源
      最近更新 更多