sklearn OneHotEncoder с ColumnTransformer, что приводит к разреженной матрице вместо создания манекенов

Я пытаюсь преобразовать категориальное значение в целое число с помощью OneHotEncoder и ColumnTransformer. Насколько я понимаю, он должен создавать манекены для столбцов категорий, таких как pd.get_dummies. В моем файле ~ 1500 записей и 10 столбцов.

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
cat_features=['COMPANY_NAME', 'BRAND_NAME']
enc=OneHotEncoder()

transformer = ColumnTransformer([("enc", 
                                  enc,
                                  cat_features)],
                                  remainder="passthrough")
df_transformed = transformer.fit_transform(df_model)
df_transformed)

Результат:

<1574x37 sparse matrix of type '<class 'numpy.float64'>'
    with 15513 stored elements in Compressed Sparse Row format>

Когда я пытаюсь просмотреть данные после их преобразования в фрейм данных, используя:

введите описание изображения здесь

Что не так делаю. Мои данные выглядят примерно так:

введите описание изображения здесь


person Saurabh    schedule 14.12.2020    source источник


Ответы (1)


Вам необходимо преобразовать его в плотный массив, прежде чем помещать в data.frame, см. страницу справки:

pd.DataFrame(df_transformed.toarray())

Или вы устанавливаете преобразователь так, чтобы он всегда возвращал плотный массив, см. вариант разреженного порога

transformer = ColumnTransformer([("enc", 
                                  enc,
                                  cat_features)],
                                  remainder="passthrough",sparse_threshold=0)
person StupidWolf    schedule 15.12.2020