Ошибка памяти при вычислении попарных расстояний в scipy

Я пытаюсь применить иерархическую кластеризацию к моему набору данных, состоящему из 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. Есть идеи, почему?

6
задан Anony-Mousse 30 June 2012 в 11:40
поделиться