Одно горячее кодирование большого набора данных

Я хочу построить рекомендательную систему, используя правила ассоциации с априорным алгоритмом, реализованным в библиотеке mlxtend. В моих данных о продажах есть информация о 36 миллионах транзакций и 50 тысячах уникальных товаров. Я пытался использовать sklearn OneHotEncoder и pandas get_dummies(), но оба выдают ошибку OOM, поскольку не могут создать фрейм в форме (36 mil, 50k)

MemoryError: Unable to allocate 398. GiB for an array with shape (36113798, 50087) and data type uint8

Есть ли другое решение?


person psowa001    schedule 30.09.2020    source источник


Ответы (1)


Я думаю, что хорошим решением было бы использовать вложения вместо горячего кодирования для вашей проблемы. Кроме того, я рекомендую вам разбить набор данных на более мелкие подмножества, чтобы еще больше избежать проблем с потреблением памяти.

Вам также следует обратиться к этой теме: https://datascience.stackexchange.com/questions/29851/one-hot-encoding-vs-word-embeding-when-to-choose-one-or-another

person Timbus Calin    schedule 30.09.2020