用Python搭建机器学习模型时,Pipeline是一个加快效率(取巧)的方法,本文重点学习串联用法。
Pipeline处理机制就像是把所有模型塞到一个管子里,然后依次对数据进行处理,得到最终的分类结果,例如模型一可以是一个数据标准化处理,模型二可以是特征选择模型或者特征提取模型,模型三可以是一个分类器或者预测模型。Pipeline就是把这三个模型(模型不一定非要三个,根据自己实际需要)塞到管子里合并成一个模型调用,其中最后一个模型一定要是估计器,例如分类器。
sklearn中Pipeline调用方法也很简单:
#模型串联
pip=Pipeline(
[ #所有模型写进列表内
(‘模型一名称’,模型一调用), #模型名称可以自己命名
(‘模型二名称’,模型二调用),
(‘模型三名称’, 模型三调用)
]
)
#模型调用
model=pip.fit(x,y)
pie函数可以把多个模型按顺序打包在一起,输入的数据集经过模型的处理后,输出的结果作为下一步的输入,,最后一步的估计器对数据进行分类或者其他处理。除了最后一个模型外,其他模型都必须实现'fit()'和'transform()'方法, 最后一个模型需要实现fit()方法即可。当训练样本数据送进pip进行处理时, 它会逐个调用模型的fit()和transform()方法,然后用最后一个模型的fit()方法来进行分类或者其他处理。
案例分享:
#导入数据库,使用sklearn库中的数据
from sklearn import datasets
digits=datasets.load_digits()
digitis.data.shape()
#数据可视化
import pylab as pl
pl.gray() #灰度化图片
pl.figure(figsize=(3,3))
pl.matshow(digits.images[1])#显示图片
pl.show()
#数据拆分训练集和测试集
from sklearn.cross_validation import train_test_split
x_train,x_test,y_train,y_test=train_test_split(digist.data,digits.traget,
test.size=0.25,random_state=33)
#模型串联
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScalear
from sklearn.svm import LinearSVC
pip=Pipeline(['sc',StandardScalear()),('svc',LinearSVC())])
pip.fit(x_train,y_train)
y_predict=pip.predict(x_test)
#结果分析
print(pip.score(x_test,y_test)
from sklearn.metrics import classification_report
print(classification_report(y_test,y_predict,target_names=digits.target_names.astype(str)))
结果:
如果你只是想知道Pipeline该如何调用,那么本文就可以满足你的需求。