pipeline 是对机器学习各个步骤进行封装的流水线式工作,按照封装顺序依次执行的一种机制,便于灵活调整多项式模型参数。
封装 pipeline 时包括以下几个流程:
使用多项式 PolynomialFeatures;
使用 StandardScaler 对特征进行标准化,使得各特征均值为 1,方差为 0;
可以使用 PAC 对特征进行选取;
对模型进行训练和验证。
下面来演示下在 Python 中是如何应用。
导入建模需要的库
# 导入管道机制
from sklearn.pipeline import Pipeline
# 导入多项式
from sklearn.preprocessing import PolynomialFeatures
# 数据标准化
from sklearn.preprocessing import StandardScaler
# 导入线性回归模型
from sklearn.linear_model import LinearRegression
# 划分测试集和训练集
from sklearn.model_selection import train_test_split
# 模型评估指标
from sklearn.metrics import mean_squared_error
# 数据集
from sklearn.datasets import load_iris
加载数据集
# 加载数据集
data = load_iris()
X = data.data
y = data.target
# 切分数据集,将数据集切分为70%的训练集和30%的测试集
train_x, test_x, train_y, test_y = train_test_split(X,y, test_size=0.3, random_state = 0)
封装 pipeline 管道
pipeline 接受任意个数的转换器,这些转换器必须包含 fit 和 transform 函数;先经过 StandardScaler 标准化,可加入 PCA 过程,最后的参数必须是一个评估器。
def PolynomialRegression(degree):
return Pipeline([
('poly', PolynomialFeatures(degree=degree)),
('std_scaler', StandardScaler()),
('lin_reg', LinearRegression())
])
# 建模
poly2_reg = PolynomialRegression(degree=2)
poly2_reg.fit(X, y)
y2_predict = poly2_reg.predict(X)
最后根据验证模型的好坏
# 比较真值和预测值的均方误差
mean_squared_error(y, y2_predict)