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(features)'は* exact *と等しいですか? – gsamaras

+0

https://github.com/scikit-learn/scikit-learn/blob/14031f6/sklearn/neighbors/base.py#L269 k-ネイバー機能のリンク –

答えて

-1

あなたが最初のケースでn_neigbors=n_samplesを供給する際に、各点の距離メトリック計算の合計数は1です。しかし、あなたはn_neigbors=21を行うときに計算の数が多く、折り目を高めるコンビネーションC(n_samples, n_neigbors)あるので、多分これがあります。これはランタイムの増加につながります。最も近いNeigborsのアルゴリズムを見てください。あなたはそれを通過することによっていくつかの明確さを得ることを願っています。

+0

私は既にドキュメント[NearestNeighbors](http:///scikit-learn.org/stable/modules/neighbors.html)。行列計算の情報はありません。 –

関連する問題