博客
关于我
R语言做kaggle中California Housing Prices数据集
阅读量:332 次
发布时间:2019-03-04

本文共 2192 字,大约阅读时间需要 7 分钟。

数据集来源

数据集是kaggle里面的House Prices
加载所需要的包

library(tidyverse)library(reshape2)

读取数据

housing = read.csv('housing.csv')

简单看一下数据

head(housing)
summary(housing)
  • 可以看出total_bedrooms中有缺失值需要处理
  • 再有就是ocean_proximity需要处理成哑变量
  • total_bedrooms 和 total_rooms需要处理为mean_number_bedrooms and mean_number_rooms

看一下列名字

colnames(housing)

画图看一下各个变量的分布

ggplot(data = melt(housing), mapping = aes(x = value)) +     geom_histogram(bins = 30) + facet_wrap(~variable, scales = 'free_x')

数据预处理

中位数插值

housing$total_bedrooms[is.na(housing$total_bedrooms)] = median(housing$total_bedrooms , na.rm = TRUE)

将total_bedrooms 和 total_rooms处理为mean_number_bedrooms and mean_number_rooms

housing$mean_bedrooms = housing$total_bedrooms/housing$householdshousing$mean_rooms = housing$total_rooms/housing$householdsdrops = c('total_bedrooms', 'total_rooms')housing = housing[ , !(names(housing) %in% drops)]
head(housing)

下面是将ocean_proximity处理成哑变量

housing1 <- housing[c(-7,-8)]housing1 <- scale(housing1)
library(fastDummies)housing2 <- dummy_cols(housing,remove_first_dummy = F)
housing3 <- data.frame(housing2[11:15],housing1,housing$median_house_value)
library(randomForest)library(caret)

将数据集的80%划分为训练集,20%划分为测试集

set.seed(1234)#将数据集的80%划分为训练集,20%划分为测试集trainIndex = createDataPartition(housing3$housing.median_house_value, p=0.8,                                  list = FALSE,                                  times = 1)#createDatapartition会自动从y的各个level随机取出等比例的数据来,组成训练集#训练集dataTrain = housing3[trainIndex,]#测试集dataTest = housing3[-trainIndex,]

随机森林

library(randomForest)
names(dataTrain)
set.seed(1)train_y = dataTrain[,'housing.median_house_value']train_x = dataTrain[, names(dataTrain) !='housing.median_house_value']head(train_y)head(train_x)
rf_model = randomForest(train_x, y = train_y , ntree = 500, importance = TRUE)
names(rf_model)

变量重要性

rf_model$importance

包外误差

oob_prediction = predict(rf_model)
train_mse = mean(as.numeric((oob_prediction - train_y)^2))oob_rmse = sqrt(train_mse)oob_rmse

看看在模型测试集上的效果

test_y = dataTest[,'housing.median_house_value']test_x = dataTest[, names(dataTest) !='housing.median_house_value']y_pred = predict(rf_model , test_x)test_mse = mean(((y_pred - test_y)^2))test_rmse = sqrt(test_mse)test_rmse

转载地址:http://iuue.baihongyu.com/

你可能感兴趣的文章
SQLServer 查看耗时较多的SQL语句(转)
查看>>
【计算机网络】应用层
查看>>
【Markdown】公式指导手册
查看>>
【Maven】POM基本概念
查看>>
【Java思考】Java 中的实参与形参之间的传递到底是值传递还是引用传递呢?
查看>>
【设计模式】单例模式
查看>>
【SpringCloud】Hystrix熔断器
查看>>
【SpringCloud】Gateway新一代网关
查看>>
【Linux】2.3 Linux目录结构
查看>>
java.util.Optional学习笔记
查看>>
远程触发Jenkins的Pipeline任务的并发问题处理
查看>>
CoProcessFunction实战三部曲之二:状态处理
查看>>
jackson学习之七:常用Field注解
查看>>
jackson学习之八:常用方法注解
查看>>
Web应用程序并发问题处理的一点小经验
查看>>
asp.net core的授权过滤器中获取action上的Attribute
查看>>
entity framework core在独立类库下执行迁移操作
查看>>
Asp.Net Core 2.1+的视图缓存(响应缓存)
查看>>
服务器开发- Asp.Net Core中的websocket,并封装一个简单的中间件
查看>>
没花一分钱的我竟然收到的JetBrains IDEA官方免费赠送一年的Licence
查看>>