Python: ошибка памяти при запуске fit_transform с помощью StandardScaler - PullRequest
0 голосов
/ 17 января 2019

У меня огромный набор данных с более чем 300 столбцами, и, поскольку 90% этих столбцов являются категоричными по своей природе, я решил быстро их кодировать, что привело к набору данных формы (466557, 1778). Я пытаюсь масштабировать эти данные, используя:

from sklearn import preprocessing as p
scaler = p.StandardScaler()
df_ss = scaler.fit_transform(df)

Однако я сталкиваюсь с ошибкой памяти.

MemoryError            Traceback (most recent call last)
<ipython-input-92-d766bc7d2870> in <module>()

Как я могу предотвратить это?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Не стандартные фиктивные переменные масштаба! Стандартное масштабирование выполняется для преобразования непрерывной переменной в переменную со средним 0 и стандартным отклонением 1.
Поскольку вы использовали кодирование One Hot, категориальные переменные теперь состоят только из 1 и 0 (1 для True, если эта двоичная переменная присутствует 0 для False, в противном случае):

Я мог бы также добавить, что у вас могут появиться другие ошибки памяти в процессе разработки, если ваш набор данных слишком велик. Проверьте каждую категориальную особенность и проверьте, не являются ли они порядковыми (вы можете заказать их), если они не используют один горячий кодировщик, а заменяют значения на число (в соответствии с порядком). Если вы работаете с категорией большой мощности, вы также можете использовать трюк хеширования. Но в более общем смысле я бы посоветовал вам искать более эффективные способы кодирования ваших категориальных переменных!

0 голосов
/ 17 января 2019

Возможно, вы могли бы попробовать масштабировать каждый ряд отдельно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...