我有一个506行的数据框。我正在尝试使用线性回归模型来实现k-fold交叉验证。这里是我的CSV的链接。将整数序列添加到约500行的数据框中
我在准备使用Leave-One-Out模型的火车和测试数据框架。 我收到以下作为输入:
df - data frame with 506 records
k - fold cross-validation (example: 10)
这是我做的准备测试和训练数据帧:
df <- c(1:506) # This is just for representation purposes
df <- cbind(idx, df)
for(ii in 1:k) {
train <- subset.data.frame(df, df[,1] == ii)
test <- subset.data.frame(df, df[,1] != ii)
# Further processing with train and test datasets
}
这给了我5060个条目的DF。
idx df
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 1 6
7 1 7
8 1 8
9 1 9
10 1 10
11 1 11
...
506 1 506
507 2 1
508 2 2
不过,我要的是数据帧中被划分到k
等份:
idx df
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 1 6
...
48 1 48
49 1 49
50 1 50
51 1 51
52 2 52
53 2 53
54 2 54
...
504 10 504
505 10 505
506 10 506
我是比较新的R.所以如果可能的话,请使用基础包,所以我明白我做错了什么?
当涉及到运行的简历,我倾向于创建一个索引,使用'split',并使用此索引来对数据进行子集化。举例来说,..'K < - 10; s < - split(sample(nrow(yourdat)),seq_len(K)); out < - lapply(s,function(ii){ train < - yourdat [-ii,]; test < - yourdat [ii,]; ...更多命令})' – user20650