西安房价在下个月内什么地方最值得买?——上篇

2023-11-03 20:10

本文主要是介绍西安房价在下个月内什么地方最值得买?——上篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题解析

为什么是下个月呢?

  因为我能够获取到的数据有限,目前只爬了2017.7月份展示在安居网、链家和房天下的静态数据。所以只能用这些数据预测一个月后的房价情况。

什么地方指的是哪些地方?

  我根据爬下来的数据,用房子所在区域为指标来划分。这些地方包括城东、西、南、北、内,滻灞(输入法打不出来简体字),长安区,经济开发区,西咸新区,高新,曲江,纺织城,泾渭,西安周边。
  划分区域并没有什么依据,只是爬下来的数据是按照这么分的。

最值得买用什么衡量?

  我定义了增长率这个指标。即预测的房价减去现有的房价再除以现有的房价,按照增长率的高低来判断哪个区域的房子最值得买。

解决问题的思路

  • 爬取数据(安居网、链家网、房天下)
  • 清洗数据
  • 选择对价格影响最大的特征
  • 运用机器学习算法和房价数据信息,对下个月的房价进行一个预测
  • 算出每个区域的增长率并排序

第一步:爬取数据

1.1 安居网

  安居网有两种数据,一种是按照楼盘显示的每平的平均价格的数据:https://xa.fang.anjuke.com/loupan/all/;(爬取的代码见“爬数据/安居网楼盘爬取.ipynb“,爬取的结果存储在“爬数据/安居网楼盘.csv“中)

  还有一种是直接给出房源的总价的数据:https://xa.fang.anjuke.com/fangyuan/s?m=a (爬取的代码见“爬数据/安居网房源爬取.ipynb“,爬取的结果存储在“爬数据/链家网楼盘.csv“中)

1.2 房天下

  房天下我只爬了房源,没有爬楼盘。后面如果有时间我会考虑再把楼盘这部分的数据加上。http://newhouse.xian.fang.com/house/s/c9y/?ctm=1.xian.xf_search.fysearch.1 (爬取的代码见“爬数据/房天下房源爬取.ipynb“,爬取的结果存储在“爬数据/房天下房源.csv“中)

1.3 链家网

  链家网只有一种数据,按照楼盘显示每平的平均价格:http://xa.fang.lianjia.com/loupan (爬取的代码见“爬数据/链家网楼盘爬取.ipynb“,爬取的结果存储在“爬数据/链家网楼盘.csv“中)

1.4 房天下的统计数据

  房天下基于自己的数据库,也统计了西安每个地区县房价的查询(住宅):http://www.creprice.cn/market/distrank/city/xa.html?month 我将它爬下来,用于以后跟我自己分析得到的结果进行对比,最终得到一个融合的结果。(爬取的代码见“爬数据/区五年均价爬取.ipynb“,爬取的结果存储在“爬数据/q5.csv“中)

第二步:清洗并处理数据

  这里清洗数据做了六件事:
1. 将前一步所有的文件合并成两类:房源&楼盘。其中train是有价格的,test是没有价格的,作为我们预测的数据。
2 把特殊的符号过滤掉
3. 把一些连在一起的特殊值分开,例如几室几厅几卫
4 将空白的值填充
5. 将一些特征转化为数字以便后期的特征选取
6. 将混乱的特征值展开,每个特征值为一列,如果此条记录有这个特征,则其值为1,没有这个特征的话,值就为0.
7. 将值标准化,正则化
  处理前五件事过程用的是excel,5的处理代码为“清洗数据/数据处理(楼盘train).ipynb”。6的处理代码与下一步的代码在一起,处理好的数据作为“特征选择“的输入。
下面是对文件处理的一些说明:

2.1 安居网房源.csv

  • Total(Wan):房源的总价,单位为万元(¥)
  • Resident:楼盘小区名称
  • Area:建筑面积,单位为平方米
  • bed:卧室数量
  • living:客厅数量
  • bath:卫生间数量
  • Decoration:装修情况 : 毛坯:1 | 简装修:2 | 精装修:3
  • Region:地区:城东:1 | 城南:2 | 城西:3 | 城北:4 | 曲江:5 | 长安:7 | 泾渭:8 | 滻灞:9 | 经济开发区:10 | 西安周边:11

2.2 安居网楼盘.csv:

  • average:每平的价格(单位:元)
  • sale:在售情况:在售:1 | 待售:2
  • mark:关注度
  • Tags:标签,详细的说明请看“清洗数据/Tags说明.xlsx”
  • region:地区:1-11和上面一样,西咸新区:12 | 纺织城:13 | 城内:14

2.3 房天下房源.csv:

  • Total(Wan):房源的总价,单位为万元(¥)
  • Resident:楼盘小区名称
  • Area:建筑面积,单位为平方米
  • bed:卧室数量
  • kitchen:厨房数量
  • living:客厅数量
  • bath:卫生间数量
  • Direction:朝向:东:1 | 南:2 | 西:3 | 北:4
  • region:区域: 高陵:15
  • floor:楼层

2.4 链家网楼盘均价.csv:

  • average:每平的价格(单位:元)
  • sale:销售情况:在售:1 | 待售:2
  • Area:面积(单位:平方米)
  • region:区域:城内:14 | 高陵:15 | 户县:16 | 阎良:17 | 临潼:18
  • Resident:楼盘小区名称
  • sale:销售情况:在售:1 | 待售:2 | 售罄:3
  • Tags:标签,详细的说明请看“清洗数据/Tags说明.xlsx”

2.5 q5.csv:

  • average:平均单价(元/每平米)
  • Month:环比上月
  • Year:同比去年

第三步:选择对价格影响最大的特征

  我们得到的两类数据,一类是房源数据,包括房子的“总价“、”面积“、”户型“、”朝向“、”区域“、”楼层“,”所在楼盘“这七个字段,是描述房源的特征。另一类数据是楼盘均价,包括房子的”每平均价“,”区域“,”是否在售“,”热度“和按照tags出现的次数多少,选择的前15个出现频率最高的tag。

  需要说明的是:按照逻辑应该把这两个表merge起来的,但是由于没有唯一识别的主键,我不能将这两个表的内在联系找出来,所以只能分开分析了。

3.1 房源的处理

  我们将房子的总价与其他六个特征的关系图画出来(”所在楼盘“类型是string的,不能直观表示),并观察一些现象。(处理代码在”特征选择与预测/数据处理(房源train).ipynb”中)

3.1.1 我们先来看看房价整体的情况

  • 总体数据

    这里写图片描述

      总共有1936条数据,房价的均值为97.205852,标准差:56.850668,最小值: 3.000000,四分位数:55.500000,中位数:81.900000,四分之三位数:142.920000,最大值:1200.000000

  • 分布的图像
sns.distplot(houserc['Total'], fit=stats.dgamma);
fig = plt.figure()
res = stats.probplot(houserc['Total'],sparams=(4,0),dist=stats.dgamma, plot=plt);

  我们将会得到两张图,第一张是distplot函数生成的图,第二张是probplot函数生成的图:


这里写图片描述

  distplot函数生成的”总价”log后的分布图。对于这个图的一些说明:
1. 横轴为log(总价),此处log函数是以2为底的,纵轴为高斯核概率密度。
2. 蓝线是将直方图平滑后的结果,黑线是将蓝线拟合后的结果。
3. distplot函数参数的含义请戳 这里。
4.“fit=stats.dgamma”这个参数是我调参调出来的,log(总价)服从dgamma分布。试的过程就是将黑线与蓝线做对比,哪个分布形状最接近,即为哪个分布。

  Q&A时间:
【Q1】:为什么要将总价求log函数?
【A1】:因为总价本身拟合的分布都不准确,所以对总价进行一些处理,这样拟合起来就会更加接近某个分布。
【Q2】:高斯核概率密度是什么?干什么用的?
【A2】:高斯核概率密度,就是基于高斯函数的核密度。为什么是高斯函数而不是别的核函数?因为官方文档中写的是高斯函数。核密度是用来估计一组数的分布的东西。一般我们估计一组数的分布,总是喜欢先假设它们服从xx分布,然后去验证。但是这种假设,一般都太理论化了,跟实际脱轨。所以有人就提出了“核密度估计法”这种非参数估计的方法,不假定任何参数,从数据样本本身出发研究数据分布特征。
【Q3】:为什么要研究数据的分布?有什么意义?
【A3】:考虑如果你的总体数据很大,我们不可能逐个去分析,只能抽样去分析。抽出的样本,要和总体有某种关系才可以代表总体,所以要研究总体的分布,这样所有的数据都服从一个分布,样本就可以代表总体了。

  probplot函数生成的”总价”概率图。


这里写图片描述

  对于这个图的一些说明:
1. 这图的 作用:根据指定的理论分布(默认为正态分布)的分位数,生成样本数据的概率图。 probplot可选地为数据计算最佳拟合线,并使用Matplotlib或给定绘图函数绘制结果。这个生成的过程在此处不详说了,我们最终要达到的目的就是拟合一条线。
2. 横坐标是理论分位数,这个值由自己决定,只影响横坐标(这个有待考证,因为相关资料都找不到这个理论分位数还有什么作用,请知道的朋友告知我,万分感谢)。 纵坐标是有序值.至于为什么是这些值,这得看一些 详细说明,在这里不详细解释。
3. probplot**函数参数**的含义请戳 这里。
4. 具体说说两个参数:
【sparams=(4,0)】:这个4是我调出来的能够使图形最连贯且最能符合一条直线的参数,官方文档的解释是形状参数。经过前后的比较,这个值越大,图形越像被拉长一样:

这里写图片描述
这里写图片描述

  而0这个值,应该是表示图形中点所对应的横坐标。官方文档说是位置和规模。这里我的理解是,你想以谁为中心来取分位数。

【dist=stats.dgamma】:由于我们上面那一张图拟合下来的结果是数据服从dgamma分布,所以这里我们也要按照dgamma分布来去生成一个概率图。


  • 偏度与峰度:
piandu = houserc['Total'].skew()#偏度
fengzhi = houserc['Total'].kurt()#峰度


这里写图片描述

【偏度】: 用来度量分布是否对称。较大的正值表明该分布具有右侧较长尾部。较大的负值表明有左侧较长尾部。我们是正值,说明数据右偏,数据集中在左边。(注:左偏右偏的定义请自行百度~)
【峰度】: 峰度系数是用来反映频数分布曲线顶端尖峭或扁平程度的指标。大于0表示比正态分布要陡峭,小于0表示比正态分布要扁平。我们的结果是负值,则分布是扁平的。


  • 结论
      通过上面的操作,我们得出:现在的价格数据,是右偏、扁平的,服从dgamma分布。所以平均数的参考价值没有中位数和四分位数的参考价值高。

3.1.2 面积与价格的散点图

var='Area'
data = pd.concat([houserc['Total'],houserc[var]],axis=1)
data.plot.scatter(x=var,y='Total',xlim=(0,300),ylim=(0,350))


这里写图片描述

  可以看出来我们的房价和面积是一个线性关系。而目前所有的房价都随着面积呈上升趋势。最高的那些离散的点也是随着大的趋势的,所以不用删除他们。

3.1.3 卧室数量与价格的散点图


这里写图片描述

  总价和卧室数量呈阶梯状分布,卧室越多,总价越高。
  剩下的分类特征的散点图就不在此详述了。

3.1.4 地区与价格的箱线图

var = 'region'
data = pd.concat([houserc['Total'],houserc[var]],axis=1)
f, ax = plt.subplots(figsize=(10, 8))
fig = sns.boxplot(x=var, y="Total", data=data)
fig.axis(ymin=0, ymax=300);


这里写图片描述

  集中的部分形成了一个“盒子”,具体的线的含义如下(上边缘即最大的非异常值):

这里写图片描述

  由于上面的结论,我们不能光看平均数了,所以箱线图可以更好地反映出来我们的问题。新房集中在:区域1、2、5、6、7、12、15这几个区域。可以看出第1,2区域的房价不高,两区域的中位数差不多,2区域整体比1区域的总价高一些。5区域房价最高,其中位数已经高于其他区域的最高房价。6区域跨度最大,中位数在60万左右。7区域房价偏低,最高的都在50万之下。

3.1.5 楼层与价格的箱线图


这里写图片描述

  需要说明一点:楼层在采集数据时有很多缺失的,我统一用“15层”来填补空缺。可以看出楼层和总体价格的关系,可以看出高价格的在5-14层和23-32层。由于这里的数据不完整,所以没有办法得到一个详细的情况,只是一个大概的总结。

3.1.6 特征的热力图

k = 10 
cols = corrmat.nlargest(k, 'Total')['Total'].index
cm = np.corrcoef(houserc[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)
plt.show()


这里写图片描述

  floor显示的相关度为负数,是因为数据缺失太多,我全用15补全了,结果不准确。能从热力图看出来这几个特征和房价都是很有关系的。到此我们选出了影响房价总价格的几个特征:Area,bed,living,bath,Direction,region,floor优先级依次递减。

                  memoryjdch编辑与2017.8.9

这篇关于西安房价在下个月内什么地方最值得买?——上篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/340581

相关文章

从希腊神话到好莱坞大片,人工智能的七大历史时期值得铭记

本文选自historyextra,机器之心编译出品,参与成员:Angulia、小樱、柒柒、孟婷 你可能听过「技术奇点」,即本世纪某个阶段将出现超级智能,那时,技术将会以人类难以想象的速度飞速发展。同样,黑洞也是一个奇点,在其上任何物理定律都不适用;因此,技术奇点也是超越未来理解范围的一点。 然而,在我们到达那个奇点之前(假设我们能到达),还存在另一个极大的不连续问题,我将它称之

Oracle中实现在原来自段值得基础上追加字符串

update person t set t.name = t.name || 'and 李思思' where t.id = '2';

二分猜数易错的地方

今天做简单的二分猜数问题,while循环总是跳不出去,搞了好久才弄好了。。。好几次都这样,总结一下吧 while(left <= right){int mid = (left+right)/2;if(ok(mid)) left = mid+1,ans = mid;//记录结果,要不然跳不出循环,视题目而定,ans也可以写在下面else right = mid-1;}

除猫毛应该用哪款宠物空气净化器?希喂、安德迈哪款更值得推荐

自从我的朋友也养了猫之后,我和她能讨论的话题就更多了,每天都在分享自家的猫咪今天干了什么可爱的事,一起探讨应该怎么让猫咪胖起来,每天撸都撸不够,好想时时刻刻和猫咪待在一起。 但她说到,本来这种生活挺好的,但是自从养了猫之后,家里的各个角落都开始有猫咪的毛发,每天都得清理,而且还有这个排便时的臭味,家里简直就是无法忍受,导致现在家里的氛围就更差了,她婆婆每天都在担心养了猫之后对家里人造成健

推荐好文,值得一读

红色标题的都是实打实的实战经验没有公式,值得仔细读一读 朱小强写的两篇分享的方法论文章,值得好好揣摩,看了之后感觉更通透了,知道了背后的方法论 https://mp.weixin.qq.com/s/S-8n1QSTP7zJBTYUnLPC7w https://zhuanlan.zhihu.com/p/54822778 CTR预估模型发展过程与关系图谱(不同模型的优缺点)  https:/

Flux持续火爆,这些LoRA、ControlNet、工作流你值得拥有

大家好,我是每天分享AI应用的萤火君! Flux自发布以来,受到了广大AI绘画爱好者的一致好评,远远的将SD3甩在了脑后,其出图质量媲美Midjourney。而且Flux迭代迅速,接连发布了Flux.1的开发模型和个人模型,其Lora模型、ControlNet模型也迅速推出,社区创作热情高涨。 为了让大家对Flux有一个全面的认识,本文将介绍下Flux基础模型、LoRA模型,以及Control

Oracle OCP认证值得考吗? 需要门槛吗?

随着数据量的爆炸性增长和企业对数据依赖性的提升,对数据库专业人士的需求也在不断上升。OCP认证,作为Oracle公司提供的权威认证之一,长期以来被视为数据库专业人士技能和知识水平的重要标志。 但随着技术的发展和认证种类的增多,疑问也在不断出现:在当前的市场环境下,OCP认证还值得考吗?考取这一认证又需要满足哪些条件? 今天就来聊聊有关OCP的这些问题,让你不再困惑。   01 还值得考吗?

利用UIWebView获取userAgent需要注意的地方

网络通信有时候需要传递参数userAgent,iOS中获取userAgent很简单. UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];NSString *userAgentString = [webView stringByEvaluatingJavaScriptFromString:@"naviga

计算机毕业设计Spark+PyTorch知识图谱房源推荐系统 房价预测系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习

《Spark+PyTorch知识图谱房源推荐系统》开题报告 一、选题背景与意义 1.1 选题背景 随着互联网的快速发展和大数据技术的广泛应用,房地产行业特别是房屋租赁市场迎来了前所未有的变革。房源信息的海量增长使得用户在寻找合适的房源时面临巨大挑战。传统的房源推荐系统往往基于简单的规则或用户历史行为,难以提供精准、个性化的推荐服务。因此,如何利用大数据和人工智能技术提高房源推荐的准确性和个性

Claude推出Enterprise企业计划!有这三点值得B端产品借鉴!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之路不迷路,2024我们一起变强。 企业(B端)客户对于AI公司来说一直是兵家必争之地,不管是国内AI还是国外AI,比如百度文心、阿里通义、O