OneHotEncoder Несколько столбцов - PullRequest
0 голосов
/ 05 марта 2019

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

ohe1 = OneHotEncoder(categories = [list_names_data_rest.values],dtype = 'int8')
data_rest1 = ohe1.fit_transform(data_rest.values).toarray()

Здесь list_names_data_rest.values - массив формы (664,). У меня есть 664 уникальных функций, и я пытаюсь кодировать data_rest, что (5050,6). После кодирования я ожидаю форму (5050,664)

Я выполняю горячее кодирование для предварительно определенного набора функций, потому что я загружаю наборы данных кусками (из-за ограничений оперативной памяти) и мне хотелось бы, чтобы форма ввода в мою нейронную сеть была согласованной

Если я использую pd.get_dummies, в зависимости от моего набора данных, я могу получить разные категории и различную форму ввода для моего NN

ohe1.fit_transform требует фигуры (n_values, n_features), но я не знаю, как с этим справиться.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Если вы хотите использовать pd.get_dummies, есть возможность итеративно включать ваши кодировки для каждой партии.

Для вашей первой партии:

ohe = pd.get_dummies(data_rest, columns=['label_col'])

Для каждой последующей партии:

for b in batches:
    batch_ohe = pd.get_dummies(b, columns=['label_col'])
    ohe = pd.concat([ohe, batch_ohe], axis=0)

ohe = ohe.fillna(0)
0 голосов
/ 05 марта 2019

HashingVectorizer может быть хорошим решением для вашего случая. Он не зависит от количества входных функций, просто установите достаточно большой начальный размер.

...