如何选择L个邻居

时间:2014-04-27 15:45:41

标签: python scikit-learn

我想知道如何选择特定点的最佳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)

2 个答案:

答案 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=(请参阅文档)