Я пытаюсь применить SVD к моей матрице (3241 x 12596), которая была получена после некоторой обработки текста (с конечной целью выполнения скрытого семантического анализа), и я не могу понять, почему это происходит, поскольку мои 64 -битная машина имеет 16 ГБ ОЗУ. В момент вызова svd (self.A)
выдается ошибка. Точная ошибка приведена ниже:
Traceback (most recent call last):
File ".\SVD.py", line 985, in <module>
_svd.calc()
File ".\SVD.py", line 534, in calc
self.U, self.S, self.Vt = svd(self.A)
File "C:\Python26\lib\site-packages\scipy\linalg\decomp_svd.py", line 81, in svd
overwrite_a = overwrite_a)
MemoryError
Итак, я попытался использовать
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
, и на этот раз он выдает следующую ошибку:
Traceback (most recent call last):
File ".\SVD.py", line 985, in <module>
_svd.calc()
File ".\SVD.py", line 534, in calc
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
File "C:\Python26\lib\site-packages\scipy\linalg\decomp_svd.py", line 71, in svd
return numpy.linalg.svd(a, full_matrices=0, compute_uv=compute_uv)
File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 1317, in svd
work = zeros((lwork,), t)
MemoryError
Предполагается, что это такая большая матрица, которую Numpy не может обработать, и есть ли что-то, что я могу сделать на этом этапе без изменения самой методологии?