party包中的r-Varimp()每次运行都会产生不同的结果



我正在使用party包使用cforest((函数创建一个随机林模型。然而,当我尝试使用varimp函数查看模型的可变重要性值时,varimp功能会为我的特征产生不同的值。有什么办法解决这个问题吗?

对于任何使用随机值的进程,例如创建随机森林模型,或使用随机排列查找变量重要性,每次运行都会出现轻微变化。

如果你想";锁定";其中一个值,例如,为了使分析可复制,可以使用set.seed(<any number>)。下面是一个例子:

library(party)
# Create model
mod <- cforest(hp ~ ., mtcars)
# Without seed we get different values each time
varimp(mod)[1]
#>      mpg 
#> 498.8208

varimp(mod)[1]
#>      mpg 
#> 513.8174

# However, if we set the seed, we get the same result each time
set.seed(1)
varimp(mod)[1]
#>     mpg 
#> 464.639
set.seed(1)
varimp(mod)[1]
#>     mpg 
#> 464.639

更新

请注意,set.seed()在重复调用随机函数时仍然会给出不同的值,但是以可预测的方式。例如,如果我调用rnorm(1)两次,我会得到两个不同的值。但对于相同的种子,每次重置种子时都会得到相同的两个值。

set.seed(1)
rnorm(1)
#> [1] -0.6264538
rnorm(1)
#> [1] 0.1836433
set.seed(1)
rnorm(1)
#> [1] -0.6264538
rnorm(1)
#> [1] 0.1836433

您可以通过在脚本中多次调用set.seed()来重置种子,或者在运行脚本之前重新启动R会话(Windows的快捷键为CTRL + SHIFT + F10(。

相关内容

  • 没有找到相关文章

最新更新