本文共 1322 字,大约阅读时间需要 4 分钟。
数据集来源 数据集是来自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和mean_number_rooms。
处理缺失值
housing$median_house_value = housing$total_rooms / housing$households
转换为哑变量
library(fastDummies)housing2 = dummy_cols(housing, remove_first_dummy = FALSE)
处理数据
housing3 = data.frame(housing2[11:15], housing1, housing$median_house_value)
加载模型包
library(randomForest)library(caret)
划分数据集
set.seed(1234)trainIndex = createDataPartition(housing3$median_house_value, p=0.8, list=FALSE, times=1)dataTrain = housing3[trainIndex,]dataTest = housing3[-trainIndex,]
随机森林模型
library(randomForest)rf_model = randomForest(train_x, y = train_y, ntree = 500, importance = TRUE)
变量重要性
rf_model$importance
模型评估
oob_prediction = predict(rf_model)train_mse = mean(as.numeric((oob_prediction - train_y)^2))oob_rmse = sqrt(train_mse)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)
房价预测模型基于随机森林算法,能够较好地预测房价。模型在测试集上的RMSE约为15,000美元,表明预测效果良好。
转载地址:http://iuue.baihongyu.com/