【搬运自同人博客】
sklearn-pipeline机器学习实例(housing数据集) - qq_36810398的博客 - CSDN博客
一、问题描述
这个实例原型是《Hands On Machine Learning with Sklearn and Tensorflow》书第二章End-to-End Machine Learning Project的课后题,题目的解答和正文掺杂在一起,我做了一些整理,也有一些补充(所以不敢保证没有纰漏)。仅供需要的同学批判性地参考,顺便给自己当一个笔记。 :)
数据集是来自 https://github.com/ageron/handson-ml 下的master/datasets/housing,简而言之,就是根据房子的一些属性来预测房子的价格。数据文件中一共有10个字段,具体地,特征
X={'longitude','latitude','housing_median_age','total_rooms', 'total_bedrooms','population','households','median_income','ocean_proximity'},
其中'ocean_proximity'为文本类型,表示房子靠海的程度,只有5种情况——{'NEAR BAY', '<1H OCEAN', 'INLAND', 'NEAR OCEAN', 'ISLAND'}。
标签
Y={'median_house_value'},
为连续型数据,因此此为一个多元回归问题。该问题的示意图略图如下:
![v2-1f178f7799422e396585500e20c092ac_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=c7eda102-4c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-1f178f7799422e396585500e20c092ac_b.jpg)
二、Pipeline处理流程示意图
![v2-e0b7ac38ba7b40a4a31d1cec85476a7d_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=c7eda102-4c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-e0b7ac38ba7b40a4a31d1cec85476a7d_b.jpg)
上图中间即为该end-to-end机器学习模型的流程图(pipeline),其中两侧的6个框中的即为pipeline的组件,亦即本模型的操作。需要说明的有以下几点:
(1)本数据中“分类型数据”不含异常值,因为异常值处理没有组件;
(2)其中Imputer和StandardScaler为python自带的类,其他的类是需要自己编写;
(3)其中LabelBinary类,直接用会报错,原因见于 https://stackoverflow.com/questions/46162855/fit-transform-takes-2-positional-arguments-but-3-were-given-with-labelbinarize ,
修改方法是自己在此类的基础上做一下修改,得到新类MyLabelBinary(见代码中)。
【更详细的内容,请参考原书或下述代码】
三、实例代码
import
上述程序的的输出结果在准确率上并不高,因为为了提高速度,GridSearchCV都是用了最简单的参数,可以扩大参数范围,提高精度。