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입니다. 첫 번째 경우에 n_neigbors=n_samples를 제공 할 경우, 각 지점에 대한 거리 메트릭 계산의 총 수는 1입니다 조합C(n_samples, n_neigbors)입니다하지만 당신은 다음 n_neigbors=21을 수행 할 때 계산의 수가 많은 주름을 증가하기 때문에

+0

기다려주세요. 'len (features)'는 * 정확히 * 무엇입니까? – gsamaras

+0

https://github.com/scikit-learn/scikit-learn/blob/14031f6/sklearn/neighbors/base.py#L269 k- 이웃 기능 링크 –

답변

-1

은 어쩌면이다. 이 속성은 런타임의 증가를 의미합니다. 가장 가까운 neigbors에 대한 알고리즘을 살펴보십시오. 희망을 통해 그것을 통해 약간의 명확성을 얻을 수 있습니다.

+0

문서 [NearestNeighbors] (http :// /scikit-learn.org/stable/modules/neighbors.html). 행렬 계산에 대한 정보는 없습니다. –

관련 문제