Python人工智能之波士顿房价数据分析
作者:mind_programmonkey 发布时间:2021-09-23 19:43:35
目录
1.数据概览分析
1.1 数据概览
1.2 数据分析
2. 项目总体思路
2.1 数据读取
2.2 模型预处理
(1)数据离群点处理
(2)数据归一化处理
2.3. 特征工程
2.4. 模型选择
2.5. 模型评价
2.6. 模型调参
3. 项目总结
【人工智能项目】机器学习热门项目-波士顿房价
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左右。在处理小数据集出现过拟合时,首先应当考虑减小模型或增加数据集。由于本次实验是通过大量训练取最优的办法均使用缺省参数,对超参数进一步调优也许可更进一步。
来源:https://blog.csdn.net/Mind_programmonkey/article/details/121102269
猜你喜欢
- 有些时候我们不得已要利用values来反向查询key,有没有简单的方法呢?下面我给大家列举一些方法,方便大家使用python3>>
- 1. 关于 try.. finally..假如上帝用 python 为每一个来到世界的生物编写程序,那么除去中间过程的种种复杂实现,最不可避
- 熟悉SQL的人都知道,完成同一个任务,SQL可能有多种写法,但不同写法的查询性能可能会有天壤之别,本文列举出五个查询优化的方法,当然,优化的
- 突然想到了之前一直没留意的for循环中开goroutine的执行顺序问题,就找了段代码试了试,试了几次后发现几个有意思的地方,我暂时没有精力
- 1.在浏览器搜索python.org,如下图选择第一个2.进入python官网,选择dowload然后选择windows如下图:3.选择py
- 先说迭代器,对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用it
- 在pycharm中创建django项目的方法步骤,分享给大家,具体如下:创建完成后,我们可以看看django项目是否可以启动在Termina
- 对数据库的备份是网站管理人员的必修课,那么常用的数据库备份方式有哪些呢?应如何选择?数据库备份有四种类型,分别应用于不同的场合,下面简要介绍
- 本文实例讲述了Python爬虫之正则表达式基本用法。分享给大家供大家参考,具体如下:一、简介正则表达式,又称正规表示式、正规表示法、正规表达
- 生成Fiboncci Fn数有Θ(1),Θ(n)甚至指数级的算法,不过有Θ(log n)的吗?告诉你,有。首先,关于Fibonacci数,有
- unittest模块是Python自带的一个单元测试模块,我们可以用来做单元测试。unittest模块包含了如下几个子模块:测试用例:Tes
- 本文实例讲述了python实现的简单文本类游戏实现方法。分享给大家供大家参考。具体实现方法如下:######################
- 上文:栅格:从混乱到秩序Jacci Howard Bear 的英文原文:http://desktoppub.about.com/od/gri
- 本文实例讲述了Python面向对象程序设计。分享给大家供大家参考,具体如下:示例1:#encoding:utf-8''
- 首先,Python 完整的异常处理语法结构如下:try: #业务实现代码except Exception1 as e: &nbs
- 过去一段时间人们似乎又非常热衷于探讨网络文档的印刷格式,涌现了很多与之相关的技术与理论资料,其中相当重要的一个领域就是关于印刷中字号和行高的
- 我们可以通过打开流并写入和读取 HTTP 请求和响应来使用 asyncio 查询网站的 HTTP 状态。然后我们可以使用 asyncio 并
- 一、了解Variable顾名思义,Variable就是 变量 的意思。实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这
- python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细)。但logging配置起来比较
- 在对跨多个表格的数据进行组合时,有时很难搞清楚要使用哪一个SQL句法。我将在这里对将多个表格中的查询合并至单一声明中的常用方式进行阐述。在这