簡體   English   中英

如何在 r 中隨機划分數據集

[英]How to divide dataset in r randomly

我有一個大約 50 天的數據集。 我想把它分成訓練和測試數據集,這樣一周中的每5天都在訓練集中,一周中有2天在測試集中。

測試集的 2 天應隨機選擇。 並非總是如此,例如選擇第 1 天 2 天。

我怎么能那樣做?

R中是否有任何function? 目前這就是我將數據划分為訓練集和測試集的方式,但它可能這樣做是因為測試和訓練數據時間非常接近,因此總是產生非常高的 MSR 值。

set.seed(100)

train <- sample(nrow(dataset1), 0.7 * nrow(dataset1), replace = FALSE)
TrainSet <- dataset1[train,]
#scale (TrainSet, center = TRUE, scale = TRUE)
ValidSet <- dataset1[-train,]
#scale (ValidSet, center = TRUE, scale = TRUE)
summary(TrainSet)
summary(ValidSet)

示例數據:

data
#            timestamp var1  var2  var3 var5
#1 2018-07-20 13:40:00   12  0.00 30.12   10
#2 2018-07-20 13:45:00   12  0.10 10.15   10
#3 2018-07-20 13:50:00    2 11.00 19.22   17
#4 2018-07-20 13:55:00   22  3.05 23.31    3

dput(data)
structure(list(timestamp = c("2018-07-20 13:50:00", "2018-07-20 13:52:00", 
"2018-07-20 13:54:00", "2018-07-20 13:56:00"), var1 = c(12, 12, 
2, 22), var2 = c(0, 0.1, 11, 3.05), var3 = c(30.12, 10.15, 19.22, 
23.31), var5 = c(10L, 10L, 17L, 3L)), class = "data.frame", row.names = c(NA, 
-4L))

這是如何分區數據的示例,例如

set.seed(42)
days_of_the_week <- letters[1:7]

df <- data.frame(day = days_of_the_week, value = rnorm(105))

train_days <- sample(unique(df$day), 2)
test_days <- setdiff(df$day, train_days)

test_data <- df[df$day %in% test_days, ]
train_data <- df[df$day %in% train_days, ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM