【补充学习的知识点】Pipeline
在下面我们会接触到一个新的调用方式,就是sklearn中给我提供的Pipeline,利用pipeline我们可以方便的减少代码量同时让机器学习的流程变得直观
- Pipeline的作用:
- 直接调用fit和predict方法来对pipeline中的所有算法模型进行训练和预测。
- 可以结合grid search对参数进行选择.
- 使用:
(1)通过steps参数,设定数据处理流程。格式为(‘key’,‘value’),key是自己为这一step设定的名称,value是对应的处理类。最后通过list将这些step传入。前n-1个step中的类都必须有transform函数,最后一步可有可无,一般最后一步为模型。
训练得到的是一个模型,可直接用来预测,预测时,数据会从step1开始进行转换,避免了模型用来预测的数据还要额外写代码实现。还可通过pipe.score(X,Y)得到这个模型在X训练集上的正确率。
pipe=Pipeline(steps=[('pca',PCA()),('svc',SVC())])
pipe.fit(iris.data,iris.target)
pipe.predict(iris.data)
(2)通过make_pipeline函数实现:它是Pipeline类的简单实现,只需传入每个step的类实例即可,不需自己命名,自动将类的小写设为该step的名:
p=make_pipeline(RobustScaler(), Lasso(alpha =0.0005, random_state=1))
p.set_params(lasso__alpha=0.0001) #将alpha从0.0005变成0.0001
代码
需要导入的包
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.svm import LinearSVC, SVC
from sklearn.metrics import classification_report
绘图所用的函数
def plot_decision_boundary(model, axis):
x0, x1 = np.meshgrid(
np.linspace(axis[0], axis[1], int((axis[1] - axis[0]) * 100)).reshape(-1, 1),
np.linspace(axis[2], axis