0 数据

广州市二手房价数据

大概有500条广州市二手房价数据

python数据导入

import numpy as np
import pandas as p
#画图包导入
import matplotlib.pyplot as plt
plt.style.use(style="ggplot")
import missingno as msno
import seaborn as snplt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei',style="whitegrid",palette="binary")  # 解决Seaborn中文显示问题#读取数据
train_names = ["总价(万元)","均价(元/平方米)","房间数","大厅数","所在楼层","总楼层","朝向","房屋结构","装修","面积(平方米)","建成时间","楼龄","所在区域"]
train = pd.read_csv("data_guangzhou.csv",names=train_names,encoding='gb2312')
#train = train.drop(0)
#train = train.dropna()#直接读取的数据是文本类型,改为数字类型
train['总价(万元)'] = pd.to_numeric(train['总价(万元)'])
train['均价(元/平方米)'] = pd.to_numeric(train['均价(元/平方米)'])
train['面积(平方米)'] = pd.to_numeric(train['面积(平方米)'])
train['房间数'] = pd.to_numeric(train['房间数'])
train['大厅数'] = pd.to_numeric(train['大厅数'])
train['总楼层'] = pd.to_numeric(train['总楼层'])
train['楼龄'] = pd.to_numeric(train['楼龄'])

1 数据分析

房价分布


plt.figure(figsize = (10,5))
print("skew: ",train["总价(万元)"].skew())
sns.distplot(train["总价(万元)"],color="b")
plt.savefig('总价(万元).png', dpi=200,bbox_inches = 'tight')#指定分辨率
plt.show()

#经过log变换之后的价格分布
target = np.log(train["总价(万元)"])
target=target.rename("总价(万元)的对数")
plt.figure(figsize = (10,5))
sns.distplot(target,color="b")#利用seaborn库绘制
plt.savefig('总价(万元)-log.png', dpi=200,bbox_inches = 'tight')#指定分辨率在这里插入代码片

不同因素对房价的影响

g = sns.barplot(x="所在区域",y="总价(万元)",data=train,color="b",order = ["天河","荔湾","越秀","黄埔","海珠","白云","番禺","南沙","增城","花都","从化"])
plt.savefig('所在区域-总价.png', dpi=200,bbox_inches = 'tight')#指定分辨率
plt.show()

plt.figure()
fig1 = sns.jointplot(x="面积(平方米)",y="总价(万元)",data=train,color="b")
plt.savefig('面积-总价.png', dpi=200,bbox_inches = 'tight')#指定分辨率

plt.figure()
fig1 = sns.barplot(x="房屋结构",y="总价(万元)",data=train,color="b")
plt.savefig('房屋结构-总价(万元).png', dpi=200,bbox_inches = 'tight')#指定分辨率

sns.barplot(x="装修",y="均价(元/平方米)",data=train,color="b")
plt.savefig('装修-总价.png', dpi=200,bbox_inches = 'tight')#指定分辨率

2 数据变换

有一些因素无法直接作为输入变量输入到数学模型中,需要进行编码。如装修情况、房屋结构等。
使用独热编码对这些因素进行处理。编码前,楼层为“中”、“低”、“高”的文字描述,编码后:

朝向-东西南北:
东南朝向:东1南1西0北0

独热编码的代码:

floor = pd.get_dummies(train["所在楼层"])
structure = pd.get_dummies(train["房屋结构"])
fitment = pd.get_dummies(train["装修"])
location = pd.get_dummies(train["所在区域"]toward = pd.DataFrame(np.zeros((446,4)),columns=["东","西","南","北"])
i = 0
for index,row in train.iterrows():# print(row["朝向"])   if "东" in row["朝向"]:toward.loc[i,"东"] = 1if "西" in row["朝向"]:toward.loc[i,"西"] = 1if "南" in row["朝向"]:toward.loc[i,"南"] = 1if "北" in row["朝向"]:toward.loc[i,"北"] = 1i = i + 1test = pd.concat([train["总价(万元)"],train["房间数"],train["大厅数"],                  floor,train["总楼层"],toward,structure,fitment,train["面积(平方米)"],train["楼龄"],location],axis=1)

3 相关性分析

plt.figure()
corrMat = test[test.columns].corr()
mask = np.array(corrMat)
mask[np.tril_indices_from(mask)] = False
plt.subplots(figsize=(20,10))
plt.xticks(rotation=60)#设置刻度标签角度
fig1 = sns.heatmap(corrMat, mask=mask,vmax=.8, square=True,annot=True)
plt.savefig('相关性矩阵.png', dpi=200,bbox_inches = 'tight')#指定分辨率print(corrMat["总价(万元)"].sort_values(ascending=False))

各因素和房价的皮尔逊相关系数

fig1 = corrMat["总价(万元)"][1:31].plot(kind="barh",color='b',fontsize=12,figsize=(10,8))
plt.savefig('相关性.png', dpi=200,bbox_inches = 'tight')#指定分辨率

4 房价预测模型

from sklearn import preprocessing
from sklearn import linear_model, svm, gaussian_process
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
#from sklearn.cross_validation import train_test_split
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor
import warnings
warnings.filterwarnings('ignore')cols = test.columns[1:31]
x = test.loc[:,cols].values
y = test['总价(万元)'].values
x_scaled = preprocessing.MinMaxScaler().fit_transform(x)
y_scaled = preprocessing.MinMaxScaler().fit_transform(y.reshape(-1,1))
X_train,X_test, y_train, y_test = train_test_split(x_scaled, y_scaled, test_size=0.02, random_state=42)clfs = {'支持向量机':svm.SVR(), '随机森林':RandomForestRegressor(),'贝叶斯岭回归':linear_model.BayesianRidge(),}
for clf in clfs:try:clfs[clf].fit(X_train, y_train)y_pred = clfs[clf].predict(X_test)print(clf + " cost:" + str(np.sum(abs((y_pred-y_test.reshape(len(y_pred)))/y_test.reshape(len(y_pred))))/len(y_pred)))except Exception as e:print(clf + " Error:")print(str(e))

模型训练结束之后,看在训练集上的结果

i = 1
for clf in clfs:y_pred = clfs[clf].predict(X_test)plt.subplot(3,1,i)plt.subplots_adjust(hspace=0.8,wspace=0.5)plt.plot(y_test.reshape(len(y_pred)),color = "r",linestyle='-',marker = '+',markersize = 2,linewidth=0.5)plt.plot(clfs[clf].predict(X_test),color='b',linestyle='-',marker = 'o',markersize = 2,linewidth=0.5)i = i + 1plt.title(clf + " cost:" + (str(np.sum(abs((y_pred-y_test.reshape(len(y_pred)))/y_test.reshape(len(y_pred))))/len(y_pred)))[0:4])
fig1.set_xticklabels(fig1.get_xticklabels(), rotation=60)
plt.savefig('结果-1.png', dpi=200,bbox_inches = 'tight')#指定分辨率


随机森林模型误差最小。

5 总结

最重要的不是最后训练模型,而是在训练模型之前做的数据分析工作。对不同因素进行分析,特征处理,做相关性分析等。

请给我点一个赞~

用python-sklearn做广州房价预测——以此为例说明如何使用python做简单的数据分析相关推荐

  1. 广州的房价是我遥不可及的梦,今天就用Python来做一个房价预测小工具

    ​ 今天给大家介绍一个非常适合新手入门的机器学习实战案例. 这是一个房价预测的案例,来源于 Kaggle 网站,是很多算法初学者的第一道竞赛题目. 该案例有着解机器学习问题的完整流程,包含EDA.特征 ...

  2. 广州的房价是我遥不可及的梦,今天就用Python来做一个房价预测小工具。

    哈喽,大家好. 今天给大家介绍一个非常适合新手入门的机器学习实战案例. 这是一个房价预测的案例,来源于 Kaggle 网站,是很多算法初学者的第一道竞赛题目. 该案例有着解机器学习问题的完整流程,包含 ...

  3. 用Python做一个房价预测小工具!

    哈喽,大家好. 今天给大家介绍一个非常适合新手入门的机器学习实战案例. 这是一个房价预测的案例,来源于 Kaggle 网站,是很多算法初学者的第一道竞赛题目. 该案例有着解机器学习问题的完整流程,包含 ...

  4. 用Python做一个房价预测小工具

    哈喽,大家好. 今天给大家介绍一个非常适合新手入门的机器学习实战案例. 这是一个房价预测的案例,来源于 Kaggle 网站,是很多算法初学者的第一道竞赛题目. 该案例有着解机器学习问题的完整流程,包含 ...

  5. 波士顿房价预测python决策树_波士顿房价预测 - 最简单入门机器学习 - Jupyter

    机器学习入门项目分享 - 波士顿房价预测 该分享源于Udacity机器学习进阶中的一个mini作业项目,用于入门非常合适,刨除了繁琐的部分,保留了最关键.基本的步骤,能够对机器学习基本流程有一个最清晰 ...

  6. Python+sklearn使用线性回归算法预测儿童身高

    问题描述:一个人的身高除了随年龄变大而增长之外,在一定程度上还受到遗传和饮食以及其他因素的影响,本文代码中假定受年龄.性别.父母身高.祖父母身高和外祖父母身高共同影响,并假定大致符合线性关系. imp ...

  7. python使用线性回归实现房价预测

    一.单变量房价预测 采用一元线性回归实现单变量房价预测.通过房屋面积与房价建立线性关系,通过梯度下降进行训练,拟合权重和偏置参数,使用训练到的参数进行房价预测. 1.房屋面积与房价数据 32.5023 ...

  8. python sklearn 回归案例:车流量预测

    文件下载地址: 链接:https://pan.baidu.com/s/1e68J9gubRGc9WkRDPh97tQ 提取码:uxwj """回归案例 车流量预测根据已有 ...

  9. 波士顿房价预测python代码_Python之机器学习-波斯顿房价预测

    AI 人工智能 Python之机器学习-波斯顿房价预测 波士顿房价预测 导入模块 import pandas as pd import numpy as np import matplotlib.py ...

最新文章

  1. java url map_java url转map ,map转string
  2. UA MATH567 高维统计专题3 含L1-norm的凸优化6 Stochastic Gradient Descent简介
  3. tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)
  4. C++非递归合并排序的通用实现算法(附完整源码)
  5. C++ 系列:extern
  6. Exchange2007 申请安装证书
  7. 这一次,终于弄懂了协变和逆变
  8. js 中断函数执行_js如何中断递归函数
  9. python中字典dict的方法fromkeys
  10. pg_stat wait timeout
  11. Adobe Flash Player30.0.0.113离线安装包
  12. Modbus 与 RS485 的区别与联系
  13. python登录代码_python自动登录126等邮箱的代码
  14. 【小滴课堂】独孤求败-小滴云架构大课十八式
  15. java如何创建长连接_Java如何实现长连接
  16. JeecgBoot 3.4.3-GA 版本发布,开源免费的企业级低代码平台
  17. UMG笔记——关于UMG 的一些基础知识和动画的实现
  18. 联想笔记本电脑无线网卡无法开启
  19. 阿里云分析型数据库MySQL版(AnalyticDB)测试初体验
  20. stm32Cubemx实用篇(三):DAC电压输出和ADC电压检测以及内部温度传感器测温

热门文章

  1. 大力出奇迹,GPU 加速 TiDB | TiDB Hackathon 2020 优秀项目分享
  2. 响应式布局设置--@media only screen and (转载)
  3. 抗TNF治疗改变JIA患者PBMC基因表达谱,可预测疗效
  4. 数组随机取数(大乐透机选投注)
  5. 百度音乐api+c语言,百度音乐接口api - osc_d87glhzv的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Java Swing实用小工具开发
  7. html页面打印成a4的尺寸,我如何将我的html div调整为A4打印页面中的整页?
  8. 程序设计与算法(三)期末考试之013:编程填空:三生三世
  9. cf12月9日服务器维护时间,CF手游12月9日版本周年庆版本更新公告 周年庆新版本即将上线...
  10. c语言书面作业,巢湖学院2011级网络工程1,2班C语言书面作业(江家宝)版