微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在R中使用Python软件包带有“网状”

如何解决在R中使用Python软件包带有“网状”

我正在尝试在这里继续学习本教程:https://hfshr.netlify.app/posts/2020-06-07-variable-inportance-with-fastshap/

本教程是关于使用一种名为“ SHAP”的机器学习算法,该算法试图向用户提供一种解释复杂的“黑匣子”风格算法结果的方法

在学习本教程之后,我能够使所有工作正常进行-除了最后的“力图”。我在底部提供了我正在使用的代码。有人可以帮我弄清楚为什么这些力图不起作用吗?

library(modeldata)
library(tidymodels)
library(tidyverse)
library(doParallel)
library(probably)
library(gt)

data("credit_data")

data("credit_data")

credit_data <- credit_data %>%
  drop_na()

set.seed(12)

# initial split
split <- initial_split(credit_data,prop = 0.75,strata = "Status")

# train/test sets
train <- training(split)
test <- testing(split)

rec <- recipe(Status ~ .,data = train) %>%
  step_bagimpute(Home,Marital,Job,Income,Assets,Debt) %>%
  step_dummy(Home,Records,one_hot = T)

# Just some sensible values,not optimised by any means!
mod <- boost_tree(trees = 500,mtry = 6,min_n = 10,tree_depth = 5) %>%
  set_engine("xgboost") %>%
  set_mode("classification")

xgboost_wflow <- workflow() %>%
  add_recipe(rec) %>%
  add_model(mod) %>%
  fit(train)

xg_res <- last_fit(xgboost_wflow,split,metrics = metric_set(roc_auc,pr_auc,accuracy))

preds <- xg_res %>%
  collect_predictions()

xg_res %>%
  collect_metrics()

library(vip)

# Get our model object
xg_mod <- pull_workflow_fit(xgboost_wflow)

vip(xg_mod$fit)

library(fastshap)

# Apply the preprocessing steps with prep and juice to the training data
X <- prep(rec,train) %>%
  juice() %>%
  select(-Status) %>%
  as.matrix()

# Compute shapley values
shap <- explain(xg_mod$fit,X = X,exact = TRUE)

# Create a dataframe of our training data
feat <- prep(rec,train) %>%
  juice()

autoplot(shap,type = "dependence",feature = "Amount",X = feat,smooth = TRUE,color_by = "Status")

predict(xgboost_wflow,train,type = "prob") %>%
  rownames_to_column("rowid") %>%
  filter(.pred_bad == min(.pred_bad) | .pred_bad == max(.pred_bad)) %>%
  gt()%>%
  fmt_number(columns = 2:3,decimals = 3)

library(patchwork)
p1 <- autoplot(shap,type = "contribution",row_num = 1541) +
  ggtitle("Likely bad")

p2 <- autoplot(shap,row_num = 1806) +
  ggtitle("Likely good")

p1+p2

# here is the error (prior to running this code,I ran "pip install shap" in conda)

force_plot(object = shap[1541,],feature_values = X[1541,display = "html",link = "logit")

Error in py_call_impl(callable,dots$args,dots$keywords) :
  TypeError: save_html() got an unexpected keyword argument 'plot_html'

谢谢

解决方法

force_plot()是相当实验性的,并且恰好起作用。如果收到错误,请确保已安装相应的shap软件包(及其依赖项)。无论如何,您应该在 fastshap GitHub存储库https://github.com/bgreenwell/fastshap/issues中报告此问题。

-BG

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。