随机森林分类
-
一组(多个)预测变量预测一个结果
-
我的理解:任一变量都不能单独作为判别好或坏的标准,建模的目的是找到多个变量(气象因子)的某种组合,从而实现对因变量(树皮厚度)的准确预测
(1)数据准备
(2)randomForest包:提供randomForest()函数用于随机森林
-
rflmpute()函数:对数据缺失值进行插补
-
treesize()函数:查看模型每颗决策树的节点数
-
importtance():提取模型中各变量对模型的重要性
-
MDSplot函数绘制坐标图
-
MDSplot()函数用于实现随机森林的可视化
-
MDSplot(rf, fac, k=2, palette=NULL, pch=20, ...)
-
rf为randomForest对象,需要说明的是,在构建随机森林模型时必须指定计算临近矩阵,即设置proximity参数为TRUE;
-
fac指定随机森林模型中所使用到的因子向量(因变量);
-
palette指定所绘图形中各个类别的颜色;
-
pch指定所绘图形中各个类别形状;
-
还可以通过R自带的plot函数绘制随机森林决策树的数目与模型误差的折线图
代码如下
library(randomForest)
set.seed(1234)#该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性。生成的随机数无法重现
fit.forest <- randomForest(class~., data=df.train,
na.action=na.roughfix,
importance=TRUE)
#设置proximity=TRUE,则指定计算临近矩阵
fit.forest
importance(fit.forest, type=2)
#验证(可无)
forest.pred <- predict(fit.forest, df.validate)
forest.perf <- table(df.validate$class, forest.pred,
dnn=c("Actual", "Predicted"))
forest.perf
#随机森林的可视化
hist(treesize(fit.forest))##展示随机森林中每棵树决策树的节点数
plot(fit.forest)#模型误差图
#对模型提取重要值列表
dev.new(
title = "RDA scaling 1 and 2 + lc",
width = 16,
height = 8,
noRStudioGD = TRUE
)
varImpPlot(fit.forest, main = "variable importance")