【问题标题】:Dummy Encoding Using ColumTransformer使用 ColumTransformer 进行虚拟编码
【发布时间】:2019-09-04 18:44:15
【问题描述】:

我刚开始学习机器学习,正在看一个教程,其中导师使用 OneHotEncoder 进行虚拟编码(他给出的原因是分类特征最终不会在它们之间产生关系,例如西班牙(值 2)大于法国(值 1)。代码如下:

Dataset = pandas.read_csv('Data.csv')
X = Dataset.iloc[:,:3].values
onehotencoder = OneHotEncoder( categorical_features=[0])
onehotencoder.fit_transform(X).toarray()

在 PyCharm 上尝试此操作时,我收到以下警告:

弃用警告:“categorical_features”关键字已弃用 在 0.20 版本中,将在 0.22 中删除。您可以使用 ColumnTransformer 代替。 "改用 ColumnTransformer。", 弃用警告)

所以我去查找了 ColumnTransformer 的文档,但我不明白如何去做。

【问题讨论】:

  • 请看How to Ask,没给的代码无法调试。
  • 另外这是一个警告,而不是错误

标签: python machine-learning


【解决方案1】:

ColumnTransformer 的文档可以是 found here。 您将OneHotEncoder 传递给transformer 参数,就好像您正在创建Pipeline

以下是如何使用它的示例。

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

transformer = ColumnTransformer(
    transformers=[
        ("OneHot",        # Just a name
         OneHotEncoder(), # The transformer class
         [0]              # The column(s) to be applied on.
         )
    ]
)

X = [
    ['a', 0],
    ['b', 1],
    ['a', 2]
]

print(transformer.fit_transform(X))

> [[1. 0.]
>  [0. 1.]
>  [1. 0.]]

【讨论】:

    【解决方案2】:

    ColumnTransformer 的文档 检查它的示例。 # TODO: 创建一个 LabelEncoder 对象并将其拟合到 X 中的每个特征

    # import preprocessing from sklearn
    from sklearn import preprocessing
    # 1. INSTANTIATE
    # encode labels with value between 0 and n_classes-1.
    le = preprocessing.LabelEncoder()
    # 2/3. FIT AND TRANSFORM
    # use df.apply() to apply le.fit_transform to all columns
    X_2 = X.apply(le.fit_transform)
    X_2.head()
    

    如果您想查看端到端示例,请check

    【讨论】:

      猜你喜欢
      • 2018-03-13
      • 2020-11-12
      • 2016-07-15
      • 1970-01-01
      • 2020-12-08
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多