【问题标题】:sklearn: chaining multiple transformers with ColumnTransformersklearn:使用 ColumnTransformer 链接多个转换器
【发布时间】:2021-02-10 13:29:38
【问题描述】:

如何使用 ColumnTransformer API 将多个转换器应用于单个 pandas DataFrame 列?

例如,我想取三次根,然后标准化 DataFrame 列中的值:

df = pd.DataFrame(
  np.array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]),
  columns=['a', 'b', 'c']
)
transformer = ColumnTransformer(
  [
    ('root3_std', StandardScaler() + FunctionTransformer(np.cbrt), 'a') <-- pseudocode
  ],
  remainder='passthrough'
)

如果我写

transformer = ColumnTransformer(
  [
    ('root3', FunctionTransformer(np.cbrt), 'a'),
    ('standardize', StandardScaler(), 'a')
  ],
  remainder='passthrough'
)

我得到两个单独的列,一个具有三次根,另一个具有标准化的原始值。如何一次性应用两个转换器?

【问题讨论】:

  • 从sklearn.pipeline尝试Pipeline

标签: python pandas machine-learning scikit-learn


【解决方案1】:
from sklearn.pipeline import Pipeline
import pandas as pd
import numpy as np
from sklearn.preprocessing import FunctionTransformer, StandardScaler

df = pd.DataFrame(
np.array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]),
columns=['a', 'b', 'c']
)


pipe = Pipeline([('function_transformer', FunctionTransformer(np.cbrt)), 
                 ('standard_scalar', StandardScaler())])

pipe.fit_transform(df[['a']])

#op
array([[-1.32381804],
   [ 0.23106179],
   [ 1.09275626]])

【讨论】:

    猜你喜欢
    • 2021-06-17
    • 2020-06-30
    • 2021-09-26
    • 2020-04-02
    • 2023-03-18
    • 2019-06-07
    • 2020-12-29
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多