scikit中pipeline的作用

来源:互联网 发布:华为商务软件 编辑:程序博客网 时间:2024/06/08 07:50
pipeline为方便处理数据,提供了两种模式:串行化和并行化
1、串行化,通过Pipeline类实现


通过steps参数,设定数据处理流程,格式为('key','value'),key为这一step设定的名称,value是对应的处理类。通过list将这些step传入。前n-1个step必须为transform函数,最后的step可有可无,一般为模型,pipeline继承了最有一个函数的所有方法。

from sklearn.pipeline import Pipelinefrom sklearn.svm import SVCfrom sklearn.feature_selection import SelectKBestfrom sklearn.feature_selection import f_regressionfrom sklearn.datasets import samples_generatorx, y = samples_generator.make_classification(n_informative=5, n_redundant=0, random_state=42)anova_filter = SelectKBest(f_regression, k=5)clf = SVC(kernel='linear')anova_svm = Pipeline([('anova', anova_filter), ('svc', clf)])anova_svm.set_params(anova__k=10, svc__C=0.1).fit(x ,y) #anova__k 下划线是两个,前缀是在pipeline中的名称,后缀是函数中的参数。注意大小写score = anova_svm.score(x, y)print(score)

make_pipeline是pipeline的简单实现,只需传入每个step的函数名即可,不需要也不允许自己命名,自动转化为小写

2、并行化,通过FeatureUnion实现


和Pipeline形式一样,不同的是将每一个step分开计算,最后将这些结果合并在一块,返回一个数组。


make_union是FeatureUnion的简单实现,和make_pipeline的形式一样
阅读全文
0 0