我正在嘗試將層次聚類應用於由14039個用戶組成的數據集。每個矢量具有10個特徵,其中每個特徵基本上是由該用戶標記的標籤的頻率。 我使用Scipy API進行聚類。 現在我需要計算這14039個用戶之間的成對距離,並將距離矩陣傳遞給聯動函數。計算scipy中成對距離時的內存錯誤
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用戶不應該太多,它應該導致內存錯誤。 我在i3和4 Gb Ram上運行它。 我也需要應用DBScan集羣,但也需要距離矩陣作爲輸入。
任何建議表示讚賞。
編輯:只有當我打印Y時纔會出錯。任何想法爲什麼?
我想你錯過了他的編輯。只有在嘗試打印整個距離矩陣時纔會出錯。它正在構建耗盡他的記憶的巨大絃樂。 – agf 2012-04-12 00:09:24
我做到了。答案更新以反映編輯。謝謝! – 2012-04-12 04:38:08
預先編輯的答案對於相關問題確實很有幫助。請保留這個答案,以便我可以將其他問題鏈接到它。 – ximiki 2018-01-23 16:36:29