SciPy.Spatial에서 KDQuery 함수로 재생 중입니다. 데이터 크기가 커지면 문제가 발생합니다. 알고리즘이 대형 데이터 세트에 대해 효율적으로 설계되지는 않았지만 크기가 출력에만 영향을 미치고 출력에는 영향을 미치지 않아야한다는 것을 소스에서 알 수 있습니다. (는 ValueError list.remove (X)리스트에없는 X)Scipy.Spatial.KDTree.query - 대용량 데이터 세트 문제
sizes = [ 10**i for i in range(5,6) ] #10^5 for this test
data = np.random.random_integers(0,100,(sizes[-1],2))
for size in sizes:
kd = ps.common.KDTree(data)
nnq = kd.query(data,k=2+1, p=2)
info = nnq[1] #This is the indices of the neighbors
neighbors = {}
idset = np.arange(len(info)) #Indices of the input point
for i, row in enumerate(info):
row = row.tolist()
row.remove(i)
neighbors[idset[i]] = list(row)
이 난 목록에없는 값의 오류를 반환 여기
는 코드이다. 10^5 미만의 데이터 크기의 경우이 코드는 예상대로 작동합니다.오류의 가능한 원인 중 하나는 재귀 한계에 도달했기 때문입니다. 이것을 탐색하기 위해 재귀 깊이를 1,000,000 (sys.setrecursionlimit(1000000)
)으로 설정했습니다. 이것은 문제를 완화하지 않습니다.
'ps.common' 네임 스페이스 란 무엇입니까? –
모듈 수준의 가져 오기를 처리하는 또 다른 파일 – Jzl5325