西北工业大学2021数模校赛B题 - 波士顿房价的预测

西北工业大学2021数模校赛B题 - 波士顿房价的预测

一.文章声明:

本篇文章是笔者自己结合网上的资料进行学习与建模的过程与心得,本人是python大数据小白,所以在拿到类似数据挖掘的题目时就向着数据挖掘的方向进行前进,5.1-5.3三天校赛数模主编程,第一次数模如有不正确不合适的地方,敬请指正,谢谢!!

二.题目简述:

在这里插入图片描述
由于本次B题的3,4问中开放性较高,所以本篇文章仅针对前两个问题进行解析与解答

三.使用python机器学习对于问题进行分析:

首先打开pycharm使用python进行环境变量的配置:

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
import seaborn as sns
import os
from scipy.stats import f as F_TEST
3.1 数据基本样貌解析:

问题一总述分析:
首先我们将所给附件转换为csv格式文件,使用Python的Pandas库将数据导入,用matplotlib和seaborn库绘制前13个变量与第14个变量户主拥有住房价值的中位数(以下简称房价)的散点图,以及变量间的热力相关图,分析出自变量与房价的线性相关关系,以及每一个自变量对房价的影响情况
加载数据集:

os.chdir(r'C:\Users\86135\Desktop\数模校赛B题')
f=open("boston.csv",encoding="utf-8")
df=pd.read_csv(f)

使用dataframe进行数据统计数据基本样貌:

data_pd=pd.DataFrame(data=df,columns=df.columns)
data_des=data_pd.describe()
data_des.plot()
plt.title("Description of data")
plt.legend(loc="best")
plt.savefig("数据基本样貌折线图.png")
plt.show()

对于数据基本面貌的折线图:
在这里插入图片描述
作出13个属性对于房价的影响的散点图:

plt.rcParams['font.sans-serif']=['SimHei']              #解决中文无法显示的问题
plt.rcParams['axes.unicode_minus']=False                #用来正常显示负号
titles=['CRIM','LRA','NCS','CR','NOX','ARN','HOB','WD5','RH','TAX','SFR','POAA','LSSP'] #设置标题
plt.figure(figsize=(12,9))                              #配置画布大小
for i in range(13):
    plt.subplot(4,4,i+1)
    plt.scatter(data_pd[titles[i]],data_pd['MV'],marker=".",color='g')
    plt.xlabel(titles[i])
    plt.title(str(i+1)+'.'+titles[i]+'-MV')
plt.tight_layout()
plt.savefig("13个属性的散点图")                            #依次做出13个图并且可视化
plt.show()

13个属性的散点图:
在这里插入图片描述
计算相关系数,选出相关系数>0.5的因素作为主要影响因素进行绘图:

print(data_pd.corr()['MV'])
corr = data_pd.corr()
corr = corr['MV']
corr[abs(corr)>0.5].sort_values().plot.bar(color=['lightblue','lightgreen','lightpink','orange'])
plt.title("Show the factors with correlation coefficient > 0.5")
plt.savefig("pearson_sorted_0.5.png")
plt.show()

主要因素:
在这里插入图片描述
对于上面的三个主属性进行散点绘图与放大分析:

#展示LSSP和MV之间的关系:
plt.scatter(data_pd['LSSP'],data_pd['MV'],c="lightblue")
plt.title("LSSP - MV")
plt.savefig("LSSP_MV散点图.png")
plt.show()

#展示SFR和MV之间的关系
plt.scatter(data_pd['SFR'],data_pd['MV'],c="lightgreen")
plt.title("SFR - MV")
plt.savefig("SFR_MV散点图.png")
plt.show()

#展示ARN和MV之间的关系
plt.scatter(data_pd['ARN'],data_pd['MV'],c="pink")
plt.title("ARN - MV")
plt.savefig("ARN_MV散点图.png")
plt.show()

三个主属性的相关散点图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由散点图可以看出,部分变量与房价有比较明显的相关关系,同时从热力相关图的最后一行(13个自变量和房价的相关系数)可以看出,绝大多数的变量与房价的相关系数都超过了0.3,其中有3个超过了0.5,分别为ARN、SFR、LSSP,有着较为明显的相关关系。

3.2 数据相关性简介:

使用热力图进行属性之间的相关性解析:

_, ax = plt.subplots(figsize=(12, 10)) #分辨率1200×1000
ax.set_title("Pearson Heatmap")
corr = df.corr(method='pearson') # 使用皮尔逊系数计算列与列的相关性
sns.heatmap(corr,square=True,cmap="rainbow",cbar_kws={
   'shrink': .9},ax=ax,annot=True,annot_kws={
   'fontsize': 12})
plt.savefig("pearson_heatmap.png")
plt.show()

热力相关图:
在这里插入图片描述
根据13个变量与房价的相关系数(以及热力图中的观测)来说明单个变量如何影响房价并做出一定的解释:
CRIM: 与房价的相关系数为-0.39,为负值且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,人均犯罪率高的地区,房价相对低,并且相关程度中等。实际上,人均犯罪率高的地区治安差,人群受教育程度低,黑势力较为集中,房价就较低。
LRA: 与房价的相关系数为0.36,为正值且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,大块占地住宅区比例高的地区,房价相对高,并且相关程度中等。实际上LRA,反映的是与市中心的接近程度,显然越接近市中心的地区LRA越高,房价也越高,呈正相关,符合实际情况。
NCS: 与房价的相关系数为-0.48,为负值且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,非零售商业占地比例高的地区,房价相对低,相关程度中等。根据资料显示,波士顿的批发厂主要分布在离市中心较远的地区,所以该变量同样能反映距离市中心的距离,比例越大,离市中心越远,房价越低。
CR: 与房价的相关系数为0.18,为正值且绝对值在0.3以下,说明在其它因素相同的情况下,靠近河流的地区,其房价相对高一点,相关程度较弱。实际上,靠近河流的地区,其自然环境相对较好,交通运输相对便利,但可能距离市中心较远,故综合起来看,房价受它的影响不大。更为关键的因素是,CR的取值只有0,1两种,故与其它变量的相关性不能明确的表现。
NOX: 与房价的相关系数为-0.43,为负值且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,氮氧化物浓度高的地区,房价相对低,相关程度中等。实际上,氮氧化物浓度高的地区主要在大型工厂附近,自然环境相对差,且距离市中心较远,故房价相对低。
ARN: 与房价的相关系数为0.7,为正值且绝对值大于0.5,说明在其它因素相同的情况下,每户平均房间数高的地区,房价相对高,相关程度较强。实际上,房价最直接的影响因素就是房屋面积,每户平均房间数高的地区,其房屋面积大,甚至可能为别墅区,房价固然高并且影响程度较大。
HOB: 与房价的相关系数为-0.38,为负值且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,1940年前建造的户主所有房比例大的地区,房价相对低,相关程度中等。实际上,HOB能反映该地区城市化的程度,HOB越大,说明该地区老旧房屋占比大,城市化程度低,房价自然相对较低。
WD5: 与房价的相关系数为0.25,为正值且绝对值在0.3以下,说明在其它因素相同的情况下,与五个波士顿劳动力聚集区的加权距离大的地区,房价相对高,相关程度较弱。理论上,WD5越大,说明该地区距离中心区相对远,房价应该相对低,但实际上,WD5不能准确的说明该地区是否在市区或者郊区,并且可能考虑到郊区别墅高房价、环境优的影响,使得WD5与房价表现了较弱的正相关性,与理论分析略有不同。
RH: 与房价的相关系数为-0.38,为负值并且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,与辐射式公路的接近指数大的地区,房价相对低。相关程度中等。实际上,RH反映了该地区的交通情况,RH越小,说明附近交通便利,房价相对高。
TAX: 与房价的相关系数为-0.47,为负值且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,每一万美元的全值财产税大的地区,房价相对较低。相关程度中等。实际上,TAX越大,说明财产税越大,更少人愿意去买,故而房价低。
SFR: 与房价的相关系数为-0.51,为负值且绝对值在0.5以上,说明在其它因素相同的情况下,学生与教师的比例大的区,房价相对低,相关程度较强。实际上,SFR反映了该地区的教育程度和学校的密集程度,SFR越小,说明教师相对学生多,教育程度高,并且附近学校较多,也可能为学区房,故房价高,呈现负相关。
POAA: 与房价的相关系数为0.33,为正值且绝对值在0.3~0.5之间,说明在其它因素相同的情况下,POAA大的地区,房价相对较高,相关程度中等。实际上,POAA反映了非洲裔美国人的比例,POAA高的地区,非洲裔美国人的比例小,由于美国种族因素的影响,黑人比例大的地区,往往人均社会地位相对较低,房价也低,故POAA高的地区黑人比例小,房价相对高。
LSSP: 与房价的相关系数为-0.74,为负值且绝对值在0.5以上,说明在其它因素相同的情况下,低社会地位人口的比例高的地区,房价相对低,相关程度较强。实际上LSSP越高,说明该地区处于较低层次的社会,生活质量相对低,房价低。

3.3 机器学习与建模部分(使用原数据):

依次使用四种回归模型分别进行建模以及评价:

data_pd = pd.DataFrame(data=df,columns=df.columns)
data_pd = data_pd[['CRIM','LRA','NCS','CR','NOX','ARN','HOB','WD5','RH','TAX','SFR'
  • 13
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值