房价数据分析

文章目录

  • 一、数据预处理
    • 1、删除多余列
    • 2、缺失值、异常值处理
  • 二、 数据探索分析
    • 1、DistanceKM与房价关系
    • 2、14岁及以下比重与房价关系
    • 3、自驾实际值与房价关系
    • 4、65岁及以上比重与房价关系
    • 5、人口占比与房价关系
  • 三、机器学习预测房价
    • 1、模型选择
    • 2、模型调参
  • 四、总结

一、数据预处理

使用jupter book载入训练数据

import numpy as np
import pandas as pd
import re
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
data=pd.read_excel(r'C:\Users\Administrator\Desktop\house\train.xlsx')
data.head()

在这里插入图片描述
数据有62个特征值,观察后发现数据中有不少缺失值,并且存在很多信息冗余的特征,有必要对其逐一分析:

1、删除多余列

首先id列以及板块列作为标识列可以作直接删除处理

在这里插入图片描述
这些列表示都是人口特征,其中存在信息冗余,人数和比重保留其一即可,这里我选择保留比重数据

在这里插入图片描述
这些列表示的是房屋所在区域的配套设施数量分布,其中优势配套分布列并没有提供额外的信息,对于建模来说意义不大,可以做删除处理。

在这里插入图片描述
接下来的这几列表示的是房屋的交通便利情况,这里住户数量和路口数量特征绝大多数为0,判断为缺失值,做删除处理。 自驾和自驾实际值表示含义未可知,两者之间差距比较大,应该是量级不一致导致的。这里我们只保留一个自驾实际值。公共交通我们也只保留一个实际值;

在这里插入图片描述
这几列表示一些民生部门的数量分布,其中优势分布属于信息冗余,我们将其删除

在这里插入图片描述
最高房价列和房价中位数列由于缺失值太多只能做删除处理
在这里插入图片描述
这几列表示房屋附近产业分布,占比和数量我们保留其一即可,这里选择保留数量。优势产业为信息冗余直接删除
在这里插入图片描述
这几列房屋所在区域氛围,优势氛围列信息冗余,做删除处理
在这里插入图片描述
后面这几列同样缺失比例过大,做删除处理
在这里插入图片描述
这几列,与前面的氛围列数据重合了,作删除处理

在这里插入图片描述

columns=['人口占比', '14岁及以下比重', '15至64岁比重', '65岁及以上比重','成人高等学校', '医院数量', '中学', '普通高等院校', '幼儿园', '景观数量', '小学','自驾实际值','公共交通实际值', '生产生活服务部门数量','科学素质提高部门数量', '党政机关数量', '流通数量', '第一产业数量','第二产业数量','第三产业数量','住宅氛围', '办公氛围', '商业氛围', '工厂氛围','DistanceKM', '房价']
data_.loc[:,columns]new=data

删除多余的列之后,现在只有26列,分析难度大大降低

2、缺失值、异常值处理

对于人口特征’人口占比’, ‘14岁及以下比重’, ‘15至64岁比重’, '65岁及以上比重’这几列来说,数值为0的应该表示的是缺失值,这里我们使用均值来代替

自驾实际值公共交通这两列也有不少0值,其实这两列值代表的含义并不可知,这里姑且也用平均值去代替

peoplecolumns=['人口占比', '14岁及以下比重', '15至64岁比重', '65岁及以上比重','自驾实际值','公共交通实际值']
for i in peoplecolumns:data.loc[data[i]==0,i]=data[i].mean()

我们看一下房价分布的箱线图:

fig=plt.figure(dpi=400)
data.boxplot(column='房价', whis=1.5)
plt.title("房屋价格分析(箱形图)")
plt.show()

在这里插入图片描述
很明显有一个离群点,虽然这并不意味着这是异常值,它可能是别墅或者其他什么原因导致的价格偏高,但是这会对建模产生影响,我们需要将其删除

二、 数据探索分析

我们先看一下房价的整体分布

price = data['房价']
max_price = price.max()
min_price = price.min()
mean_price = price.mean()
median_price = price.median()print("最高价格:%.2f元/平方米" %max_price)
print("最低价格:%.2f元/平方米" %min_price)
print("平均价格:%.2f元/平方米" %mean_price)
print("中位数价格:%.2f元/平方米" %median_price)

在这里插入图片描述
可以看到房价最高价格为20000元,而最低价格为4450元,均值为8464元,这可能是一个中小城市的房价分布

plt.figure(dpi=200)
plt.xlim(0,30000)
plt.ylim(0,300)
plt.title("房屋价格分析")
plt.xlabel("房屋价格 (元/平方米)")
plt.ylabel("房屋数量")
plt.hist(price, bins=60)
plt.vlines(mean_price, 0, 300, color='red', label='平均价格', linewidth=1.5, linestyle='--')
plt.vlines(median_price, 0, 300, color='red',label='中位数价格', linewidth=1.5)
plt.legend()

在这里插入图片描述
从图中可以看到,房屋价格呈明显的双峰分布,集中在5000元和1万元两处。而房价的中位数与平均值差距很小,意味着房价的分布较为均匀。

接下来我们分析下具体的特征与房价之间的关系,因为特征数较多,我们这里只取最重要的五项特征进行分析。
首先使用xgboost算法计算特征重要度

import xgboost as xgb
model = xgb.XGBRegressor(max_depth=5, learning_rate=0.1, n_estimators=160, silent=True, objective='reg:gamma')
from xgboost import plot_importance
model.fit(data_new.loc[:,data_new.columns!="房价"], data_new.loc[:,"房价"])
fig, ax = plt.subplots(1,1,figsize=(10,5),dpi=200)
plot_importance(model,ax=ax,max_num_features=5)

在这里插入图片描述
可以看到DistanceKM、14岁及以下比重、自驾实际值、65岁及以上比重、人口占比这五项对于房价的影响是最重要的

1、DistanceKM与房价关系

我们使用seaborn中的regplot作图函数,可以描绘两列数据的散点图,同时可以自动拟合它们之间的关系

plt.figure(dpi=200)
sns.regplot(x="DistanceKM",y="房价",data=data_new,color="g")

在这里插入图片描述
可以看到随着距市中心距离的提升,房价呈现下降的趋势,这与我们的常识相符合

2、14岁及以下比重与房价关系

plt.figure(dpi=200)javascript
sns.regplot(x="14岁及以下比重",y="房价",label="14岁及以下比重",data=data_new,color="b")

在这里插入图片描述
可以看到随着14岁以下占比的提高,房价有明显上升趋势,这可能是因为青少年集中的区域其教育资源一般较为密集,房价也会偏高

3、自驾实际值与房价关系

plt.figure(dpi=200)
sns.regplot(x="自驾实际值",y="房价",label="14岁及以下比重",data=data_new,color="b")

在这里插入图片描述
随着自驾实际值的提升,房价呈下降趋势,此处自驾值的具体含义并不可知,其原因也无法探究

4、65岁及以上比重与房价关系

plt.figure(dpi=200)
sns.regplot(x="65岁及以上比重",y="房价",data=data_new,color="b")

在这里插入图片描述
可以看到随着65岁及以上比重的提高,房价也呈现上升趋势。一方面可能是因为老年人财富积累高,能承担高房价。另一方面是老年人居住地一般为老城区,房价一般来说比新城区要高。

5、人口占比与房价关系

我们将人口占比分为四个区间’人口稀疏’,‘人口较稀疏’,‘人口较密集’,‘人口密集’,分析其与房价的关系

data["peoplesize"]=pd.qcut(data["人口占比"],4,labels=['人口稀疏','人口较稀疏','人口较密集','人口密集'])
plt.figure(dpi=200)
data.groupby("peoplesize")["房价"].mean().sort_values(ascending=False).plot(kind="bar")
plt.xlabel("人口密集程度")
plt.ylabel("房屋平均价格(元/平方米)")

在这里插入图片描述
虽然变化不是很明显,但是还是可以看出人口稀疏的地方房价反而要比人口密集的地方要多,这似乎与我们的常识不想符合,可能是因为该城市工厂数量较多,所在区域人群密度较高,而工厂位置一般位于郊区,导致房价偏低、

三、机器学习预测房价

1、模型选择

对数据进行以下处理:确定特征与标签、分割数据以及归一化处理

x=data_new.loc[:,data_new.columns!="房价"]
y=data_new.loc[:,'房价']from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=40, test_size=0.3)
from sklearn.preprocessing import MinMaxScaler
ss_x = MinMaxScaler()
x_train = ss_x.fit_transform(x_train)
x_test = ss_x.transform(x_test)

分别调用sklearn库中相应的模块,建立随机森林回归、极端随机森林回归、xgboost模型,并在训练集上训练模型,然后在测试集上预测二手房的房价,使用r2-score评估模型精度

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import  r2_score
from sklearn.ensemble import ExtraTreesRegressor
import xgboost as xgb
rfr=RandomForestRegressor()
etr=ExtraTreesRegressor()
xg=xgb.XGBRegressor()
rfr.fit(x_train,y_train)
etr.fit(x_train,y_train)
xg.fit(x_train,y_train)
print('随机森林回归模型的r2-score为:',r2_score(rfr.predict(x_test),y_test))
print('极端随机森林模型的r2-score为:',r2_score(etr.predict(x_test),y_test))
print('xgboost模型的r2-score为:',r2_score(xg.predict(x_test),y_test))

在这里插入图片描述
可以看到极端随机森林模型的表现要更好一点,所以我们选择极端随机森林算法建立房价预测模型

2、模型调参

对极端随机森林算法进行调参,这里参数选取**‘max_depth’,‘n_estimators’**两个参数进行调参,它们分别代表决策树的深度以及模型迭代次数

from sklearn.model_selection import GridSearchCV
estimator = etrparam_grid = {'max_depth':[10,20,30], 'n_estimators': [10,50,100]
}
ETR=GridSearchCV(estimator,param_grid)
ETR.fit(x, y)
print('Best parameters found by grid search are:', ETR.best_params_)

在这里插入图片描述
当模型参数为’max_depth’: 30, ‘n_estimators’: 50时,模型的拟合效果最好,我们最终采用此模型预测房价
在这里插入图片描述
这是我们预测的房价整体分布,房价呈现正态分布,中位数与平均数相近,房价分布均匀。

四、总结

本项目对给出的房价数据进行了分析建模,首先对数据进行预处理,减少了不必要的特征,以及对缺失值、异常值进行了处理。然后采用统计分析的方法对数据进行初步分析,大致了解房价分布及其影响因素;最后采用机器学习方法建模预测,并比较了几种常用回归模型的预测效果。由于时间有限,本次数据分析项目还有很多可供优化的方面,如缺失值、异常值的处理可以如使用算法建模填充,模型的选择、调优可以再添加几组对照

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22561.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北京二手房房价分析(建模篇)

数据科学俱乐部 中国数据科学家社区 本篇将继续上一篇数据分析用Python分析北京二手房房价之后进行数据挖掘建模预测,这两部分构成了一个简单的完整项目。结合两篇文章通过数据分析和挖掘的方法可以达到二手房屋价格预测的效果。 下面从特征工程开始讲述。 特征工程…

我国主要城市2023年房价数据

房价是一个城市发展程度的重要体现,一个城市的房价越高通常代表这个城市越发达,对于人口的吸引力越大!因此,房价数据是我们在各项城市研究中都非常常用的数据! 本次我们为大家带来的是我国主要城市的房价数据&#xf…

分析天津市房价的空间因素影响

所有代码与解析 # -*- coding: utf-8 -*- """ Created on Thu Mar 4 16:23:30 2021author: 89344 """import numpy as np import pandas as pd import matplotlib.pyplot as plt import warnings warnings.filterwarnings(ignore) from bokeh.…

Python爬取天津房价并进行可视化

Python爬取天津房价并进行可视化 步骤代码 步骤 1.爬取网页信息 2.解析网页信息,获取需要的数据,存入CSV文件中 3.读取CSV文件,对数据进行处理,包括剔除异常值,空值等,进行可视化 代码 import requests …

房价概况:2013年2月26日天津各区县房价一览

2013年2月26日全市新建商品房交易373套、面积37502.8平方米,平均价格每平方米10504元。其中,住宅335套、面积34159.8平方米,平均价格每平方米9844元。二手住宅交易275套、面积22696.8平方米,平均价格每平方米8579元。

Spring实战----Taco Cloud(墨西哥煎玉米卷在线订购系统)

记录一下根据《Spring实战(第五版)》(人民邮电出版社)所学习的过程 目录 项目初始化 开发WEB应用 使用数据库 使用Spring Data JPA进行持久化数据 使用Spring Security保护Spring 自定义用户验证 项目初始化 New一个Project,选择Sprin…

C/C++字符串

一.C风格的字符串 1. char a[6] { h,e,l,l,o,\0 }; printf("%s", a);//hello#include<iostream> #include<string> using namespace std; int main() {char a[6] { h,e,l,l,o,\0 };char b[5] { h,e,l,l,o};//空间至少大一位留出\0位置char c[6] { h,e…

Qt输入窗口部件编程(一) QComboBox和QFontComboBox

文章目录 前言1、 Qt常用的输入窗口控件2、QFontComboBox 和 QComboBox控件编程2.1 控件简介2.1.1 QComboBox组合框2.1.2 QFontComboBox字体组合框 2.2 例程功能设计2.3 例程执行效果2.4 生成项目2.5 代码编辑2.5.1 修改项目文件_qcombobox.pro2.5.2 修改 main.cpp2.5.3 修改 w…

Xmind8 乱码问题解决(查看文件字体并下载安装相应字体)

每台电脑引起Xmind软件出现乱码的原因也不一样&#xff0c;本文仅适用于解决字体缺少或者字体版本不对而引发的乱码问题。每台电脑缺少的字体包也不一样&#xff0c;要通过“工具”-》“提取样式”菜单&#xff0c;具体分析自己的Xmind文件需要什么字体&#xff0c;然后搜索对应…

idea主题 插件 乱码 快捷键

idea样式网站 http://www.easycolor.cc/ http://www.riaway.com/ idea 乱码情况 中文乱码问题分类&#xff1a; 1.编码普通中文乱码 2.properties文件中文乱码 3.console控制台中文乱码 4.搜索框中文乱码 5.svn注释中文乱码 解决方法&#xff1a; 1、编码普通中文乱码 ①s…

基于声学模型共享的零资源韩语识别系统

声学模型共享方法是极低资源小语种语音识别一种解决方案&#xff0c;能够实现不需要任何语音数据的语音识别。本文介绍清华大学语音与音频技术实验室的零资源韩语语音系统&#xff0c;其在不使用任何韩语语音数据的情况下&#xff0c;在Zeroth韩语数据集上的测试CER达到了27.33…

韩语在线翻译图片识别_图片怎么转表格excel

图片转表格excel&#xff0c;快来免费用 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 相信大部分小伙伴选择拍图识字 是因为强大的ocr识别功能 图片文字一键提取导出 但是&#xff0c;有多少人知道 拍图识字还可以成为你的私人翻译&#xff01;1 多语言转换 拍图识字首页点击拍照/…

韩译中难吗,如何做好韩语翻译

我们知道&#xff0c;韩语是韩国的官方语言&#xff0c;由于长期和中国文化的接触&#xff0c;历史上曾用汉字标记&#xff0c;并且将汉语融入其词汇&#xff0c;基于这一特点&#xff0c;韩译中难吗&#xff0c;如何做好韩语翻译? 据了解&#xff0c;中韩文化交流的历史可以追…

韩语在线翻译图片识别_3个OCR文字识别工具,最后一个许多人都不知道!

在日常生活和工作中,经常有需要录入一张图片或实物内容的文字信息的时候,对于少量内容,你或许可以轻松完成。可是一旦内容多,而你打字速度又不快的情况下,那可真的是一件非常枯燥又费力的事情。 而一般遇到这种情况,大家就可以利用OCR文字识别工具,只需简单对着物体拍张…

韩语在线翻译图片识别_如何用扫描全能王将图片转成文字?

扫描君有个写材料的朋友&#xff0c;每次需要摘录书或宣传册里的内容&#xff0c;他总是一个字一个字地敲&#xff0c;效率不高&#xff0c;还容易出错&#xff0c;自己也很痛苦&#xff01;&#xff01; 扫描君也有这样的亲身体会&#xff1a; 在微博、朋友圈里看到一些图片或…

韩语翻译拍照怎么弄?分享几款拍照翻译软件

拍照翻译软件是一种基于人工智能技术开发的翻译工具&#xff0c;它可以通过拍照识别文字&#xff0c;然后将文字翻译成大家选择的语言。这种翻译方式比传统的输入文字翻译更加方便快捷&#xff0c;无需手动输入文字&#xff0c;提高了翻译的效率、准确性&#xff0c;也提供更好…

yandex的“Search queries” report(搜索查询报告)

上一篇提到了我们查询访客关键词的入口&#xff0c;需要从“搜索查询”报告中点击进入&#xff0c;那么我们好好的来了解一下其中数据的具体含义吧~ 首先&#xff1a;该报告包含来自投放您的广告的搜索平台的用户查询&#xff0c;包括与您的关键字在语义上匹配的搜索查询。这句…

韩语识别_韩语文字识别_韩语图片识别 - 云+社区 - 腾讯云

广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 购买预付费包更加优惠 识别 小时语音不到 元 每月赠送免费额度最大程度降低客户成本 效果好 字准率 处于业界领先水平 与微信王者荣耀的语音转文字使用一套服…

【pdf翻译中文】免费自用日语pdf转中文、韩语pdf转中文(也可以转英文)或者其他小语种法语、德语pdf转中文

不是很精确、有点慢&#xff0c;但是也够用&#xff0c;胜在免费free 效果图&#xff1a; 一些对比&#xff1a; 模型来自于&#xff1a; https://huggingface.co/models 文件目录 调用模型的代码&#xff1a; 运行此段代码&#xff0c;执行翻译 一些简单的设置在这里…

在线翻译_英汉互译,支持繁体,韩语,日语 - 微信小程序在线翻译,单词句子翻译

打开微信&#xff0c;搜索页面 输入&#xff1a;超实用工具箱 找到上图所示的小程序点击打开&#xff0c;在菜单栏中找到【在线翻译】&#xff0c;点开进入翻译页面 有多种语言可以选择&#xff1a;英文&#xff0c;简体中文&#xff0c;香港&#xff0c;台湾&#xff0c;韩语&…