Python人工智能之波士顿房价数据分析

 更新时间:2021年11月06日 09:40:03   作者:mind_programmonkey  
买房应该是大多数都会要面临的一个选择,当前经济和政策背景下,未来房价会涨还是跌?这是很多人都关心的一个话题。今天分享的这篇文章,以波士顿的房地产市场为例,根据低收入人群比例、老师学生数量等特征,利用 Python 进行分析,不求买房但求技术

【人工智能项目】机器学习热门项目-波士顿房价

在这里插入图片描述

1.数据概览分析

1.1 数据概览

本次提供:

  • train.csv,训练集;
  • test.csv,测试集;
  • submission.csv 真实房价文件;

训练集404行数据,14列,每行数据表示房屋以及房屋周围的详细信息,已给出对应的自住房平均房价。要求预测102条测试数据的房价。

1.2 数据分析

通过学习房屋以及房屋周围的详细信息,其中包含城镇犯罪率,一氧化氮浓度,住宅平均房间数,到中心区域的加权距离以及自住房平均房价等等,训练模型,通过某个地区的房屋以及房屋周围的详细信息,预测该地区的自住房平均房价。

回归问题,提交测试集每条数据对应的自住房平均房价。评估指标为均方误差mse。

2. 项目总体思路

2.1 数据读取

数据集:波士顿房间训练集.csv (404条数据)
数据集字段如下:
CRIM:城镇人均犯罪率。
ZN:住宅用地超过 25000 sq.ft. 的比例。
INDUS:城镇非零售商用土地的比例。
CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0)。
NOX:一氧化氮浓度。
RM:住宅平均房间数。
AGE:1940 年之前建成的自用房屋比例。
DIS:到波士顿五个中心区域的加权距离。
RAD:辐射性公路的接近指数。
TAX:每 10000 美元的全值财产税率。
PTRATIO:城镇师生比例。
B:1000(Bk-0.63)^ 2,其中 Bk 指代城镇中黑人的比例。
LSTAT:人口中地位低下者的比例。
MEDV:自住房的平均房价,以千美元计。

在这里插入图片描述

2.2 模型预处理

(1)数据离群点处理

首先对训练集进行拆分为子训练集与子测试集,利用train_data.sort_values对训练集进行排序,依次删除每个特征对应的离群样本,利用子训练集与子测试集对模型进行训练与测试并确定该特征下所需删除样本的最佳个数。

在这里插入图片描述

(2)数据归一化处理

利用sklearn.preprocessing. StandardScaler对数据集与标签分别进行标准化处理。

在这里插入图片描述

2.3. 特征工程

利用随机森林特征选择算法剔除不敏感特征。

在这里插入图片描述

2.4. 模型选择

使用GradientBoostingRegressor集成回归模型。

Gradient Boosting 在迭代的时候选择梯度下降的方向来保证最后的结果最好。损失函数用来描述模型的“靠谱”程度,假设模型没有过拟合,损失函数越大,模型的错误率越高

如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度方向上下降。

在这里插入图片描述

在这里插入图片描述

2.5. 模型评价

采用均方误差(MSE)评分标准,MSE: Mean Squared Error 。均方误差是指参数估计值与参数真值之差平方的期望值;

MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。计算公式如下:

在这里插入图片描述

其在测试集上的MSE值为:

在这里插入图片描述

2.6. 模型调参

对n_ n_estimators的参数进行调参:

在这里插入图片描述

3. 项目总结

通过多次实验,我们目前得到的最优解为8.18左右。在处理小数据集出现过拟合时,首先应当考虑减小模型或增加数据集。由于本次实验是通过大量训练取最优的办法均使用缺省参数,对超参数进一步调优也许可更进一步。

在这里插入图片描述

到此这篇关于Python人工智能之波士顿房价数据分析的文章就介绍到这了,更多相关Python 波士顿房价内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现求一个集合所有子集的示例

    Python实现求一个集合所有子集的示例

    今天小编就为大家分享一篇Python 实现求一个集合所有子集的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法

    修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法

    这篇文章主要介绍了修复CentOS7升级Python到3.6版本后yum不能使用的问题,本文给大家带来了解决方法,需要的朋友可以参考下
    2018-01-01
  • Python使用SciPy库的插值方法及示例详解

    Python使用SciPy库的插值方法及示例详解

    SciPy是一个基于NumPy构建的Python模块,它集成了多种数学算法和函数,这篇文章主要为大家详细介绍了如何使用SciPy库实现插值,需要的可以了解下
    2024-03-03
  • 基于Python实现一个简单的学生管理系统

    基于Python实现一个简单的学生管理系统

    这篇文章主要为大家详细介绍了如何利用python实现简单的学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-12-12
  • Python使用fliecmp实现比较文件的操作

    Python使用fliecmp实现比较文件的操作

    对于文件的比较一般有几种,比如比较文件的内容,比较文件的大小,或者直接对比整个项目文件,本文就详细的介绍这些方法的实现,感兴趣的可以了解一下
    2021-06-06
  • Tkinter使用Progressbar创建和管理进度条的操作代码

    Tkinter使用Progressbar创建和管理进度条的操作代码

    Progressbar是Tkinter库中的一个小部件,用于创建和管理进度条,这篇文章主要介绍了Tkinter使用Progressbar创建和管理进度条,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Python字典取值全攻略之高效、简洁地获取字典值的多种技巧

    Python字典取值全攻略之高效、简洁地获取字典值的多种技巧

    这篇文章主要给大家介绍了关于Python字典取值全攻略之高效、简洁地获取字典值的多种技巧,dictionary(字典)是除列表以外Python之中最灵活的数据类型,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 解读等值线图的Python绘制方法

    解读等值线图的Python绘制方法

    这篇文章主要介绍了解读等值线图的Python绘制方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python中的迭代器漫谈

    Python中的迭代器漫谈

    这篇文章主要介绍了Python中的迭代器漫谈,本文主要讲解range函数和xrange函数性能区别,需要的朋友可以参考下
    2015-02-02
  • Python实现本地缓存的几种方法小结

    Python实现本地缓存的几种方法小结

    缓存是一种常见的技术,用于存储重复请求的结果,Python 作为一种灵活的编程语言,提供了多种实现本地缓存的方法,本文将探讨 Python 中实现本地缓存的几种策略,并提供具体的代码示例,感兴趣的小伙伴跟着小编一起来看看吧
    2024-07-07

最新评论