大数据技术与应用 课程设计 基于 Spark的出租房屋大数据分析

大数据技术与应用 课程设计

课程名

大数据技术与应用(二)课程设计

题目

基于 Spark的出租房屋大数据分析

班级

学号

姓名


目录

1. 项目背景与功能

1.1 项目背景

1.2 项目功能

1.3 运行环境

2. 数据集与数据预处理

2.1 原始数据集

2.1.1 数据集说明

2.1.2 原始数据集展示 (前 10 条)

2.2 数据预处理

2.2.1 Excel数据预处理

2.2.2 数据字段说明

2.3 数据上传

2.3.1 处理数据

2.3.2 上传至HDFS

3. 数据分析

3.1 使用 Spark SQL 进行统计分析 (至少 5个)

3.1.1 统计租金前10的市辖区

3.1.2 统计市辖区出租房屋的最大面积和最小面积

3.1.3 统计市辖区出租房屋的平均面积及平均租金

3.1.4 统计地级市租金在1000以上的房屋数量

3.1.5 统计地级市一房一厅一卫的房屋最低租金

4. Flask与ECharts 数据大屏可视化

4.1 开发环境及伪动态算法介绍

4.1.1 利用 Flask 与ECharts

4.1.2 伪动态算法建模

4.2 Flask+ ECharts 可视化

4.2.1 数据导入mysql

4.2.2 总体情况预览可视化分析

4.2.3 深圳、佛山租房各项指标对比

4.2.4 不同朝向的租房房间数量、楼层可视化分析

4.2.5 地区均价与面积对比分析

4.2.6 房源数量TOP10分析

4.2.7 租房类型对比

4.2.8 租房覆盖率分析展示

4.3 总体大屏可视化结果展示

5. Spark 机器学习

5.1 K-Means聚类分析

5.1.1 数据预处理

5.1.2 特征工程

5.1.3 K-Means模型聚类

5.1.4 模型评估

5.1.5 模型优化

5.1.6 结论

5.2 Lasso回归模型预测租金

5.2.1 数据预处理

5.2.2 特征工程

5.2.3 构建模型

5.2.4 模型评估

5.2.5 参数调优

6. 实时分析

6.1 出租房屋数量实时分析

6.1.1 实验环境准备

6.1.2 数据处理和Python操作Kafka

6.1.3 Spark Streaming实时处理数据

6.1.4 分析系统

7. 总结

  1. 项目背景与功能
    1. 项目背景

此次项目是分析广东七地二手房的房子情况,数据是来自链家的二手房,此 次的爬取的数据是2023年5月最新的数据,数据包含了十个字段,都是爬取后在excel做了简单的数据预处理,最后导入虚拟机。

    1. 项目功能

本项目通过EXCEL对出租房屋数据集进行预处理,并使用Spark SQL进行了租金前十的市辖区、各市辖区出租房屋的最大面积、最小面积、平均面积等数据分析;使用Flask+Echarts对数据进行大屏可视化;使用K-Means聚类对出租房屋进行聚类分析,根据聚类结果可知,该数据集可分为三类;使用Lasson回归模型进行预测租金,该模型优化后RMSE值为1074;

    1. 运行环境

使用Ubuntu16.04 的虚拟机版本,软件方面使用的有Hadoop2.7.1、Spark2.1.0、HBase1.1.5、JDK1.8、Scala2.11.8、MySQL、Kafka_2.11-0.10.2.0、 Sbt、Maven3.3.9、Hive2.1.0、Pycharm2016.3、python3.8

  1. 数据集与数据预处理
    1. 原始数据集
      1. 数据集说明

图2-1 数据集采集

采集时间:2023-5-8

采集网址:https://fs.lianjia.com/zufang/、https://sz.lianjia.com/zufang/、https://zs.lianjia.com/zufang/、https://zh.lianjia.com/zufang/、https://hz.lianjia.com/zufang/、https://zj.lianjia.com/zufang/、https://qy.lianjia.com/zufang/

内容:佛山、深圳、珠江、湛江、惠州、清远、中山七个城市的租房信息

      1. 原始数据集展示 (前 10 条)

图2-2 原始数据集

    1. 数据预处理
      1. Excel数据预处理

图2-3 数据集预处理

      1. 数据字段说明

列名称

说明

district

字符串类型,所在地级市

address

字符串类型,所在市辖区

area

浮点数类型,出租房屋面积

orientation

字符串类型,出租房屋朝向

room

整数类型,室数

living

整数类型,厅数

bathroom

整数类型,卫生间数

floor

整数类型,所在楼层

rent

整数类型,租金

    1. 数据上传
      1. 处理数据

图2-4 启动Hadoop

图2-5 数据展示

图2-6 pre_rent.sh

图2-7 执行shell脚本并查看处理后数据

      1. 上传至HDFS

图2-8 成功上传图示

  1. 数据分析
    1. 使用 Spark SQL 进行统计分析 (至少 5个)
      1. 统计租金前10的市辖区

图3-7 导入数据至Spark sql

图3-8 查询结果图示

      1. 统计市辖区出租房屋的最大面积和最小面积

图3-9 统计结果图示

      1. 统计市辖区出租房屋的平均面积及平均租金

图3-10 统计结果图示

      1. 统计地级市租金在1000以上的房屋数量

图3-11 统计结果图示

      1. 统计地级市一房一厅一卫的房屋最低租金

图3-12 统计结果图示

  1. Flask与ECharts 数据大屏可视化

本节中利用数学建模的知识构建了一个伪动态数据读取模型,配合Flask框架与ECharts绘图,构建了一个大屏可视化web界面,具体界面入下图所示。

图 41数据大屏展示整体

    1. 开发环境及伪动态算法介绍
      1. 利用 Flask 与ECharts

本文在window环境下利用python3.9搭建动态web应用。具体环境信息入下所示。

表 41动态web可视化项目所用配置

序号

运行环境

1

Linux(Ubuntu16.04)

2

Win11

3

Hadoop 2.7.1

4

Python 3.9

5

Pymysql 1.0.3

6

Flask 2.3.2

7

Echarts

      1. 伪动态算法建模

本文所构建算法从读取数据部分入手,使不同时间序列下读取数据行数不同,使可视化结果中数据呈现动态的变化,关键式入下所示。

(41)

具体代码如下图所示。

图 42快启动-缓增长代码

    1. Flask+ ECharts 可视化
      1. 数据导入mysql

本文在window环境下通过Navicat软件直接将数据导入到mysql中。具体如下图所示。

图 43数据导入mysql

      1. 总体情况预览可视化分析

在本节中将房源数量、房源均面积、房间数量、租房均价4个指标可视化的展示在图上。让读者更容易了解整体租房信息。

  1. Flask代码

图 44分析1Flask代码

  1. Web代码

图 45分析1web代码

  1. 可视化结果展示

图 46分析1可视化展示

      1. 深圳、佛山租房各项指标对比

通过雷达图可以清楚的分析在相同的环境下,深圳与佛山两地二手房的价格差别,本次选取租房中的房间数量、平均面积、均价、楼层层数、客厅数量五个指标进行可视化。

  1. Flask代码

图 47分析2Flask代码

  1. Web代码

图 48分析2web代码

  1. 可视化结果展示

图 49分析2可视化展示

      1. 不同朝向的租房房间数量、楼层可视化分析

      1. 租房覆盖率分析展示

通过对比本次数据中出现的房源地区来分析该网站的房源覆盖的范围,通过饼图将结果清晰展示出来。

  1. Flask代码

图 422分析7Flask代码

  1. Web代码

图 423分析7web代码

  1. 可视化结果展示

 

图 424分析7可视化展示

    1. 总体大屏可视化结果展示

具体可视化结果如下图所示,请注意,本文使用的大屏展示是实时变化的,但图片无法展示效果。

图 425最终大屏可视化展示

  1. Spark 机器学习
    1. K-Means聚类分析
      1. 数据预处理
  1. 导入所需包

图5-1

  1. 读入数据

图5-2

      1. 特征工程
  1. 字符串编码和独热编码

  1. 将特征向量合并为一个向量列

图5-3

  1. 将Pipeline组合到一个流程中

图5-4

      1. K-Means模型聚类
  1. 使用流程,处理数据并拟合K-Means模型

图5-5 模型图示

  1. 使用K-Means模型进行预测,并展示结果

图5-6

  1. 模型的所有聚类中心情况

图5-7

  1. 输出每个簇的大小

图5-8

  1. 输出每个簇的数据统计信息

图5-9

      1. 模型评估
  1. WSSSE(集合内误差平方和)度量聚类的有效性

图5-10

该模型的WSSSE值为:1.0264,该值越小可说明模型的有效性越高;

      1. 模型优化

图5-11

使用二分k-Means模型得到聚类WSSSE分数为1.266>1.102,可得上述K-Means模型已为当前区间最优解。

      1. 结论

根据模型聚类所得结果,该数据集可分为三类:类型0-面价最大,房间数最多,租金最高,多数位于中山、湛江等地区,适宜租来做为厂房/工作室等多人工作的场地;类型1-面积最小,房间数最少,租金最少,但仍处于两千以上,推测是处于出行便利或市中心,多数处于深圳等发达城市,适宜独居的上班人员;类型2-面积适中,租金适中,适合合租、一家人租住;

    1. Lasso回归模型预测租金
      1. 数据预处理
  1. 导包

图5-12

结果可得最优Parameter参数为10,RMSE值也从2710降至1074,证明模型调优有效。

  1. 实时分析
    1. 出租房屋数量实时分析
      1. 实验环境准备
  1. python工程目录结构

图6-1

      1. 数据处理和Python操作Kafka
  1. 启动kafka服务

图6-2

  1. 编写生产者文件

图6-3

  1. 编写消费者文件

图6-4

      1. Spark Streaming实时处理数据
  1. 编写日志文件

图6-5

  1. 编写工程主文件

图6-6

  1. 编写simple.sbt

图6-7

  1. 打包上述程序

图6-8

  1. 编写运行脚本

图6-9

  1. 运行脚本

图6-10

      1. 分析系统
  1. 同时运行Spark Streaming项目、producer、consumer之后,可在consumer运行窗口得到如下结果

图6-11

  1. 结果显示

图6-12

  1. 总结

本项目通过EXCEL对出租房屋数据集进行预处理,并使用Spark SQL进行了租金前十的市辖区、各市辖区出租房屋的最大面积、最小面积、平均面积等数据分析;使用Flask+Echarts对数据进行大屏可视化;使用K-Means聚类对出租房屋进行聚类分析,根据聚类结果可知,该数据集可分为三类;使用Lasson回归模型进行预测租金,该模型优化后RMSE值为1074;

在实现这个项目的过程中,我认为最重要的是对数据的预处理,通过对数据进行清洗和去重,可以保证得到准确的分析结果。其次,对不同的分析方法和模型进行尝试和比较,可以得到更好的结果,并且可以充分发掘数据的潜力。最后,大屏可视化和交互式图表的使用可以让数据的展示更加生动和直观,便于用户理解和使用。

总体来说,这是一个非常实用和有用的项目,可以为房屋租赁市场的参与者提供很好的参考和指导。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrrunsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值