本文最初发表于2015年微信官方账号(微信ID: lsxxx2011),作者刘顺祥经作者授权转载,严禁转载两次。
如果你有一批数据,你可能会用统计学、挖掘算法、可视化方法等技术来玩你的数据,但是当你没有数据的时候,怎么玩呢?接下来我们来玩无数据的数据分析。
本文从以下目录详细解释了数据分析的过程:
1.数据源的获取;
2.数据探索和清理;
3.建模(聚类算法和线性回归);
4.模型预测;
5.模型评估;
第一,数据源的获取
就像这篇文章的题目一样,我想分析一下上海的二手房数据。想看看有哪些因素会影响房价。哪些房子可以归为一类?我该如何预测二手房价格?但是我没有这样的数据样本。我该如何回答以上问题?
互联网时代,网络信息如此发达,信息量如此巨大,随便找点数据就够喝一壶了。在前几期中,我们已经谈到了如何从互联网上抓取信息,并使用Python作为灵活方便的工具来完成爬虫,例如:
当然上海二手房的数据还是通过爬虫获取的,爬行平台来自链家。页面是这样的:
2.二手房面积和房价分布
#区正态性检验
Norm.test(房屋$面积)
施工时间缺失变量6216个,占总样本的22%。虽然不足严重,但我不能简单粗暴的扔掉变量,所以我们考虑按各个区域分组,实现模式替代法。这里构建了两个自定义函数:
库(Hmisc)
#自定义模式功能
stat.mode & lt-函数(x,rm.na = TRUE){
if (rm.na == TRUE){
y = x[!is.na(x)]
}
RES = name(table(y))[what . max(table(y))]
返回(res)
}
#实现分组替换的自定义函数
my . import & lt;-函数(数据,category.col = NULL,
miss.col = NULL,method = stat.mode){
估算数据=空
for(I in as . character(unique(data[,category . col])){
sub.data = subset(data,data[,category.col] == i)
子数据[,miss.col] =估算(子数据[,miss.col],方法)
估算数据= c(估算数据,子数据[,miss.col])
}
data[,miss . col]= import . data
返回(数据)
}
#将构造时间中的空白色字符串转换为缺少的值
House$施工时间[house$施工时间= ='']
#替换组中缺失的值,并过滤数据集上的变量
final_house <。-子集(我的。impress(房子,'面积','施工时间'),select = c(类型。新的,楼层,面积,价格。w .,单价。平方米,施工时间))
#建设新领域,即2016年建设时间和当前工期
final_house <。-transform (final _ house,build date 2 now = 2016-as . integer(substring(as . character(构造时间),1,4)))
#删除原始施工时间字段
final_house <。-子集(final_house,select =-施工时间)
最终的干净数据集如下:
#根据聚类结果,检查每个类别的区域分布
表(final_house$ area,clust $ cluster)
#根据聚类结果,比较各类房屋的平均面积、平均价格和平均单价
合计(final_house[,3:5],列表(clust $ cluster),平均值)
从平均水平来看,我可以大致将28,000多个套件合成以下语句:
a、大户型(3房2厅,4房2厅),属于2类。平均面积在130平米以上,这个大户型的房子主要分布在青浦、黄埔、松江等地(从各种类型的区域分布图可以看出)。
b、地段类型(高房价),属于1类。典型区域有黄埔、徐汇、长宁、浦东等地(从各种类型的区域分布图可以看出)。
c、公共住宅类型(面积小、价格适中、房屋多),属于第4、5类。典型地区有宝山、虹口、闵行、浦东、普陀、杨浦。
d、流浪型(介于大户型和地段型之间的住房),属于3类。典型地区有奉贤、嘉定、青浦、松江。这些地区也是未来会迅速崛起的地方。
#绘制面积和单价散点图,并按聚类进行划分
p <。-ggplot (data = final _ house [,3: 5],mapping = AES (x =面积,y =单价。平方米,颜色=因子(簇$簇$簇)))
p <。- p + geom_point(pch = 20,size = 3)
p + scale_colour_manual(值= c(“红色”、“蓝色”、“绿色”、“黑色”、“橙色”))
从结果来看,0.23非常接近上表中的0值,所以考虑二手房价格的对数变换。
fit2 <。-lm(log (price。W.) ~。,data = model.data)
摘要(fit2)
这次的成绩明显比fit1好很多。只有地板的中间区域在0.1的置信水平下是显著的,其他变量在0.01的置信水平下是显著的。而且调整后的R平方值也提高到了94.3%,也就是说这些自变量对房价的解释度达到了94.3%。
最后,我们来看看最终模型的诊断结果:
#使用绘图方法完成模型的定性诊断
opar <。- par(no.readonly =真)
par(mfrow = c(2,2))
图(fit2)
par(opar)
从上图看,基本满足线性回归模型的几个假设,即残差项服从正态分布(右上),均值为0(左上),标准差常数为(左下)。基于这个模型,我们可以有针对性的预测房价~
今天的学习过程到此结束。如有疑问,欢迎留言或加微信(lsx19890717)详谈。本文的爬虫代码、R语言脚本和数据可以从以下链接获得:
链接:http://pan.baidu.com/s/1c1BFhXe密码:36dm
2015年每天进步一点点
结束
请发送电子邮件到holly0801@163.com提交和反馈。微信官方账号转载大数据文章请向原作者申请授权,否则任何版权纠纷都与大数据无关。
大数据
为您提供与大数据相关的最新技术和信息。
最近的精彩文章(直接点击查看):
更多精彩文章,请点击微信官方账号后台的“历史文章”。谢谢你。
1.《链家上海二手房 数据分析上海市链家二手房(R语言)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《链家上海二手房 数据分析上海市链家二手房(R语言)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1226244.html