Python 如何使用scikit learn pipeline和transformers在不同列上进行多个数据转换

Python 如何使用scikit learn pipeline和transformers在不同列上进行多个数据转换,python,scikit-learn,Python,Scikit Learn,我有一些虚拟数据,为了简单起见,其中有2个特征列和1个目标变量 l = [1.0,'category1',1] m = [5.0,'category2',0] n = [15.0,'category2',1] import pandas as pd df = pd.DataFrame([l,m,n], columns = ['feature1','feature2','target']) df.head() 现在我想在feature1上应用StandardScaler(),在feature2

我有一些虚拟数据,为了简单起见,其中有2个特征列和1个目标变量

l = [1.0,'category1',1]
m = [5.0,'category2',0]
n = [15.0,'category2',1]
import pandas as pd
df = pd.DataFrame([l,m,n], columns = ['feature1','feature2','target'])
df.head()

现在我想在
feature1
上应用
StandardScaler()
,在
feature2
上应用
onehotcodeding
。在我完成这两个步骤之后,我想使用scikit学习分类器训练一个模型。因此,我在培训过程中采取的步骤如下-

  • 功能1上的Fit_Transform StandardScaler
  • 在功能2上安装一个热编码器
  • Fit-ML分类器
  • 管道
    对象保存到磁盘
  • 然后,当我在看不见的数据集上进行评分时,下面是我想要采取的步骤-

  • 加载相同的
    管道
    对象
  • 将未看到的数据作为数据加载
  • 将加载的管道应用于看不见的数据
  • 在现实场景中,会有许多功能栏,如
    feature1、feature2等,。。。。功能n
    。我想使用scikit学习管道在不同的列上进行数据转换,我还想保存并重新加载这个管道

    我知道我们可以将数据作为一系列
    转换器
    步骤传递到管道,但我不知道如何在不同的列上实现
    不同的转换

    注意-在某些情况下,我希望在多个列上应用相同的转换器。例如,
    StandardScaler()
    可用于
    feature1
    feature100
    (假设两列都是数字)


    如何使用sckit学习管道实现这一点?

    ColumnTransformer
    。搜索相关问题,并查看文档。