2014-04-27 63 views
0

我想知道如何選擇特定點的最佳L個鄰居。就像說我需要選擇5個鄰居。是否有任何參數需要更改?如何選擇L個鄰居

我想讓它選擇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

你的代碼不能這樣工作。請在列表的元組周圍添加方括號,使其成爲列表的列表,並將其傳遞給'np.array'。此外,請讓您的問題更加準確,並告訴我們您嘗試了什麼,出了什麼問題。 – eickenberg

+0

「我想知道如何選擇特定點的最佳L個鄰居,比如說我需要選擇5個鄰居,是否有任何參數要改變。」 – user3378649

+1

你爲什麼給出一個例子a)不起作用,b)不代表你正試圖解決的問題。你到目前爲止嘗試過什麼,問題在哪裏? – eickenberg

回答

2

我想讓它選擇L點,其中:L = SQRT [點的數量數據集]

這是不可能的,除非你自己計算樣本的數量和它的平方根。您只能傳遞一個整數爲n_neighbors

將可變數量的鄰居考慮進去的唯一方法是使用RadiusNeighbors{Classifier,Regressor},它取距離截止值而不是參數k參數。

+0

簡單而好的答案。 – user3378649

+1

讓我對這個問題有所瞭解的好回答。謝謝。 – eickenberg

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=玩(見文檔),如果有計算時間/內存問題