内容简述
Pipeline可用于将多个估计量顺序链接到一个。这是有用的,因为处理数据通常有固定的步骤顺序,例如特征选择,归一化和分类。
Pipeline在这里有两个目的:
便捷:你只需要在你的数据上调用一次fit和predict,来匹配估计器的整个序列。
联合参数选择:您可以同时对流水线中所有估计量的参数进行网格搜索。
管道构造
1)基本形式:
Pipeline是使用(key, value)对的列表构建的,其中key是包含要给出此步骤的名称的字符串,value是估计器对象
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
estimators = [('reduce_dim', PCA()), ('clf', SVC())]
pipe = Pipeline(estimators)
2)简写形式:
from sklearn.pipeline import make_pipeline
from sklearn.naive_bayes import MultinomialNB
from sklearn.preprocessing import Binarizer
make_pipeline(Binarizer(), MultinomialNB())
参数修改
可以使用<estimator>__<parameter>语法访问流水线中的估计器的参数 :
pipe.set_params(clf__C=10)
pipline用于网格搜索
from sklearn.model_selection import GridSearchCV
#形式:{估计器别名1__参数名称:参数列表,估计器别名2__参数名称:参数列表}
params = dict(reduce_dim__n_components=[2, 5, 10], clf__C=[0.1, 10, 100])
grid_search = GridSearchCV(pipe, param_grid=params)
#还可以进行如下构造
from sklearn.linear_model import LogisticRegression
params = dict(reduce_dim=[None, PCA(5), PCA(10)], clf=[SVC(), LogisticRegression()], clf__C=[0.1, 10, 100])
grid_search = GridSearchCV(pipe, param_grid=params)