#python-3.x #numpy #large-data #svd #eigenvalue
#python-3.x #numpy #большие данные #svd #собственное значение
Вопрос:
У меня есть большая матрица (прямо сейчас около 450000 x 50, может быть, даже больше), и я хочу вычислить ее разложение по SVD. Матрица не разреженная, и numpy, похоже, не может с ней справиться и завершает работу с ошибкой памяти.
Я попробовал использовать np.float16, но это не помогло. пакет таблиц python, похоже, тоже не может помочь (поскольку мне нужно использовать всю матрицу позже, чтобы найти собственные значения).
У кого-нибудь из вас есть идея, как я могу вычислять и использовать массивные матрицы?
Комментарии:
1. Пожалуйста, опубликуйте код, который вы пробовали до сих пор, так будет намного проще помочь вам.
2. Распространенным подходом к решению таких проблем является создание эскизов . Одним из примеров является аппроксимация вашей матрицы путем выборки некоторых столбцов, а затем вычисления SVD на этой матрице меньшего размера (после соответствующего масштабирования). Это , пожалуй, самое известное введение в тему. Если вам нужно более подробное объяснение, вы могли бы попробовать опубликовать в math stackexchange.
3. На данный момент я использовал быстрое решение, применив выделение объектов (по строкам). Я попробую сделать набросок, если мое решение не будет работать должным образом. @tch Спасибо!