Ошибка памяти при использовании fit_transform с OneHotEncoder - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь выполнить одно горячее кодирование категориальных столбцов в моем наборе данных. Я использую следующую функцию:

def create_ohe(df, col):
    le = LabelEncoder()
    a = le.fit_transform(df_new[col]).reshape(-1,1)
    ohe = OneHotEncoder(sparse=False)
    column_names = [col + "_" + str(i) for i in le.classes_]
    return (pd.DataFrame(ohe.fit_transform(a), columns=column_names))

Я получаю MemoryError при вызове функции в этом цикле:

for column in categorical_columns:
    temp_df = create_ohe(df_new, column)
    temp = pd.concat([temp, temp_df], axis=1)

Отслеживание ошибок:

MemoryError                               Traceback (most recent call last)
<ipython-input-40-9b241e8bf9e6> in <module>
      1 for column in categorical_columns:
----> 2     temp_df = create_ohe(df_new, column)
      3     temp = pd.concat([temp, temp_df], axis=1)
      4 print("\nShape of final df after one hot encoding: ", temp.shape)

<ipython-input-34-1530423fdf06> in create_ohe(df, col)
      8     ohe = OneHotEncoder(sparse=False)
      9     column_names = [col + "_" + str(i) for i in le.classes_]
---> 10     return (pd.DataFrame(ohe.fit_transform(a), columns=column_names))

MemoryError: 

1 Ответ

0 голосов
/ 04 ноября 2019

А-ч ошибка памяти означает, что либо ваш компьютер использует вашу память (ОЗУ) максимально, либо что питон находится на максимуме: Ошибки памяти и ограничения списка?

вы могли быпопробуйте разделить метод a = le.fit_transform(df_new[col]).reshape(-1,1). Попробуйте запустить b= le.fit(df_new[col]) так, чтобы ваш кодировщик этикеток соответствовал полному набору данных, а затем вы можете разделить его, чтобы не преобразовывать его для каждой строки в одно и то же время, возможно, это поможет. Если b= le.fit(df_new[col]) также не работает, у вас есть проблема с памятью, col, которую вы заменяете именами столбцов.

fit_transform - это комбинация fit и transform.

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