Scikit learn 返回2个或多个最近邻的KNN算法

Scikit learn 返回2个或多个最近邻的KNN算法,scikit-learn,Scikit Learn,例如,我有一个向量x,而a是它最近的邻居。然后,b是它的下一个近邻。Pyton或R中是否有任何包输出类似于[a,b]的内容,这意味着a是其最近邻(可能通过多数票),而b是其第二最近邻。这正是这些度量树的构建目的 您的问题是,您正在使用sklearn(根据您所使用的度量标准,考虑BallTree)来询问一些简单的问题: 将numpy导入为np 从sklearn.KDTree导入 X=np.数组([[1,1],[2,2],[3,3]])#2维中的3个点 tree=KDTree(X) dist,ind

例如,我有一个向量
x
,而
a
是它最近的邻居。然后,
b
是它的下一个近邻。Pyton或R中是否有任何包输出类似于
[a,b]
的内容,这意味着a是其最近邻(可能通过多数票),而b是其第二最近邻。

这正是这些度量树的构建目的

您的问题是,您正在使用sklearn(根据您所使用的度量标准,考虑BallTree)来询问一些简单的问题:

将numpy导入为np
从sklearn.KDTree导入
X=np.数组([[1,1],[2,2],[3,3]])#2维中的3个点
tree=KDTree(X)
dist,ind=tree.query([[1.25,1.35]],k=2)
打印(ind)#两个最近邻的索引
打印(距离)#到两个最近邻居的距离
输出:

需要明确的是:KNN通常是指一些基于度量树(KDTree,BallTree)的预构建算法,用于分类任务。通常,人们只对这些数据结构感兴趣

编辑

如果我正确地解释了您的评论,您希望使用

查找这些空间树的兼容性列表

你可以这样使用它:

X=np.数组([1,1],[2,2],[3,3]])#2维中的3个点
tree=KDTree(X,metric='l1')#!!!
dist,ind=tree.query([[1.25,1.35]],k=2)
打印(ind)#两个最近邻的索引
打印(距离)#到两个最近邻居的距离
输出:


这正是构建这些度量树的目的

您的问题是,您正在使用sklearn(根据您所使用的度量标准,考虑BallTree)来询问一些简单的问题:

将numpy导入为np
从sklearn.KDTree导入
X=np.数组([[1,1],[2,2],[3,3]])#2维中的3个点
tree=KDTree(X)
dist,ind=tree.query([[1.25,1.35]],k=2)
打印(ind)#两个最近邻的索引
打印(距离)#到两个最近邻居的距离
输出:

需要明确的是:KNN通常是指一些基于度量树(KDTree,BallTree)的预构建算法,用于分类任务。通常,人们只对这些数据结构感兴趣

编辑

如果我正确地解释了您的评论,您希望使用

查找这些空间树的兼容性列表

你可以这样使用它:

X=np.数组([1,1],[2,2],[3,3]])#2维中的3个点
tree=KDTree(X,metric='l1')#!!!
dist,ind=tree.query([[1.25,1.35]],k=2)
打印(ind)#两个最近邻的索引
打印(距离)#到两个最近邻居的距离
输出:


谢谢你能帮我插入我自己的距离度量吗?它是向量元素的距离矩阵?例如,如果我有两个向量[x1,x2]和[y2,y2],那么可以插入距离度量,该度量从距离矩阵中逐元素地获取向量之间的距离。因此,x和y之间的距离是| x1-y1 |+| x2-y2 |。如果我尝试使用返回float的dist函数dist(x,y)`tree=KDTree(x,metric=dist),则得到错误:ValueError:metric PyFuncDistance对kdtreethaks无效,需要帮助,但我需要自己的度量。我的向量的相似性是自定义的。数字只是某些特征的代码,特征1和2的距离为9,而1和3的距离为1……仅举一个例子。所有这些都保存在一个矩阵中,该矩阵将被更新,并且特征必须保持按原样编号。我已经问过这个问题了()但是没有回答,所以任何提示都是非常受欢迎的:)@spartan这是因为另一个问题太不正式了。你应该编辑它。更少的文本,更多的数学,更多的格式。@sacha-我希望这个问题现在是正确的,谢谢。你能帮我插入我自己的距离度量吗?它是向量元素的距离矩阵?例如,如果我有两个向量[x1,x2]和[y2,y2],那么可以插入距离度量,该度量从距离矩阵中逐元素地获取向量之间的距离。因此,x和y之间的距离是| x1-y1 |+| x2-y2 |。如果我尝试使用返回float的dist函数dist(x,y)`tree=KDTree(x,metric=dist),则得到错误:ValueError:metric PyFuncDistance对kdtreethaks无效,需要帮助,但我需要自己的度量。我的向量的相似性是自定义的。数字只是某些特征的代码,特征1和2的距离为9,而1和3的距离为1……仅举一个例子。所有这些都保存在一个矩阵中,该矩阵将被更新,并且特征必须保持按原样编号。我已经问过这个问题了()但是没有回答,所以任何提示都是非常受欢迎的:)@spartan这是因为另一个问题太不正式了。你应该编辑它。更少的文本,更多的数学,更多的格式。@sacha-我希望这个问题现在是正确的
[[0 1]]
[[ 0.43011626  0.99247166]]
[[0 1]]
[[ 0.6  1.4]]