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