14039 명의 사용자 벡터로 구성된 내 데이터 집합에 계층 적 클러스터링을 적용하려고합니다. 각 벡터에는 10 개의 기능이 있습니다. 각 기능은 기본적으로 해당 사용자가 태그 한 태그의 빈도입니다. 클러스터링을 위해 Scipy API를 사용하고 있습니다. 이제이 14039 명의 사용자 사이의 쌍 거리를 계산하고 링크 매트릭스 함수에 거리 매트릭스를 전달해야합니다.scipy에서 pairwise distance를 계산할 때 메모리 오류가 발생합니다.
import scipy.cluster.hierarchy as sch
Y = sch.distance.pdist(allUserVector,'cosine')
set_printoptions(threshold='nan')
print Y
하지만 내 프로그램은 나를 MemoryError의 거리 매트릭스를
File "/usr/lib/pymodules/python2.7/numpy/core/numeric.py", line 1424, in array_str
return array2string(a, max_line_width, precision, suppress_small, ' ', "", str)
File "/usr/lib/pymodules/python2.7/numpy/core/arrayprint.py", line 306, in array2string
separator, prefix)
File "/usr/lib/pymodules/python2.7/numpy/core/arrayprint.py", line 210, in _array2string
format_function = FloatFormat(data, precision, suppress_small)
File "/usr/lib/pymodules/python2.7/numpy/core/arrayprint.py", line 392, in __init__
self.fillFormat(data)
File "/usr/lib/pymodules/python2.7/numpy/core/arrayprint.py", line 399, in fillFormat
non_zero = absolute(data.compress(not_equal(data, 0) & ~special))
MemoryError
어떤 생각을 계산하면서 어떻게이 문제를 해결하는 준다? 내 데이터 세트가 너무 큽니까? 하지만 클러스터링 14k 사용자가 너무 많은 메모리 오류가 발생합니다 shouldnt 같아요. i3 및 4GB 램에서 실행 중입니다. DBScan 클러스터링도 적용해야하지만 거리 매트릭스도 입력해야합니다.
의견을 보내 주시면 감사하겠습니다.
편집 : Y를 인쇄 할 때만 오류가 발생합니다. 왜 그런가?
나는 그의 편집을 놓쳤다 고 생각합니다. 전체 거리 행렬을 인쇄하려고 할 때만 오류가 발생합니다. 그것은 그의 기억을 다 써 버리고있는 거대한 끈을 만들고 있습니다. – agf
내가 그랬어. 수정 사항을 반영하도록 답변이 업데이트되었습니다. 감사! –
사전 편집 된 답변은 관련 문제에 큰 도움이되었습니다. 이 질문에 대한 링크를 달아주세요. – ximiki