我有一個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