首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何映射pdp::偏于嵌套randomForest模型?

如何映射pdp::偏于嵌套randomForest模型?
EN

Stack Overflow用户
提问于 2021-09-29 19:56:39
回答 1查看 89关注 0票数 0

我想映射函数pdp::偏于嵌套的randomForest模型。然后,我将使用输出来通过facet_wrap()绘制每个组的3d部分依赖图。当将函数映射到模型时,我得到一个错误,即在训练数据中找不到预测变量--但是当我检查tibble时,它们就在那里了,所以我不知所措。

代码语言:javascript
复制
library(tidyverse)
library(pdp)
library(randomForest)
data(boston)
glimpse(boston)

#Make groups, nest data by groups, apply random forest model to nested data
boston %>%
  mutate(grp=ifelse(age<80, "young", "old"))%>%
  nest(data= -grp)%>%
  mutate(fit = map(data, ~ randomForest(cmedv ~ ., data = boston, importance = TRUE)))%>%
  {.->>GrpModels}

#Map pdp::partial to fitted models for two predictor variables
GrpModels%>%
  mutate(p=map2(fit,data, ~pdp::partial(fit,train=data, pred.var=c("lstat", "rm"))))%>%
  unnest(p)%>%{.->>checkpdp}

错误:mutate()p的问题。I p = map2(...)。在训练数据中找不到x lstat,rm。

EN

回答 1

Stack Overflow用户

发布于 2021-09-30 14:53:00

这似乎是可行的,尽管我不知道为什么用geom_tile()绘图并不能像我想象的那样做得很好。我用的是geom_point()。简而言之,我需要将pred.var作为一个列表,然后将三个输入(fit、data和predictor变量)传递给pmap

代码语言:javascript
复制
GrpModels %>% 
  mutate(preds = data.table::transpose(as.list(c('lstat','rm')))) %>%
  mutate(p = pmap(list(fit, data, preds), 
                      .f = ~pdp::partial(object=..1, train = ..2, 
                                   pred.var = ..3)))%>%
  select(-data,-fit,-preds)%>%
  unnest_wider(p)%>%
  unnest(c(yhat,lstat,rm))%>%{.->>checkpdp}%>%
  ggplot(.,aes(x=lstat,y=rm,color=yhat))+
  #geom_tile()+
  geom_point(shape=15, size=2)+
  facet_wrap(~grp, scales='free')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69382651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档