R: set.seed() 如果加载插入符号包,结果不匹配
R: set.seed() results don't match if caret package loaded
我在 R(版本:3.3.0)中使用 createFolds()
创建 train/test 分区。为了使结果可重现,我使用了种子值为 10 的 set.seed()
。正如预期的那样,结果(生成的折叠)是可重现的。
但是一旦我在设置种子后加载了插入符号包。然后使用createFolds函数,发现创建的folds不一样(虽然还是可以重现)
具体而言,创建的折叠在以下两种情况下有所不同:
案例 1:
library(caret)
set.seed(10)
folds=createFolds(y,k=5,returnTrain=TRUE)
案例二:
set.seed(10)
library(caret)
folds=createFolds(y,k=5,returnTrain=TRUE)
其中 y
是一个向量。
为什么会这样?
罪魁祸首是 ggplot2,它是在您加载插入符号时附加的。它定义了一个 .onAttach
函数:https://github.com/hadley/ggplot2/blob/master/R/zzz.r
附加包时调用此函数,参见help("ns-hooks")
。并在其中调用 runif
从而推进 RNG 的状态。
我在 R(版本:3.3.0)中使用 createFolds()
创建 train/test 分区。为了使结果可重现,我使用了种子值为 10 的 set.seed()
。正如预期的那样,结果(生成的折叠)是可重现的。
但是一旦我在设置种子后加载了插入符号包。然后使用createFolds函数,发现创建的folds不一样(虽然还是可以重现)
具体而言,创建的折叠在以下两种情况下有所不同:
案例 1:
library(caret)
set.seed(10)
folds=createFolds(y,k=5,returnTrain=TRUE)
案例二:
set.seed(10)
library(caret)
folds=createFolds(y,k=5,returnTrain=TRUE)
其中 y
是一个向量。
为什么会这样?
罪魁祸首是 ggplot2,它是在您加载插入符号时附加的。它定义了一个 .onAttach
函数:https://github.com/hadley/ggplot2/blob/master/R/zzz.r
附加包时调用此函数,参见help("ns-hooks")
。并在其中调用 runif
从而推进 RNG 的状态。