机器学习实战二:波士顿房价预测 Boston Housing
这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一个连续值,当然这也是一个非常经典的机器学习案例Boston housing
如果想了解更多的知识,可以去我的机器学习之路 The Road To Machine Learning通道
波士顿房地产市场竞争激烈,而你想成为该地区最好的房地产经纪人。为了更好地与同行竞争,你决定运用机器学习的一些基本概念,帮助客户为自己的房产定下最佳售价。幸运的是,你找到了波士顿房价的数据集,里面聚合了波士顿郊区包含多个特征维度的房价数据。你的任务是用可用的工具进行统计分析,并基于分析建立优化模型。这个模型将用来为你的客户评估房产的最佳售价。
首先导入需要的python包
将housing,csv读入
从这里可以看出来,数据一共有14个特征,并且没有缺失值,所以我们可以不用缺失值处理,真不错
其实在我们的sklearn库中,就有波士顿房屋数据集,我们可以直接读取数据集
这里也有对数据集详细的介绍,除此之外,我们还需要将数据集转化了类型,变为我们熟悉的pandas.core.frame.DataFrame,之后后面的操作就是一模一样的了
看看各个特征中是否有相关性,判断一下用哪种模型比较合适
数据不存在相关性较小的属性,也不用担心共线性,所以我们可以用线性回归模型去预测
尝试了解因变量和自变量、自变量和自变量之间的关系
由于数据没有null值,并且,都是连续型数据,所以暂时不用对数据进行过多的处理,不够既然要建立模型,首先就要进行对housing分为训练集和测试集,取出了大概百分之20的数据作为测试集,剩下的百分之70为训练集
查看训练集和测试集的维度
首先,我利用线性回归模型对数据进行训练,并预测测试集数据,对于具体的线性回归的介绍,可以参考Linear Regression Machine Learning
根据结果来看,预测的score为76%左右,然后均方误差RMSE大约是4.5,为了更好的看出预测数据的问题,我想试着可视化一下
这是线性回归的相关系数
得出score为76%,从上图得知预测的房价整体偏小,在10-35这个区间预测结果较为准确,超过这个区间预测价格偏小,可进一步对原始数据离群值做处理。数据比较干净,练习起来缺少特征工程部分的工作,而且是预测性模型,相比分类问题少了模型选择上的空间。
在整个数据集上评价模型
然后在整个数据集中评价模型
由以上分析可知,模型在整个数据集中的评分比在测试集中要低
尝试使用相关性最高的3个特征量重建模型,并与原模型进行比较尝试使用其它多种算法分别建立模型,并比较模型
首先我尝试相关性最高的三个特征重建模型,去与原模型比较一下
由此我们得出了三个相关性最高的特征,我们将其作为自变量去建立模型
我们可以得到,对于预测测试集的数据的得分score明显是没有开始的线性回归模型1高的,然后我们再看看,在整个数据集中它的表现
这样比较下来,第一个模型达到的分数,即使在整个数据集中73%,但是这个模型的得分大约是67.6%,由此可以得出,第一个模型还是比这个模型优的,接下来就需要尝试更多的模型了
数据集的 标准化 对scikit-learn中实现的大多数机器学习算法来说是 常见的要求 。如果个别特征或多或少看起来不是很像标准正态分布(具有零均值和单位方差),那么它们的表现力可能会较差。
所以我这里首先对数据进行了一个标准化处理
接下来我就开始尝试多种模型,希望尝试的模型有对我的算法有帮助
Lasso也是惩罚其回归系数的绝对值。
与岭回归不同的是,Lasso回归在惩罚方程中用的是绝对值,而不是平方。这就使得惩罚后的值可能会变成0
ElasticNet回归是Lasso回归和岭回归的组合
linear 线性核函数
poly 多项式核
rbf(Radial Basis Function) 径向基函数
SVM(支持向量机)回归-- 线性核
SVM(支持向量机)回归-- 多项式核
在使用SVM回归-- 多项式核的时候,首先要对数据进行一个标准化处理
再进行建立模型来预测
最后我们会发现,利用GBDT的得分居然高达90,这是我们得到最优的一个模型了,其次就是SVR回归的多项式核,也大概达到了85,其他的并没有线性回归那么优,所以对于波士顿房价预测来说,利用GBDT是最好的,这是迄今为止我遇到最好的模型
可以发现,如果要用Gradient Boosting 算法的话,在sklearn包里调用是非常方便的,几行代码即可完成,大部分的工作是在数据特征提取数据分析过程中,特征设计是最重要的,现在kaggle竞赛很流行使用GBDT(梯度提升决策树Gradient Boosted Decision Tree) 算法,数据分析结果的优劣其实主要在特征上,行业中做项目也是如此不断的在研究数据中培养对数据的敏感度十分重要
每日一句
Never had to laugh at other people.(没经历过才笑别人的疤)
如果需要数据和代码,可以自提
路径1:我的gitee路径2:百度网盘
链接:https://pan.baidu.com/s/1uA5YU06FEW7pW8g9KaHaaw
提取码:5605



























Tags: 机器学习实战 pdf
版权说明:
1.版权归本网站或原作者所有;
2.未经本网或原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。