给出距离矩阵的Python中最近的邻居

gce*_*edo 5 python machine-learning scipy scikit-learn

我必须在Python中应用Nearest Neighbors,我正在寻找广告scikit-learnscipy库,它们都需要数据作为输入,然后计算距离并应用算法.

在我的情况下,我必须计算非常规距离,因此我想知道是否有一种方法可以直接输入距离矩阵.

tk.*_*tk. 6

正如福特所说并根据文档 http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html#sklearn.neighbors.KNeighborsClassifier,您应该将自定义距离转换为DistanceMetric对象并传递它作为度量参数.


for*_*ord 6

您将要创建一个DistanceMetric对象,将您自己的函数作为参数提供:

metric = sklearn.neighbors.DistanceMetric.get_metric('pyfunc', func=func)
Run Code Online (Sandbox Code Playgroud)

来自文档:

func是一个函数,它接受两个一维numpy数组,并返回一个距离.请注意,为了在BallTree中使用,距离必须是真正的度量:即它必须满足以下属性

  • 非负性:d(x,y)> = 0
  • 身份:当且仅当x == y时,d(x,y)= 0
  • 对称性:d(x,y)= d(y,x)
  • 三角不等式:d(x,y)+ d(y,z)> = d(x,z)

然后,您可以metric=metric使用关键字参数创建分类器,并在计算距离时使用此参数.