yan*_*hao 3 python scikit-learn
这是代码。
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]])
>distances
>array([[0. , 1. ],[0. , 1. ],[0. , 1.41421356], [0. , 1. ],[0. , 1. ],[0. , 1.41421356]])
Run Code Online (Sandbox Code Playgroud)
我不太了解“指数”和“距离”的形状。我如何理解这些数字的含义?
它实际上非常简单。对于kneighbors()(X此处)输入中的每个数据样本,它将显示 2 个邻居。(因为您已指定n_neighbors=2. Theindices将为您提供训练数据的索引(再次X在这里),distances并将为您提供训练数据中相应数据点的距离(索引所指的)。
以单个数据点为例。假设X[0]作为第一个查询点,答案将是indices[0]和distances[0]
所以对于X[0],
训练数据中第一个最近邻的索引为indices[0, 0] = 0,距离为distances[0, 0] = 0。您可以使用此索引值从训练数据中获取实际数据样本。
这是有道理的,因为你使用相同的数据进行训练和测试,所以每个点的第一个最近邻是它自己,距离是0。
第二个最近邻居的索引是indices[0, 1] = 1,距离是distances[0, 1] = 1
对于所有其他点也是如此。在第一维indices和distances对应于查询点和第二个维度邻居的数量要求。
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |