Я пытаюсь выполнить кодирование для большого набора данных.
Вот процесс на данный момент.
1. Разделенные числовые и категориальные переменные.
X = df.select_dtypes(include=['int64', 'float64'])
label_data = df.select_dtypes(include=['object', 'category'])
label_counts = label_data.T.apply(lambda x: x.nunique(), axis=1)
магазин меток
feature_labels = pd.Series(X.columns.values)
enc_labels = pd.Series(label_data.columns.values)
Факторизация столбцов, имеющих более 2 категорий
enocoded_cols = pd.DataFrame()
for col in label_counts[label_counts > 2].index:
enco = pd.factorize(label_data[col])
enocoded_cols[col] = enco[0]
OneHotEncoding
ohEncoder = OneHotEncoder()
ohEncoder.fit(enocoded_cols)
enocoded_cols = ohEncoder.transform(enocoded_cols).toarray()
Добавить закодированные столбцы обратно к числовому значению df
X = X.join(pd.DataFrame(enocoded_cols, index=X.index))
В процессе работы создано 73 новых столбца с именами 0-72.Я пробовал разные способы сохранить имена меток, но не работал во всем процессе кодирования.
Ценю любые советы, как этого добиться простым способом.
Спасибо!