作者:汪喵行 R语言中文社区专栏作者
知乎ID:https://www.zhihu.com/people/yhannahwang
前言
上两节我们已经成功爬取了链家网的3w条数据,并且做了一些浅显的分析,那么这一节我们就利用机器学习,用除了房屋价格之外的其他因素(房屋高度/房屋面积等)来预测一套房子的价格。
objective:用除了房屋总价和房屋单位价格的其他因素,来预测房子的价格
用到的R包: splitstackshape / dummies / rpart / rpart.plot / RWeka / ggplot2
首先,根据我们的目标,我们需要预测的房屋总价是一个numeric的变量,具体的机器学习的方法有很多,比如简单的线性回归,回归树,模型树,甚至神经网络等等,这里具体介绍用regression tree和model tree来进行预测。这是因为对于比较复杂的数据,直接用建立一个全局线性规划模型有时候是不切实际并且费劲的,但是regression tree和model tree能够解决这个问题。
读取数据
1house_info <- read.csv("house_inf.csv",stringsAsFactors = FALSE)
由于之前数据里面还有一些需要处理的字符之类,在我们训练模型之前先把这些字符啊什么的都处理处理。
1content <- as.vector(house_info$house_level)
2content_size <-as.vector(house_info$house_size)
3content <- gsub(".*平.*地上","",content)
4content_size <- gsub("厅","",content_size)
5level <- as.data.frame(content)
6size <- as.data.frame(content_size)
7house_info[7] <- level
8house_info[3] <- size
9# 相当于把house_level,house_size里面的字去掉以后再放回去
看一下output:
这里我们发现:
1.house_size这个变量其实可以拆成两个,变成bedroom和hall。因为要用“室”来切分这个变量,所以之前我没有把变量里这个字去掉。
2.第一列对于我们预测房价没有什么意义,所以也直接去掉。