【发布时间】:2021-11-02 19:33:22
【问题描述】:
我正在尝试使用带有 OneHotEncoder 的 Column Transformer 来转换我的分类数据:
快速查看我的数据:
我想对 3 个特征进行一次热编码:'sex'、'smoker'、'region',所以我使用 scikit-learn 的 Column Transformer。 (我不想分开数字和分类,而不是单独转换它们,我只想在单个数据集上执行它们)
我的代码:
cat_feature = X.select_dtypes(include = 'object') #select only categorical columns
enc = ColumnTransformer([ ('one_hot_encoder' , OneHotEncoder() , cat_feature ) ] ,
remainder = 'passthrough')
X_transformed = enc.fit_transform(X) # transformed version of original data
我的问题是,X_transformed 被删除了所有功能名称,这对我来说有点令人困惑:
那么在进行此转换后,无论如何要保留我的列名吗?我想将此转换器合并到管道中,因此我不能使用pd.get_dummies。
谢谢!!
【问题讨论】:
-
来自此链接:scikit-learn.org/stable/modules/generated/…。
ColumnTransformer的返回是list,您需要额外的库来解决您的问题。为什么你不能使用pandas? -
@user1740577 因为我想把它做成一个完整的管道,所以我不能使用pd.get_dummies
-
你看到我发的链接了吗?
-
是的,我看到了,但从我读过的内容来看,对我来说唯一有用的是
get_feature_names,但它只返回分类列的名称,它没有指定名称是什么在我的情况下,X_transformed的第 1 列。这就是为什么我真的想使用 pd.get_dummies 但这个不允许我将它放入 scikit-learn 管道中。 -
请详细说明
get_feature_names不够用的原因。它应该为所有列提供名称。
标签: python pandas machine-learning scikit-learn one-hot-encoding