Проблема с памятью LabelEncoder() scikit-learn

У меня есть train pandas df с 20 миллионами строк и test pandas df с примерно 10 миллионами строк.

В обоих df есть столбцы, к которым я хочу применить LabelEncoder(), но я продолжаю получать Memory Error на своем ноутбуке и даже на экземпляре AWS с 64 ГБ ОЗУ.

Есть ли способ, которым я могу справиться с этим по частям, не теряя отображения?

Вот код, который я использовал:

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

for col in cols_to_encode:
    le.fit(list(train[col])+list(test[col]))
    train[col] = le.transform(train[col])
    test[col] = le.transform(test[col])

Я взял 500 000 строк из каждого и смог запустить код без ошибок, поэтому я знаю, что это не синтаксическая ошибка или что-то в этом роде.

Любая помощь будет принята с благодарностью.


person Kevin Zakka    schedule 20.07.2016    source источник


Ответы (1)


Я раньше не использовал LabelEncoder, но по работе со Sklearn знаю, что есть варианты, которые могут помочь распараллелить. Вы пробовали распараллелить эту задачу? Либо используя такой параметр, как n_jobs, который есть у многих классификаторов sklearn, либо даже библиотеку многопроцессорной обработки python.

person danialcala    schedule 20.07.2016
comment
Первое, что я сделал, это проверил параметр n_jobs, но, похоже, для этой функции он не существует. Обычно n_jobs предназначен для классификаторов, а не вспомогательных функций. - person Kevin Zakka; 20.07.2016