sklearn:使用列式变压器链接多个变压器

2024-06-13 01:31:25 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用ColumnTransformer API将多个转换器应用于单个数据帧列

例如,我想取立方根,然后标准化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'
)

我得到两个独立的列,一个是立方根,另一个是标准化的原始值。如何一次应用两个变压器


Tags: 数据apidataframedfnparraypdtransformer
1条回答
网友
1楼 · 发布于 2024-06-13 01:31:25
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]])

相关问题 更多 >