Python skicit学习k-最近邻-三维距离矩阵

Python skicit学习k-最近邻-三维距离矩阵,python,scikit-learn,distance,nearest-neighbor,Python,Scikit Learn,Distance,Nearest Neighbor,我正在研究3D环境中数千个球形物体的距离。我使用numpy在球体之间创建了一个距离矩阵,在使用k-最近算法之前,我最初希望在3D环境中的所有对象中选择某些距离,例如最近的5个距离。有没有像kneighbors输出那样使用索引和值而不使用k-最近算法的包?输入是一个预计算的距离矩阵,包含每个球体到所有其他对象的所有距离。通过将度量参数设置为“预计算”,您可以使用预计算的距离矩阵作为sklearn的邻居的输入。最近邻居 让我们在某些三维空间(或任何三维空间)中的6个点之间创建虚拟距离矩阵 请阅读更多

我正在研究3D环境中数千个球形物体的距离。我使用numpy在球体之间创建了一个距离矩阵,在使用k-最近算法之前,我最初希望在3D环境中的所有对象中选择某些距离,例如最近的5个距离。有没有像kneighbors输出那样使用索引和值而不使用k-最近算法的包?输入是一个预计算的距离矩阵,包含每个球体到所有其他对象的所有距离。

通过将度量参数设置为“预计算”,您可以使用预计算的距离矩阵作为sklearn的
邻居的输入。最近邻居

让我们在某些三维空间(或任何三维空间)中的6个点之间创建虚拟距离矩阵


请阅读更多相关信息。

您希望输出什么?前5个最近邻?是的,我可以通过使用预计算矩阵的kneighbors_图来获得最近的5个距离,但我必须手动选择值和索引,例如……0 18.89178246 0 0 0 0 0 0 0 0 0 0 0 0 0 16.86311006 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…->0=可能的邻居,但不是最近的5个距离,value=索引xyz处最近的5个距离中的一个->最佳可能输出:数组中的5个值和索引您可以通过相应设置参数,使用预计算的距离矩阵找出最近的邻居。检查我的答案。嗨,阿克谢,非常感谢你,我把“预计算”的论点放错了地方,所以它不起作用。你救了我整整一周!!!
from sklearn.neighbors import NearestNeighbors

#Distance matrix from numpy (dummy)
precomputed_distances = np.random.random((6,6)) 

#Get top 5 neighbours from precomputed distance matrix
nn = NearestNeighbors(n_neighbors=5, metric='precomputed')
nn.fit(precomputed_distances)

#Fetch kneighbors
distances, indexes = nn.kneighbors()

print(indexes)
print('')
print(distances)
#neighbours indexes
[[2 5 3 1 4]
 [0 4 3 2 5]
 [5 3 0 1 4]
 [1 2 4 0 5]
 [3 1 2 5 0]
 [3 2 0 1 4]]

#distances
[[0.07355072 0.30327092 0.32645641 0.54227088 0.76145093]
 [0.06451358 0.13867276 0.7570105  0.84383876 0.92184049]
 [0.52953184 0.59474913 0.63211483 0.80958676 0.99361867]
 [0.10885239 0.31822021 0.39327313 0.47670755 0.6764581 ]
 [0.18309627 0.69483384 0.74029263 0.82705113 0.92923248]
 [0.28584336 0.42956108 0.43323451 0.64124948 0.90154176]]