Я пытаюсь применить иерархическую кластеризацию к моему набору данных, состоящему из 14039 векторов пользователей. Каждый вектор имеет 10 функций, где каждая функция в основном представляет собой частоту тегов, отмеченных этим пользователем. Я использую Scipy API для кластеризации. Теперь мне нужно вычислить попарные расстояния между этими 14039 пользователями и передать эту матрицу расстояний в функцию связи.
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
Есть идеи, как это исправить? Мой набор данных слишком велик? Но я думаю, что кластеризация 14 тыс. пользователей не должна быть слишком большой, чтобы вызвать ошибку памяти. Я запускаю его на i3 и 4 Gb Ram. Мне также нужно применить кластеризацию DBScan, но для этого также нужна матрица расстояний в качестве входных данных.
Приветствуются любые предложения.
Изменить :Я получаю сообщение об ошибке только тогда, когда печатаю Y. Есть идеи, почему?