每天都从包的导入开始,今天学习之任务如:

from sklearn.pipeline import Pipeline

首先,什么是Pipeline,中文翻译为管道,其实个人觉得流水线可能更贴切一点。他要做的就是把一系列的类连成一条流水线,然后让数据在流水线上“跑起来”。

贴上官方文档的关于Pipeline的参数讲解:




在python中查看sklearn库 python sklearn pipeline_sklearn pipeline


该类总共有三个参数:

steps:为此类最关键的参数,主要是设定流水线上的一道道工序,并给这一道道工序起一个名字。啥子意思呢?首先sklearn规定它是一个[( ),( )]类型,列表里面是一个个元组,分别为名字和工序,从左到右是流水线上的先后顺序。名字可以随便起,像个人就行。工序还是要按照基本法来,得是sklearn中正正经经的工序(这里还是有点讲究的,前面的n-1道手续必须要拥有fit和transform两个函数,最后一个工序,虽然他就是个estimator,他只需要fit就行,可以不用有transform)。比如下面这种写法:


在python中查看sklearn库 python sklearn pipeline_缓存_02


memory:说实话,这个参数是干嘛的我也不太清楚,网上查了查,其类型可以是str,也就是缓存地址,至于是来缓存个啥的,小白我目前也不太清楚,反正默认为None就行了,一般不太用得上,以后等我清楚了再来补充。

verbose:default=False,用来显示每个流水线所消耗的时间,默认为False,即不显示。

下面我使用verbose=True进行了尝试,可以看到显示了每一个工序的运行时间。


在python中查看sklearn库 python sklearn pipeline_ci_03


下面讲该类所拥有的函数。

1.同样是几个类似的函数。fit, fit_transform, get_params, predict, 这几个函数和前面的用法是一样的。

2.score,该函数可以直接计算真实值和预测值之间的score.比如:


在python中查看sklearn库 python sklearn pipeline_sklearn pipeline_04


3.set_params,该函数可以设计流水线上每一道工序的参数值,而修改的时候需要添加进前面命名的工序名称和两根下划线来指代特定的参数。


在python中查看sklearn库 python sklearn pipeline_sklearn pipeline_05


4.另外可以直接以一种字典的形式对pipelined里面的工序进行使用。比如pipe['kbest']也就是SelectKBest这个类,并可以使用其本身自带的函数。实例如下:


在python中查看sklearn库 python sklearn pipeline_sklearn pipeline_06


在python中查看sklearn库 python sklearn pipeline_在python中查看sklearn库_07


5.descionfunction ,这个函数是在分类问题中计算各个实例到类别所代表的超平面之间的距离。可以利用这个值来和阈值进行比较,如果超过,就是通过,低于则不通过,其返回值是nsamples * classes,由于RF并没有这个函数,所以我们将预测对象改为Pclass,将pipeline里面的函数换成SVM。如下图所示,可以看到类别依次是3,1,2.对于descion_function的返回值而言,第一行是第二个不通过,所以类别是1,第二行是第一个不通过,所以类别是3.

比如pipe['rf']也就是指代的RandomForestClassifier(n_estimators=10)这个类。


在python中查看sklearn库 python sklearn pipeline_在python中查看sklearn库_08


5.predict_proba,这个函数返回的是nsamples*classes的一个matrix,表示的是每一个实例在每一个类别的probability。概率越大的越有可能是哪个类别的。同样可以看出第一个实例属于类别3的概率最大,故最后的分类结果是3.


在python中查看sklearn库 python sklearn pipeline_在python中查看sklearn库_09


6.predict_log_proba,和上面的predict_proba定义基本一样,只是将概率进行对数化处理。


在python中查看sklearn库 python sklearn pipeline_sklearn pipeline_10


其中,我又发现了一个make_pipeline类,说实话,这个类和Pipeline基本是一模一样的,仅仅是在建立流水线的时候不需要自行定义流水线的名字了,系统默认为使用后面类的小写来替代为名字。比如现在应该写成:(需要把steps中括号去掉)


在python中查看sklearn库 python sklearn pipeline_在python中查看sklearn库_11