scikit-learn - 为什么 Skealearn-NearestNeighbors 返回奇怪/错误的结果?
问题描述
- 代码
from sklearn.neighbors import NearestNeighbors
import numpy as np
import matplotlib.pyplot as plt
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
plt.scatter(X[:,0], X[:,1])
nbrs = NearestNeighbors(n_neighbors=4, algorithm='kd_tree').fit(X)
distances, indices = nbrs.kneighbors(X)
print(indices)
print(distances)
print(nbrs.kneighbors_graph(X).toarray())
- 结果
[[0 1 2 3]
[1 0 2 3]
[2 1 0 3]
[3 4 5 0]
[4 3 5 0]
[5 4 3 0]]
[[0. 1. 2.23606798 2.82842712]
[0. 1. 1.41421356 3.60555128]
[0. 1.41421356 2.23606798 5. ]
[0. 1. 2.23606798 2.82842712]
[0. 1. 1.41421356 3.60555128]
[0. 1.41421356 2.23606798 5. ]]
[[1. 1. 1. 1. 0. 0.]
[1. 1. 1. 1. 0. 0.]
[1. 1. 1. 1. 0. 0.]
[1. 0. 0. 1. 1. 1.]
[1. 0. 0. 1. 1. 1.]
[1. 0. 0. 1. 1. 1.]]
对于最后三点,我认为第 4 个数据是最接近的。为什么代码返回最接近的第一个数据?
解决方案
我不知道最后三个点最接近第四个数据是什么意思。但是,如果您将 与distances
进行比较indices
,那么输出对我来说似乎是正确的。
推荐阅读
- java - java是否支持正则表达式中的重复子模式组号?
- visual-studio-code - VSCode 扩展主机意外终止 OSX Catalina
- html - 无法解析日期调用的签名
- angular - 角度 4 ng-bootstrap 模块的问题
- firebase - 圆形进度条颤动
- c# - 如何在 C# winform 中缓存 PictureBox 中的图像
- android - 如何在ViewPager android中设置片段的动态高度包含RecycleView?
- amazon-web-services - AWS Redshift sql 分组方式
- python - 在 Python 中读取 XML 块
- javascript - Bootstrap 4切换开关在vue中不起作用