sklearn的pipeline管道机使用及原理

在使用机器学习的时候,往往需要对数据进行规范化处理,每一步都需要去执行,上一步执行完的数据传递给下一步执行数据,每一步生成的数据需要用一个变量来存储,这样子会繁琐的多,所幸,python有pipline管道机制

Pipeline管道机制

Pipeline管道机制,顾名思义,它就像水管一样,数据就像水一样,在管道之间流动,Pipline的每一步就将一节节水管,数据经由这一节水管留到下一节水管,流向下一节水管的就是经由上一节水管处理后的数据

Pipline使用方法

Pipeline流水线作业,每一步都采用(‘名称’,步骤)的方式表示。
例如:

from sklearn.pipeline import Pipeline    # 导入sklearn中的Pipeline
from sklearn.preprocessing import StandardScaler   # 将数据均值移除,变为均值为0,方差为1的数据
from sklearn.decomposition import PCA  
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
data = load_iris()
y = data.target
x = data.data
train_x, test_x, train_y, test_y = train_test_split(x,y, test_size=0.30, stratify = y)
pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('pca', PCA()),
    ('randomforestclassifier', RandomForestClassifier())
])
pipeline.fit(data.data,data.target)
print(pipeline.score(test_x,test_y))

# 输出
0.9777777777777777

注意点

  • 除了最后一个tansform,其余的transform必须实现fit_transform函数
  • 在自定义transform类时,必须要实现fit_transform函数,因为fit_transform是下一个transform的参数
  • 每一步transform返回的值是numpy的array形式数据

你可能感兴趣的:(机器学习,Pipeline,sklearn)