如何用R语言iml包为训练好的随机森林模型绘制2D部分依赖图?
用iml包绘制2D部分依赖图(PDP)和累积局部效应图(ALE)
要在iml中生成2D的PDP或ALE图,需要使用单数形式的FeatureEffect类(而非你之前用的FeatureEffects,后者用于批量生成1D图),指定两个特征来计算它们的联合效应,后续调用plot()即可生成2D可视化。
完整代码示例
基于你提供的波士顿房价数据集代码修改:
library("randomForest") library("iml") library("ggplot2") # 可选,用于自定义绘图样式 # 训练随机森林回归模型 data("Boston", package = "MASS") rf <- randomForest(medv ~ ., data = Boston, ntree = 50) mod <- Predictor$new(rf, data = Boston) # 2D 部分依赖图(PDP) # 指定两个特征,method设为"pdp" pdp_2d <- FeatureEffect$new(mod, feature = c("lstat", "rm"), method = "pdp") # 绘制2D图,默认是热图+等高线,可通过geom参数调整 pdp_2d$plot() # 可选:切换为散点+平滑曲面 # pdp_2d$plot(geom = "point") + geom_smooth(method = "gam") # 2D 累积局部效应图(ALE) ale_2d <- FeatureEffect$new(mod, feature = c("lstat", "rm"), method = "ale") ale_2d$plot() # 可选:自定义配色 # ale_2d$plot() + scale_fill_viridis_c()
关键说明
FeatureEffect(单数)用于分析单个特征或特征组合的效应,传入两个特征时自动计算联合效应,生成2D结果。plot()方法默认会根据特征类型生成合适的2D可视化:数值特征组合默认用热图+等高线,也可通过geom参数切换为"point"(散点)、"tile"(纯热图)或"contour"(纯等高线)。- 如果需要更精细的自定义,可以将
plot()的结果作为ggplot对象,叠加ggplot的图层和主题进行调整。
内容的提问来源于stack exchange,提问作者pricklpitty
相关产品推荐
相关产品推荐

