通常我们会在每次运行代码时修复种子编号以生成相同的分割.所以代码
set.seed(12345)
data <- (1:100)
train <- sample(data, 50)
test <- (1:100)[-train]
Run Code Online (Sandbox Code Playgroud)
总是提供相同的列车和测试集(因为我们修复了种子).
现在,假设我有数据,训练和测试.有没有办法知道用于生成火车的哪个种子数和从数据中测试??? 最好成绩.
用绝对的数学确定性来知道是不可能的:但是如果你怀疑种子所处的范围,你可以通过"强力"检查该范围内的每一粒种子,看看它是否会导致相同的结果.
例如,您可以使用以下代码检查1到100万的种子:
tests <- sapply(1:1e6, function(s) {
set.seed(s)
this_train <- sample(data, 50)
all(this_train == train)
})
which(tests)
# 12345
Run Code Online (Sandbox Code Playgroud)
几点说明:
-.Machine$integer.max到.Machine$integer.max,这在我的电脑上需要4.2十亿检查(这将需要一段时间,你可能要弄巧关于未保存的结果).set.seed(),则需要在函数中的行set.seed和sample行之间复制相同的行为.sample设置种子后的行为可能在R的旧版本中有所不同,因此您可能无法重现在早期版本上创建的行为| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |