sklearn DictVectorizer, проблема с преобразованием категориальных переменных pd dataframe в строку - PullRequest
0 голосов
/ 21 марта 2020

Я хочу сделать одно горячее кодирование с моими категориальными данными, используя DictVectorizer:

import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer as DV

X_cat = X[categorical_cols].fillna('NA').applymap(str)

encoder = DV(sparse = False)
X_cat_oh = encoder.fit_transform(X_cat.T.to_dict().values())

Где X - мой фрейм данных. Но когда я использую applymap, либо ошибка памяти, либо что-то работает неправильно (X_cat_oh имеет форму (6000, 5930), когда это должно быть (6000, 351))

Я также пытался:

X_cat = X[categorical_cols].fillna('NA')
X_cat.apply(str, axis=1)

и

X_cat = X[categorical_cols].fillna('NA')
X_cat.astype('str')

Но в последних 2 случаях результат X_cat_oh включает не только 0 и 1, но также некоторые случайные числа, что также неверно.

Как я Понятно, что проблема заключается в преобразовании категориальных столбцов типа в строку. Как правильно это сделать? И что мне делать, если есть другая проблема?

Python 3.7.3

numpy версия 1.18.1, pandas версия 1.0.1, sklearn версия 0.22.2 .

...