r - 寻找特征的形状价值
问题描述
目前,我正在开展一个项目来估计特征的匀称值,因此我使用下面的代码一次随机选择几 (2) 列并找到匀称值。但是,该方法给了我一个难以识别的错误。希望有人能帮忙
data("Boston", package = "MASS")
dt<-cbind(Boston$lstat,Boston$rm,Boston$dis,Boston$indus)
Var1<-Boston[,sample(ncol(dt), size = 1), drop = FALSE]
Var2<-Boston[,sample(ncol(dt), size = 1), drop = FALSE]
Var3<-Boston$medv
modt<-cbind(Var1,Var2,Var3)
varmod<-lm(Var3~.,data=modt)
summary(varmod)
x_var<-c(colnames(modt[1]),colnames(modt[2]))
y_var<-"Var3"
x_train <- as.matrix(modt[-1:-6, x_var])
y_train <- as.matrix(modt[-1:-6, y_var])
x_test <- as.matrix(modt[1:6, x_var])
y_test <- as.matrix(modt[1:6, y_var])
explainer <- shapr(x_train,varmod )
p <- mean(y_train)
explan<-explain(
x_test,
explainer=explainer,
approach="empirical",
prediction_zero=p
)
错误:UseMethod(“解释”)中的错误:没有适用于“解释”的方法应用于类“c('matrix','double','numeric')”的对象
解决方案
您的代码在我的环境中运行没有错误。请检查您的sessionInfo()
报告是否有不同的软件包版本:
library(shapr)
data("Boston", package = "MASS")
dt<-cbind(Boston$lstat,Boston$rm,Boston$dis,Boston$indus)
Var1<-Boston[,sample(ncol(dt), size = 1), drop = FALSE]
Var2<-Boston[,sample(ncol(dt), size = 1), drop = FALSE]
Var3<-Boston$medv
modt<-cbind(Var1,Var2,Var3)
varmod<-lm(Var3~.,data=modt)
summary(varmod)
#>
#> Call:
#> lm(formula = Var3 ~ ., data = modt)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -16.540 -5.421 -1.878 2.575 30.134
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 23.61403 0.41862 56.409 < 2e-16 ***
#> crim -0.40598 0.04339 -9.358 < 2e-16 ***
#> chas 5.57772 1.46926 3.796 0.000165 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 8.373 on 503 degrees of freedom
#> Multiple R-squared: 0.1744, Adjusted R-squared: 0.1712
#> F-statistic: 53.14 on 2 and 503 DF, p-value: < 2.2e-16
x_var<-c(colnames(modt[1]),colnames(modt[2]))
y_var<-"Var3"
x_train <- as.matrix(modt[-1:-6, x_var])
y_train <- as.matrix(modt[-1:-6, y_var])
x_test <- as.matrix(modt[1:6, x_var])
y_test <- as.matrix(modt[1:6, y_var])
explainer <- shapr(x_train,varmod )
p <- mean(y_train)
explan<-explain(
x_test,
explainer=explainer,
approach="empirical",
prediction_zero=p
)
explan
#> $dt
#> none crim chas
#> 1: 22.446 1.559507 -0.3940416
#> 2: 22.446 1.550867 -0.3939230
#> 3: 22.446 1.550875 -0.3939228
#> 4: 22.446 1.548879 -0.3939895
#> 5: 22.446 1.534062 -0.3940640
#> 6: 22.446 1.549869 -0.3939564
#>
#> $model
#>
#> Call:
#> lm(formula = Var3 ~ ., data = modt)
#>
#> Coefficients:
#> (Intercept) crim chas
#> 23.614 -0.406 5.578
#>
#>
#> $p
#> 1 2 3 4 5 6
#> 23.61147 23.60294 23.60295 23.60089 23.58600 23.60191
#>
#> $x_test
#> crim chas
#> [1,] 0.00632 0
#> [2,] 0.02731 0
#> [3,] 0.02729 0
#> [4,] 0.03237 0
#> [5,] 0.06905 0
#> [6,] 0.02985 0
#>
#> attr(,"class")
#> [1] "shapr" "list"
sessionInfo()
#> R version 4.1.0 (2021-05-18)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Ubuntu 20.04.2 LTS
#>
#> Matrix products: default
#> BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so
#>
#> locale:
#> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
#> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=C
#> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] shapr_0.2.0
#>
#> loaded via a namespace (and not attached):
#> [1] Rcpp_1.0.7 knitr_1.33 magrittr_2.0.1 rlang_0.4.11
#> [5] fastmap_1.1.0 fansi_0.5.0 stringr_1.4.0 styler_1.4.1
#> [9] highr_0.9 tools_4.1.0 data.table_1.14.0 xfun_0.24
#> [13] utf8_1.2.1 withr_2.4.2 htmltools_0.5.2 ellipsis_0.3.2
#> [17] yaml_2.2.1 digest_0.6.27 tibble_3.1.2 lifecycle_1.0.0
#> [21] crayon_1.4.1 purrr_0.3.4 vctrs_0.3.8 fs_1.5.0
#> [25] glue_1.4.2 evaluate_0.14 rmarkdown_2.9 reprex_2.0.1
#> [29] stringi_1.6.2 compiler_4.1.0 pillar_1.6.1 backports_1.2.1
#> [33] pkgconfig_2.0.3
由reprex 包(v2.0.1)于 2021-09-13 创建
推荐阅读
- javascript - 为什么我的 $(window).load(function() 在 document.ready 函数中不起作用?
- lua - 执行 lua 脚本时出现未处理的内部错误
- jquery - 关闭菜单的所有元素(包括子菜单)
- c++ - 尝试使用堆栈简化目录路径时未解决的分段错误
- jenkins-pipeline - 如何从 Jenkins 构建中触发 Artifactory 许可证检查?
- docker - 我应该如何在 mlflow 项目中安装 docker 卷?
- vb.net - If 语句使用 NumericUpDown
- javascript - 使用 jquery 迭代表格单元格
- android - 通过 Android 应用接收蓝牙低功耗数据
- c - 使用 xlib 绘制边框(框架)