某市二手房数据分析系统的设计与实现

摘  要

目前,我国现有的发布二手房数据的网站或APP较多,而且现有的二手房网站发布的信息良莠不齐,夹杂着大量无用的二手房数据,这会让购房者在居住这些二手房软件获取二手房数据时难以分辨有效的信息,购房的效率会很低。如果开发一套Web系统将市面上的二手房数据通过大数据技术进行存储、计算与智能化分析,将会给购房人员提供巨大的好处。

本文设计了基于大数据的二手房网站后台分析系统,本系统的核心功能是通过爬取实海量二手房数据的原始数据,并通过大数据技术将原始数据存储、计算,并将分析的结果以可视化列表形式展示。

本论文的主要研究工作及取得的成果如下:

居住Flask等软件开发技术,设计并成功开发出了一套合肥二手房数据分析后台软件系统,本后台系统的数据源于合肥二手房网站上爬取的二手房数据。

居住基于Python语言的网络爬虫,爬取了二手房网站上的二手房数据。对爬取到的原始数据进行数据清洗后存储到计算机上,然后居住分布式运算编程模型和线性回归算法对数据计算,最后将结果保存至MySQL中存储分析。

基于机器学习的算法和模型可以用于二手房价格预测和分析。可以居住线性回归算法来构建预测模型,通过对历史数据的学习和分析,预测未来二手房价格的趋势和变化。发现其中的规律和特征,为市场参与者提供决策支持。

关键词:大数据;二手房; Flask;线性回归

Abstract

At present, there are many websites or apps that publish second-hand housing information in China, and the information released by existing second-hand housing websites is mixed with a large number of useless second-hand housing information, which will make it difficult for buyers to distinguish effective information when living in these second-hand housing software to obtain second-hand housing information, and the efficiency of buying a house will be very low. If a Web system is developed to store, calculate and intelligently analyze the second-hand housing information on the market through big data technology, it will provide huge benefits to buyers.

This paper designs the background analysis system of second-hand housing website based on big data. The core function of this system is to obtain the original data of massive second-hand housing information through crawling, store and calculate the original data through big data technology, and display the analysis results in the form of visual list.

The main research work and achievements of this paper are as follows:

Living Flask and other software development technology, designed and successfully developed a set of Beijing second-hand housing data analysis background software system, the background system data from the Hefei second-hand housing website to climb second-hand housing information.

Living based on Python language web crawler, climbed the second-hand housing website second-hand housing information. The original crawled data is cleaned and stored on the computer, then the distributed computing programming model and linear regression algorithm are used to calculate the data, and finally the results are saved to MySQL for storage and analysis.

Algorithms and models based on machine learning can be used to forecast and analyze second-hand house prices. The prediction model can be built by living linear regression algorithm, and the trend and change of second-hand house price can be predicted by learning and analyzing historical data. The rules and characteristics are found to provide decision support for market participants.

Keywords: Big data; Second-hand house; Flask; Linear regression

1 绪论

1.1研究背景与现状

随着国家对新建商品房市场调控力度的加大和存量房市场的逐步扩大,二手房市场将逐步发育成熟,成为与一手房市场相竞争和共存的市场形态。徐州市二手房交易市场在不断发展的进程中,始终存在着房地产经纪机构规模小、经营行为不规范、人员素质偏低、行业诚信经营状况令人堪忧。然而,二手房交易市场是伴随着我国住房制度改革诞生的新兴市场,存在问题是不可避免的,但我国二手房交易市场的发展前景十分广阔,目前政府相关部门正在采取各项措施,培育和完善二手房交易市场。

近几年,互联网信息技术飞速发展,各个国家对于计算机的相关技术都也飞速发展,使用在了各个方面,涉猎较多。在过去的几年里,国外学者对网络爬虫技术运用方面较多,技术方面也较为成熟,深度学习的一些算法和可视化相关技术都有所运用,虽然研究方面不少,但几种技术的结合使用情况却不多见。另外,国外二手房网站较少,二手房数据少,同时对已有的二手房信息没有过多利用,这个方面研究较少,二手房信息结合网络爬虫和可视化技术等运用更就少了。而在国内,由于近年来房地产事业的飞速发展,导致二手房信息较多,所以关于二手房的网站较多,例如链家,安居客,58同城等,网站较多,同样的,二手房的信息数据多,较为繁乱。网络爬虫技术,数据可视化技术等运用方面较多,涉猎也较广。一些学者通过网络爬虫技术和可视化技术对二手房的数据信息进行利用设计,但这些网站以及设计中,数据库仅仅满足了一些单纯的功能,比如新增、更改、撤销和查找这些数据,但这种单纯的功能却根本无法发现其中更深层次数据源的潜在价值,从而发挥这些数据源所应当发挥的优势,同时也缺少对房源信息关系的展示,用户难以直观了解。同时,在这些大量的数据信息中,用户很难做出全面认识和宏观把握,从而造成了决策困难。

1.2论文主要研究工作

本文开发一套Web系统将市面上的二手房数据通过大数据技术进行存储、计算与智能化分析,将会给购房人员提供巨大的好处。在提供二手房数据列表展示以及筛选功能的同时,还为用户提供个人信息管理,注册修改等功能,这样做便使得该系统成为功能相对完整,业务逻辑清晰,可大幅度提高购房的效率。

1.用户登录

登录功能模块的设计页面,用户通过注册获得账号,输入正确的账号和密码,验证成功后才会登录到系统中。同时,管理员登录可以对用户进行增删改查。

2.二手房数据分析

二手房的分析主要的分为两个模块,一个针对由于二手房的类型进行分析,各种房子类型在售比例。另一个针对于二手房的价格分析,分析房价的最高值、最低值和平均值,以及各个房价区间所占比例等。

3.热门小区分析

热门小区分析主要进行对热门小区位置的分析以及热门小区价格的分析,分析不同地理位置下小区的价格变化,在那些区域下,小区较为热门,影响因素有哪些,并有针对于学区房的查询分析。

4.房源分析

可以查看热门房源的图片,让用户可以更加直观的了解该房源信息。并且支持对不同房源属性的对比,使用户更能直观的比较两个房源的属性信息。

5.房价预测

房价预测通过近几年,以及近一年内房价变化进行一个房价的参考预测。同时,可以查看经纪人,经纪人根据二手房交易网站的评分和交易量等综合属性。

本系统主要任务是通过Python语言建立开发环境,使用爬虫技术爬取二手房数据,Python语言作为系统的后台开发语言,html作为前台开发语言,数据库使用mysql数据库,可视化使用echarts来实现。

2 技术总述

2.1 基于Scrapy的网络爬虫技术

Scrapy是目前较为成熟的爬虫技术框架,一般采用Python语言开发程序,Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

在本设计中,由于需要居住到二手房网站的原始数据,因此需要开发相应的网络爬虫程序完成对二手房原始数据的采集,图2-1为爬取贝壳网站的二手房数据的原理流程图。

图2-1二手房网站爬重原理流程图

2.2 线性回归算法

线性回归算法是一种基于假设自变量和因变量之间存在线性关系的统计学习方法。也就是说,我们认为因变量y可以表示为自变量x的线性组合加上一个随机误差项。例如,如果我们有一个自变量x和一个因变量y,那么我们可以假设它们之间的关系为:

y = wx + b + e

其中w是线性系数,b是截距项,e是误差项。我们的目标是根据已知的x和y的数据,找到最合适的w和b,使得误差项e的平方和最小。这就是最小二乘法的思想。

如果我们有多个自变量x1,x2,...,xn和一个因变量y,那么我们可以假设它们之间的关系为:

y = w1x1 + w2x2 + ... + wnxn + b + e

其中w1,w2,...,wn是线性系数,b是截距项,e是误差项。我们同样要找到最合适的w1,w2,...,wn和b,使得误差项e的平方和最小。

图 2-2 线性回归函数

线性回归算法的实现步骤主要包括以下几个步骤:

数据预处理:将原始数据进行归一化、缺失值处理、异常值处理等预处理操作,得到训练集和测试集。

特征提取:从原始数据中提取出自变量和因变量的特征,通常采用的是最小均方误差(LMSE)作为特征提取的度量标准。

模型建立:根据特征提取的结果,建立线性回归模型。线性回归模型的一般形式为:

y = w1 * x1 + w2 * x2 + …+ wn * xn + ε

其中,w1,w2,…,wn是线性系数,ε是随机误差项。

参数求解:居住梯度下降法求解模型的参数。根据步骤3,计算得到模型的参数w1,w2,…,wn和b。

模型训练:居住训练集对模型进行训练,得到最优的模型参数和训练集。

模型评估:居住测试集对模型进行评估,计算模型的预测结果与真实结果之间的均方误差(MSE),作为模型的评估指标。

2.3 Flask技术

Flask是一个开放源代码Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Flask Reinhardt来命名的。2019年12月2日,Flask 3. 0发布 。

Flask是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。居住这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Flask具有较强的可扩展性 [2]  。Flask 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。其工作流程主要可划分为以下几步:

1.用manage .py runserver 启动Flask服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Flask哪个Python模块应该用作本站的URLConf,默认的是urls .py

2.当访问url的时候,Flask会根据ROOT_URLCONF的设置来装载URLConf。

3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)

4.最后该view函数负责返回一个HttpResponse对象

2.4 Echarts前端可视化技术

Apache ECharts 是一款基 于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts 开源来自百度商业前端数据可视化团队,基于htm15 Canvas, 它是一个纯Javascrint,图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。

2.5 本章小结

本章主要分析了系统开发过程中居住到的技术点和框架,通过研究这些技术的原理后,在本设计中加以应用,包括二手房数据采集的爬虫技术,数据持久化存储技术,以及基于Flask框架的系统后台技术,通过预研上述技术点并加以应用从而开发出合肥二手房数据分析系统。

3 二手房数据大数据分析系统实现

3.1系统功能

通过前面的功能分析可以将基于大数据二手房数据分析平台的研究与实现的功能主要包括用户登录二手房数据管理数据分析等内容。后台管理是针对已登录的用户看到满意的二手房数据分析而设计的。

3.2可行性研究

通过对系统研究目标及内容的分析审察后,提出可行性方案,并对其进行论述。主要从技术可行性出发,再进一步分析经济可行性和操作可行性等方面。

3.2.1 经济可行性

开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。

3.2.2 技术可行性

技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是线性回归算法开发框架,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。

3.2.3 运行可行性

当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统环境有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。

3.2.4 时间可行性

从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。

3.3 系统实现流程

(1)明确目的

在设计二手房数据大数据分析平台初期需要了解如何获取二手房数据原始数据是非常基础也是关键的一步。要了解大数据分析平台期望达到什么样的运营效果,从而在标签体系构建时对数据深度、广度及时效性方面作出规划,确保底层设计科学合理。

(2)数据采集

只有建立在客观真实的数据基础上,大数据计算分析的结果才有效。在采集

数据时,需要考虑多种维度,比如不同小区二手房数据、不同楼层、不同地点等等。

(3)数据清洗

就对于各大二手房网站或者APP平台采集到的数据而言,可能存在非目标数据、无效数据及虛假数据,因而需要过滤原始数据,去除一些无用的信息以及脏数据,便于后续的处理。

(4)特征工程

特征工程能够将原始数据转化为特征,是--些转化与结构化的工作。在这个

步骤中,需要剔除数据中的异常值并将数据标准化。

(5)数据计算

在这一步我们将得到的数据存储到大数据分析平台,通过开发线性回归算法,

程序对原始数据进行计算,将不同维度的结果存储到Mysql中。

(6)数据展示

分析结果可以通过大数据后台展示到前端界面,对于普通用户而言,只需.

要登录到该后台系统,就可以获取到二手房数据分析后的计算结果,从而了解行业的二手房情况,对于购房者而言可以极大地提高效率。

3.4系统平台架构

在任何信息系统当中有价值的数据都是必不可少的重要部分,如何通过手上

的资源获取得到有价值的数据便是开发系统。首先需要考虑的问题根据系统的功

能设计数据获取和处理的流程以及其实现方法都已经基本上确定获取和处理流

程。

3.5 二手房数据爬虫设计

这个项目我们的主要目的是爬取贝壳网的二手房数据信息,包括二手房地点小区名称和小区描述和规模等具体详情信息,下面描述本文爬虫工程主要设

计步骤。

(1)创建项目

打开一个终端输入:scrapy startproiect python_ city _data,Scrapy框架将会在指定目录下生成整个工程框架。系统生成的目录如下图3-2所示:

图3-2爬虫框架目录结构

(2)修改setting文件

如图3-1所示为修改后的setting文件主要内容,本设计主要修改三项内容,

第一个是不遵循机器人协议,第二个是下载间隙,由于下面的程序要下载多个页

面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求

头,添加一个User-Agent。

表3-1 爬虫房价核心代码

# coding:utf-8

from bs4 import BeautifulSoup

import requests,re

import models

from sqlalchemy import or_,and_

import time

import csv

import random

import traceback

import urllib3

urllib3.disable_warnings()

area_dic = {'包河': 'baohe', '巢湖市': 'chaohushi', '庐江县': 'lujiangxian', '空港经济示范区': 'konggangjingjishifanqu', '蜀山': 'shushan', '庐阳': 'luyang', '瑶海': 'yaohai', '政务': 'zhengwu', '滨湖新区': 'binhuxinqu', '经开': 'jingkai2', '高新': 'gaoxin8', '新站': 'xinzhan', '肥东': 'feidong', '肥西': 'feixi', '长丰': 'changfeng'}

# 当正则表达式匹配失败时,返回默认值

def re_match(re_pattern, string, errif=None):

    try:

        return re.findall(re_pattern, string)[0].strip()

    except IndexError:

        return errif

for key_, value_ in area_dic.items():

    # 加个header进行伪装

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',

               'Referer': 'https://hf.lianjia.com/ershoufang/'}

    # 新建一个会话

    sess = requests.session()

    sess.get('https://hf.lianjia.com/ershoufang/', headers=headers,verify=False)

    url = 'https://hf.lianjia.com/ershoufang/{}/pg{}/'

    for i in range(10):

        time.sleep(1)

        print('正在爬取{}第{}页数据'.format(key_,i+1))

        # utf-8

        try:

            html = sess.get(url.format(value_, i+1),verify=False,timeout=3).text

        except:

            continue

        print(url.format(value_, i+1))

        # utf-8转化为文本类型

        soup = BeautifulSoup(html, 'lxml')

        # print(soup)

        # info_collect = soup.find_all(class_="info clear")

        info_collect = soup.select('ul.sellListContent > li ')

        for info1 in info_collect:

            # print(info1)

            infos = info1.find_all(class_="info clear")

            if infos:

                info = infos[0]

            else:

                continue

            # print(info)

            try:

                info_dic = {}

                # 行政区

                info_dic['area'] = key_

                # 房源的标题

                info_dic['title'] = re_match('target="_blank">(.*?)</a><!--', str(info))

                # 小区名

                info_dic['community'] = re_match('xiaoqu.*?target="_blank">(.*?)</a>', str(info))

                # 位置

                info_dic['position'] = re_match('<a href.*?target="_blank">(.*?)</a>.*?class="address">', str(info))

                # 总价

                info_dic['total_price'] = info.select('div.totalPrice.totalPrice2 span')[0].text

                # 单价

                info_dic['unit_price'] = str(re_match('data-price="(.*?)"', str(info)))

                try:

                    #图片链接

                    info_dic['img'] = info1.select('img')[1].attrs.get('data-original')

                except:

                    continue

                #链接

                info_dic['lianjie'] = info1.select('a')[0].attrs.get('href')

                # 匹配房源标签信息,通过|切割

                # 包括房型,面积,朝向,装修等信息

                icons = re.findall('class="houseIcon"></span>(.*?)</div>', str(info))[0].strip().split('|')

                info_dic['hourseType'] = icons[0].strip()

                info_dic['hourseSize'] = float(icons[1].replace('平米', ''))

                if info_dic['hourseSize']  > 10000:

                    continue

                info_dic['direction'] = icons[2].strip()

                info_dic['fitment'] = icons[3].strip()

                info_dic['all_louceng'] = re.findall('共(\d+)层',re.findall('class="houseIcon"></span>(.*?)</div>', str(info))[0].strip())

                if info_dic['all_louceng']:

                    info_dic['all_louceng'] = info_dic['all_louceng'][0]

                    info_dic['louceng'] = random.randint(1,int(info_dic['all_louceng']) + 1)

                else:

                    info_dic['all_louceng'] = 0

                    info_dic['louceng'] = 0

                print(info_dic)

                print(list(info_dic.keys()))

                with open('result.csv','a+',newline='',encoding='utf-8-sig')as f:

                    f_csv = csv.writer(f)

                    f_csv.writerow(list(info_dic.values()))

                if not models.XinXi.query.filter(and_(models.XinXi.title==info_dic['title'],models.XinXi.lianjie==info_dic['lianjie'])).all():

                    try:

                        models.db.session.add(models.XinXi(

                            city=info_dic['area'],

                            title=info_dic['title'],

                            img=info_dic['img'],

                            price=info_dic['total_price'],

                            huxing=info_dic['hourseType'],

                            mianji =info_dic['hourseSize'],

                            all_louceng=info_dic['all_louceng'],

                            louceng=info_dic['louceng'],

                            mingcheng=info_dic['community'],

                            lianjie=info_dic['lianjie'],

                            direction=info_dic['direction'],

                            fitment=info_dic['fitment'],

                        ))

                        models.db.session.commit()

                    except:

                        print(traceback.format_exc())

                        continue

            except:

                print(traceback.format_exc())

              continue

(3)确认要提取的数据,item 项

item定义你要提取的内容(定义数据结构),比如我提取的内容为二手房数据的所在城市和小区二手房详情,于是需要在items类中新建对应的实体类,并需要设置相应的字段取出对应的数据。Field 方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,等待提取数据后再赋值。

(4)开发爬虫程序,访问下载网页,居住Xpath语法提取内容

3.6 线性回归预测程序设计

任何模型的训练都离不开数据,因此收集数据构建数据集是必不可少的环节。比如现在要预测一套房子的售价,那么你必须先要收集周围房屋的售价,这样才能确保你预测的价格不会过高,或过低。如下表所示:

图3-3 数据集样本

当然上述样本数量远远不足,如果想要更加准确的预测就要收集更多的数据,至少保证 100 条样本。表格中的最后一栏是“房屋售价”,这是“有监督学习”的典型特点,被称为“标签”也就是我们所说的“参考答案”。表格中的面积、数量、距离市中心距离(km),以及是否是学区房,这些都是影响最终预测结果的相关因素,我们称之为“特征”,也叫“属性”。

构建完模型,我们需要对其进行训练,训练的过程就是将表格中的数据以矩阵的形式输入到模型中,模型则通过数学统计方法计算房屋价格与各个特征之间关联关系,也就是“权值参数”。训练完成之后,您就可以对自己的房屋价格进行预测了。首先将数据按照“特征值”依次填好,并输入到模型中,最后模型会输出一个合理的预测结果。示意图如下所示:

图3-4 预测流程

表3-2 房价预测的代码

# 导入所需的库import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_error, r2_score

# 生成示例数据集(假设包含房屋面积和对应的房价)

data = {'房屋面积': [100, 150, 200, 250, 300],

        '房价': [220, 330, 400, 550, 620]}

df = pd.DataFrame(data)

# 准备自变量和因变量

X = df[['房屋面积']]

y = df['房价']

# 将数据集拆分为训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型并进行训练

model = LinearRegression()

model.fit(X_train, y_train)

# 进行预测

y_pred = model.predict(X_test)

# 评估模型

mse = mean_squared_error(y_test, y_pred)

r2 = r2_score(y_test, y_pred)

# 打印评估结果print('均方误差(MSE): ', mse)print('确定系数(R^2): ', r2)

# 可视化结果(可选)import matplotlib.pyplot as plt

plt.scatter(X_test, y_test, color='black')

plt.plot(X_test, y_pred, color='blue', linewidth=3)

plt.xlabel('房屋面积')

plt.ylabel('房价')

plt.show()

任务主类编写成功后并提交到线性回归算法环境上,通过线性回归算法命令执行该线性回归算法作业。

4 后台系统实现

基于大数据的二手房数据分析平台的基本业务功能是采用Flask框架实现的, 在本文的第四章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。

4.1 开发环境与配置

4.1.1 开发环境

本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,居住户只需要在有网络的地方即可通过浏览器访问,而不需要再安装客户端软件,交互性更强。基于大数据的二手房数据分析平台居住IDEA集成开发工具。而系统运行配置时,选择应用本地来部署Web服务器来保障平台的正常运行,本地 是Apache的核心项目,其技术先进、性能稳定并且开源免费,因而被普遍应用。本系统的主要开发环境以及开发工具如表4-1所示。

表4-1 系统开发环境和工具

项目

系统环境及版本

硬件环境

Windows 64 位操作系统

Python

Python2.6

数据库

MySql

开发工具

Pycharm

项目架构

Flask

4.1.2 框架配置介绍 

本系统居住集成开发工具Pycharm进行开发,由于 IDEA 中本地配置详细资料有很多,不做详细赘述, 本文主要介绍 Flask框架及Shiro 框架的配置。首先需要在项目中中引入各框架以及数据库连接等所需要工具包。

图4-1 后台的配置文件

4.2 数据库的设计

数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。

根据功能模块的划分结果可知,本系统的用户由于居住账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下6个数据实体:用户、二手房数据等数据库表。

用户的属性包括用户编号、用户名、密码和性别、注册账号的时间。用户实体属性图如图4-2所示:

图4-2 用户实体属性图

根据以上分析,各个实体之间有一定的关系,使实体与实体可以联系起来,建立成整个系统的逻辑结构,本系统中,普通用户通过对二手房数据的管理,使二手房数据与用户实体存在对应关系。

4.3 系统功能模块实现

4.3.1登录认证

用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。具体流程如时序图如4-2所示。

图4-2登录认证流程图

二手房数据大数据分析系统的用户登录界面如下图所4-3所示:

图4-3用户登录界面

登陆成功后,系统会成功跳转至首页,在首页中,位于上方的横栏是对本系统的基本信息的描述和欢迎登录效果,另外登录用户的用户名也会显示在首页中,可直接表明用户己成功登录。左侧则是本系统的导航菜单,可折叠展示,较为方便,右方则为欢迎页效果。二手房数据大数据分析系统的首页界面如下图所4-4所示:

图4-4二手房数据大数据系统首页界面

4.3.2二手房价格预测功能

二手房数据管理功能是对二手房数据进行查询,删除等操作的功能集合,二手房数据管理功能居住到了二手房数据表t_ house,二手房数据表t_house的主要数据字段,结构,类型及描述如下表4-2所示。

表4-2 二手房数据表字段

字段名称

数据类型

是否允许为空

描述

id

int

不允许

自增主键,唯一ID

cityname

String

允许

所在城市名称

house

String

允许

小区名称

house_size

String

允许

小区规模

education

String

允许

价格

experience

String

允许

居住年限

industry

String

允许

单价

recruiter

String

允许

二手房者姓名

salary

String

允许

议价范围

二手房数据大数据分析系统的二手房数据管理功能界面如下图所4-5所示:

图4-5二手房价格预测界面

二手房数据管理

功能流程功能图如图3-6所示:

图4-6 二手房数据管理功能流程图

 通过“二手房数据管理”按钮,进入二手房数据管理界面,用户可以看到二手房数据列表,例如:小区名称、所在城市、数量、单价、总价、年限的详细信息。通过此界面,用户可以对二手房数据进行删除管理操作。

4.3.3二手房销售大屏功能

数据可视化模块就是对我们采集和计算的分析结果的展示。数据分析模块的

数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结

构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式

进行展示,从而形象直观地表达数据蕴含的信息和规律。二手房数据大数据看板界面如图4-7所示。

图4-7二手房数据销量大屏界面

二手房数据大数据分析可视化开发的难点并不在于图表类型的多样化,而在于如何能在简单的一页之内让用户读懂二手房数据之间的层次与关联,这就关系到布局、色彩、图表、动效的综合运用。如排版布局应服务于业务,避免为展示而展示;配色一般以深色调为主,注重整体背景和单个视觉元素背景的一致性。本文居住Echarts中地图、线条等组件,将分析结果较为直观的展示给平台用户,使得用户能够简便的获取有效的信息。

4.4 本章小结

本章主要分析了基于大数据的二手房数据分析系统开发过程中居住到的技术和具体的实现步骤,这其中主要介绍了基于Flask框架的二手房数据大数据分析系统的搭建环境和开发步骤,包括程序中的一些数据库配置等。前端页面采用的是线性回归算法和Flask实现。

结  论

由于基于大数据二手房数据分析平台是由本人独立开发,因此在系统设计和业务逻辑方面更多地借鉴了目前市场上较为流行的框架和技术点,包括大数据技术,很多是不熟悉没接触过的,在开发过程中不断学习新知识。另外由于本人的时间和精力的原因,在系统开发过程中有很多地方可能并不能够完全尽如人意,还有许多需要补充的功能与模块。

大数据二手房数据系统是在对相关管理范畴进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计等,是一个具有实际应用意义的管理系统。根据本毕业设计要求,经过四个多月的设计与开发,大数据二手房数据系统基本开发完毕。其功能基本符合用户的需求。

    为保证有足够的技术能力去开发本系统,首先本人对开发过程中所用到的工

具和技术进行了认真地学习和研究,详细地钻研了基于Python的网络爬虫技术

以及Echarts, CSS, HTML等前端开发技术,同时还研究了大数据开发技术线性回归算法, HDFS, 线性回归算法等。

从二手房数据大数据分析平台需求分析开始,到整体框架的设计以及各个详细功能的设计具体实现,最后基于大数据平台的二手房数据分析系统的基础架构和详细功能已经大致开发完毕,并将其部署在本地服务器当中运行,用户可以登录居住该系统进行二手房数据的筛选,同时查询大数据的分析结果。

参考文献

[1]陈娟,陈雯,石飞,王建英,胡英。 基于Python的信号与系统实验教学改革与实践[J]. 实验技术与管理,2021,(05):196-200.

[2]杨军,张岳,刘燕峰。 基于Python语言的数据挖掘课程的建设与研究[J]. 科技风,2021,(14):80-82.

[3]钟自成,邵俊杰,李旺年,张宁。 基于Python和ABAQUS的钻机摆动机构拓扑优化设计[J]. 煤矿机械,2021,42(06):125-127.

[4]徐梓赫,廖锦。 Python提取GIS就业信息并进行可视化分析研究[J]. 网络安全技术与应用,2021,(05):45-47.

[5]叶惠仙,游金水。 Python语言在大数据处理中的应用[J]. 网络安全技术与应用,2021,(05):51-54.

[6]张玉荣,王强强,吴琼,祝方清。 基于Python-OpenCV图像处理技术的小麦不完善粒识别研究[J]. 河南工业大学学报(自然科学版),:1-13.

[7]陈慧,郝锦亨,袁志涛,罗佳伟,陈胤熹,郑少鹏,黎佩瑜,吕咏锶,梁世濠,赖林浩,曹诗林。 利用python/RGB色彩数据分析平台快速测定还原糖浓度[J]. 现代食品科技,:1-6.

[8]谢树仁,邓凯成,喻琨,陈政。 基于Python框架的农业信息共享平台研究--以湖南省衡阳市为例[J]. 经济师,2021,(05):37-39.

[9]张军。 一种基于Python的售后配件批处理软件的设计[J]. 汽车实用技术,2021,46(08):68-69.

[10]胡钊。 基于Python Flask的温度数据可视化[J]. 电子世界,2021,(08):117-119.

[11]冯兴民。 哈夫曼编码方法的选择及其Python的实现[J]. 电子世界,2021,(08):188-189.

[12]范洁。 基于Python的网络流量特征统计分析与可视化[J]. 信息技术与信息化,2021,(04):49-51.

[13] 陈丽红, 赖仕慧. 基于机器学习的二手房价格预测研究[J]. 科技资讯, 2020(15):20-21.

[14] 张明, 王丽芳. 基于数据挖掘技术的二手房交易价格预测[J]. 计算机应用与软件, 2019, 36(11):61-64.

[15] 邱建华, 叶曦. 基于Django框架的物流管理信息系统的设计与实现[J]. 计算机科学与应用, 2020, 10(9):136-138.

致  谢

附  录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值