sklearn如何知道“一键编码”哪些列?

时间:2019-10-25 00:28:54

标签: python machine-learning scikit-learn sklearn-pandas one-hot-encoding

我有一个数据集,其中有一些列为object类型,其他列为int或float。我知道我需要将对象列转换为伪变量,但我还有一些表示二进制数据的int和float列(已经为0和1)。 sklearn是否会将这些列解释为分类列?我不希望将它们视为连续变量。

1 个答案:

答案 0 :(得分:0)

OneHotEncoder未处理,因为这些列是类别类型。因此,所有馈送到OneHotEncoder的列都将转换为伪变量。

您可以参考示例here

如果您已经有二进制变量,则没有必要为其创建两个虚拟变量。

您可以使用make_column_transformer来指定需要一种热编码的列。

示例:

>>> import pandas as pd
>>> X = pd.DataFrame([['Male', 0], ['Female', 1], ['Female', 0]], columns=['gender', 'groups'])
>>> from sklearn.compose import make_column_transformer
>>> ct = make_column_transformer((OneHotEncoder(),[0])) #, remainder='passthrough'
>>> ct.fit_transform(X)
array([[0., 1.],
       [1., 0.],
       [1., 0.]])