我想知道如何选择特定点的最佳L邻居。就像说我需要选择5个邻居。有没有要更改的参数。
我想让它选择L点,其中:L = SQRT [数据集中的点数]
我有一个庞大的数据集,所以我可能会发现很多点与其他人相近,而其他人则远离他们。
L,要考虑的邻居数量,可以任意选择,或者 交叉验证。随着更多的训练数据,L可以更大,因为 训练数据在底层空间X中更加密集 在分类中不连续或非线性动力学,K应该是 更小,以捕捉这些更多的局部波动。
NearestNeighbors(algorithm='auto', leaf_size=30, n_neighbors=5, p=2,
radius=1.0, warn_on_equidistant=True)
答案 0 :(得分:2)
我想让它选择L点,其中:L = SQRT [数据集中的点数]
除非您自己计算样本数量及其平方根,否则这是不可能的。您只能将整数传递为n_neighbors
。
考虑可变数量的邻居的唯一方法是使用RadiusNeighbors{Classifier,Regressor}
,它采用距离截止而不是 k 参数。
答案 1 :(得分:1)
请尝试以下示例:
import numpy as np
rng = np.random.RandomState(42)
from sklearn.neighbors import NearestNeighbors
nnbrs = NearestNeighbors(n_neighbors=5)
points = rng.randn(500, 3)
nnbrs.fit(points)
point_of_interest = np.array([0, 1, 0])
distances, neighbor_indices = nnbrs.kneighbors(point_of_interest)
neighbors = points[neighbor_indices]
这是否获得了预期的结果?如果存在计算时间/内存问题,您应该在稀疏矩阵数据上尝试此操作并使用algorithm=
(请参阅文档)