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