Numpy.core._exceptions.MemoryError: невозможно выделить место для массива

ошибка

numpy.core._exceptions.MemoryError: Unable to allocate 362. GiB for an array with shape (2700000, 18000) and data type float64

https://www.kaggle.com/datasets/netflix-inc/netflix-prize-data

Я работаю над этим набором данных о призах netflix, в котором много фильмов и идентификаторов пользователей. Моя работа заключается в применении матричной факторизации, поэтому мне нужно создать матрицу 2700000 X 18000, в которой хранится int в диапазоне от 1 до 5. Я пробовал много способов, но все еще не смог чтобы создать матрицу такого размера, попытался заставить ее быть uint8, но форма матрицы, которую я получаю, неверна, пожалуйста, помогите мне решить эту проблему.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
891
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша матрица 3 миллиона на 20000 должна быть разреженной, иначе вам понадобится компьютер с очень большим объемом памяти. Для одной копии полной реальной матрицы такого размера потребуется несколько сотен ГБ или даже несколько ТБ непрерывного пространства.

  1. Используйте более эффективное матричное представление, например разреженное scipy.sparse.csc_matrix. Вопрос в том, имеет ли матрица большинство из 0 баллов.
  2. Измените свой алгоритм для работы с подматрицами.

и как получить доступ к scipy.sparse.csc_matrix построчно или паре элементов? я пытался искать, но везде написано преобразовать в плотный или матричный, что я не могу сделать

Education 4Fun 26.11.2022 11:58

Лучше всего уже иметь обработанный кластер больших серверов, например. npz, который можно загрузить с помощью scipy.sparse.load_npz. Я проверил по вашей ссылке, что данные обучения поступили в более чем 17 000 файлов, которые объединены в 4 файла. Существует версия svd, которая может работать итеративно и получать данные меньшими порциями, spark.apache.org/docs/2.2.0/mllib-Dimensionity-Reduction.h‌​tml.

polkas 26.11.2022 12:22

моя цель - применить матричную факторизацию к рейтинговой матрице

Education 4Fun 26.11.2022 12:32

Другие вопросы по теме

Похожие вопросы

TypeError: дескриптор «collidelist» для объектов «pygame.Rect» не применяется к объекту «список»
Как я могу сделать так, чтобы начало оси x и начало оси y графика перекрывались в matplotlib?
Разделите одну строку на несколько строк данных за 6 часов на основе 15-минутного интервала времени в фрейме данных pandas
Я не могу показать даты в том же встраивании с python от discord BOT
Есть ли привязка Python к XML-базе данных Berkeley DB?
Введите количество учеников — введите имя, возраст, рост каждого ученика. Распечатать список в отсортированном порядке Имя(Abc)>Возраст(маленький-большой)>Рост (маленький-большой)
Пакет Python Latex не вставляет графику
Как преобразовать файл PDF в файл CSV с помощью Python Pandas
Мне нужно использовать точно такие же имена атрибутов для свойств в пользовательском классе предварительной обработки, которые наследуют scikit Learn BaseEstimator?
Как создать метод обновления для MongoDB