You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从R语言生成的指定矩阵中划分3折交叉验证数据集?

3折交叉验证的矩阵数据划分方案(R语言实现)

嘿,这就帮你搞定3折交叉验证的数据划分!先理清楚咱们的基础情况:

你已经用这段代码生成了目标矩阵:

mat = matrix(sample.int(10, 9*100, TRUE), 6, 10)

生成的矩阵具体如下:

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 10 10 9 3 3 3 4 4 3 9
[2,] 9 3 5 1 3 9 5 5 4 8
[3,] 7 6 6 3 8 2 3 10 7 4
[4,] 7 4 10 8 7 5 2 6 2 8
[5,] 9 7 7 5 3 9 5 8 7 8
[6,] 3 3 1 2 9 3 6 7 6 9

实现3折划分的代码方案

因为你的矩阵刚好有6行,完美可以平均分成3组(每组2行)。下面是直接可用的划分代码,支持固定顺序或随机划分:

# 生成基础折数索引(每组2行)
fold_indices = rep(1:3, each = nrow(mat)/3)
# 可选:如果需要随机划分,解开下面这行注释
# fold_indices = sample(fold_indices)

# 提取每个折的矩阵
fold1 = mat[fold_indices == 1, ]
fold2 = mat[fold_indices == 2, ]
fold3 = mat[fold_indices == 3, ]

各折的结果示例

Fold 1(按顺序划分的结果):

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 10 10 9 3 3 3 4 4 3 9
[2,] 9 3 5 1 3 9 5 5 4 8

Fold 2(按顺序划分的结果):

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 7 6 6 3 8 2 3 10 7 4
[2,] 7 4 10 8 7 5 2 6 2 8

Fold 3(按顺序划分的结果):

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 9 7 7 5 3 9 5 8 7 8
[2,] 3 3 1 2 9 3 6 7 6 9

如果需要更贴合交叉验证的随机性要求,只需要启用代码里的sample(fold_indices)步骤,每次运行都会得到不同的行分配组合。


内容的提问来源于stack exchange,提问作者Ville

火山引擎 最新活动