【问题标题】:How to divide dataset in r randomly如何在r中随机划分数据集
【发布时间】:2019-11-12 15:56:30
【问题描述】:

我有一个大约 50 天的数据集。我想把它分成训练和测试数据集,这样一周中的每5天都在训练集中,一周中有2天在测试集中。

测试集的2天应该是随机选择的。不总是例如选择第 1 2 天。

我该怎么做?

在 R 中有什么功能吗?目前这就是我将数据划分为训练集和测试集的方式,但它可能会导致测试和训练数据的时间非常接近,因此总是会产生非常高的 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))

【问题讨论】:

  • 请发布一些示例数据。见stackoverflow.com/questions/5963269/…
  • 我添加了一些示例数据
  • 在这种情况下,列 var1 到 var5 并不重要,但问题是每周随机选择 2 天,可能需要至少 2 周的日期来说明问题。如果有可能不完整的周,请指定在这种情况下您希望发生什么,并在样本数据中包括不完整的一周。 (您是否总是每天至少进行一次观察?如果您最近一周只有 3 天的数据怎么办?)
  • 您可以随意按照自己的方式拆分数据,但请注意,在这种情况下,您的训练数据集和保留数据之间很可能存在显着相关性。通常,按年拆分比按天拆分更好,以避免对您的保留结果过于乐观。
  • @Gregor:谢谢你的回复。每5分钟有一次观察。上周是不完整的一周,它有 6 天。时间为 2019 年 7 月 20 日至 2019 年 8 月 22 日。

标签: r statistics training-data


【解决方案1】:

这是一个如何对诸如此类的数据进行分区的示例

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, ]

【讨论】:

  • 感谢您的帮助。正如您从我的示例数据中看到的那样,我的数据与您在答案中的形式不同。您的数据框有几天,而我的数据保存为每个记录,每 5 分钟连续观察一次,持续数周。我该如何应用这种回答方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
相关资源
最近更新 更多