我正在尝试将层次聚类应用于我的数据集,该数据集由 14039 个用户向量组成。每个向量有 10 个特征,其中每个特征基本上是该用户标记的标签的频率。我正在使用 Scipy api 进行聚类。现在我需要计算这 14039 个用户之间的成对距离,并将 tis 距离矩阵传递给链接函数。
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 时我才会收到错误。任何想法为什么?