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