1

我想要計算數據集中每個N項目的前20個相似項目。 每個項目都使用M的特徵來表示因此數據大小爲N_items X M_features爲什麼NearestNeighbors(SKlearn)在n_neighbors少於項目總數時需要更多時間?

當我沒有指定n_neighbors(默認值是5)時,kneighbors函數需要很多時間。 但是,當我指定n_neighbors = N_items時,它幾乎立即給出結果。

NN_object = NearestNeighbors()需要很多時間才能找到kneighbors,但NN_object = NearestNeighbors(n_neighbors=N_items)可以很快得出結果。

任何人都可以解釋幕後發生了什麼?

PS:N_items在我的情況是〜50KM_features〜10K

+0

等什麼? 'len(特徵)'等於什麼*完全*? – gsamaras

+0

https://github.com/scikit-learn/scikit-learn/blob/14031f6/sklearn/neighbors/base.py#L269鏈接爲k鄰居功能 –

回答

-1

也許這是因爲當你在第一種情況下提供n_neigbors=n_samples,每個點的距離度量計算,總數爲組合C(n_samples, n_neigbors)是1.但是,當你這樣做n_neigbors=21然後計算的數量增加許多倍量。這屬於增加的運行時間。看看最近的鄰居的算法。希望你通過它可以得到一些清晰。

+0

我已經看過文檔[NearestNeighbors](http:/ /scikit-learn.org/stable/modules/neighbors.html)。沒有矩陣計算的信息。 –

相關問題