【问题标题】:How does sklearn know which columns are One-Hot encoded?sklearn 如何知道哪些列是 One-Hot 编码的?
【发布时间】:2020-02-21 08:16:38
【问题描述】:

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

【问题讨论】:

  • "sklearn" 具有处理数据的函数和类。 “Sklearn”不会这样解释您的数据框

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


【解决方案1】:

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.]])

【讨论】:

    猜你喜欢
    • 2021-02-23
    • 2017-03-27
    • 2017-02-16
    • 2018-03-29
    • 2019-08-13
    • 1970-01-01
    • 2020-05-25
    • 2017-06-21
    • 1970-01-01
    相关资源
    最近更新 更多