Как сохранить значения меток в pd.factorize с последующим процессом OneHotEncoding? - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь выполнить кодирование для большого набора данных.

Вот процесс на данный момент.

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.Я пробовал разные способы сохранить имена меток, но не работал во всем процессе кодирования.

Ценю любые советы, как этого добиться простым способом.

Спасибо!

...