带有 ColumnTransformer 的 sklearn OneHotEncoder 导致稀疏矩阵代替创建假人

sklearn OneHotEncoder with ColumnTransformer resulting in sparse Matrix in place of creating dummies

我正在尝试使用 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>

当我使用以下方法将数据转换为数据帧后尝试查看数据时:

我做错了什么。我的数据如下所示:

您需要先将其转换为密集数组,然后再将其放入 data.frame,参见 help page

pd.DataFrame(df_transformed.toarray())

或者您将转换器设置为始终 return 密集阵列,请参阅 the sparse threshold option

transformer = ColumnTransformer([("enc", 
                                  enc,
                                  cat_features)],
                                  remainder="passthrough",sparse_threshold=0)