Pipeline可以将许多算法模型串联起来,比如将特征提取、归一化、分类组织在一起形成一个典型的机器学习问题工作流。主要带来两点好处:
直接调用fit和predict方法来对pipeline中的所有算法模型进行训练和预测。
可以结合grid search对参数进行选择。
如下所示,在models中放置了线性回归,岭回归,Lasso回归,以及弹性网络回归四个模型。需要注意的是后面三个后置的cv表示其附带有交叉验证过程,参数的变化范围是alphas的值。弹性网络额外包含一个l1_ratio为L1正则项的权重,l2正则项的权重为1-l1_ratio.
一个pipeline中一般包含标准化、多项式拓展、以及回归算法几个部分。
models = [
Pipeline([
('Poly', PolynomialFeatures(include_bias=False)),
('Linear', LinearRegression(fit_intercept=False))
]),
Pipeline([
('Poly', PolynomialFeatures(include_bias=False)),
# alpha给定的是Ridge算法中,L2正则项的权重值,也就是ppt中的兰姆达
# alphas是给定CV交叉验证过程中,Ridge算法的alpha参数值的取值的范围
('Linear', RidgeCV(alphas=np.logspace(-3,2,50), fit_intercept=False))
]),
Pipeline([
('Poly', PolynomialFeatures(inc