在使用机器学习的时候,往往需要对数据进行规范化处理,每一步都需要去执行,上一步执行完的数据传递给下一步执行数据,每一步生成的数据需要用一个变量来存储,这样子会繁琐的多,所幸,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形式数据