我想知道哪些包可以分割我的数据。
我更愿意在2/3的数据上优化我的模型。 然后在最后的1/3运行它,看看它有多好。
这听起来像是一个愚蠢的问题......但是为了在最后1/3 / rd数据上转发优化模型,有没有办法做到这一点?否则我再回来测试吧?想法是在最后1/3的数据上对它进行测试,就像看到真实的实时数据一样......如果我有意义的话。
那里有R包可以做到吗?
**建立答案。
在这种情况下,它似乎是一个相对简单的任务,具有以下步骤:
这与在整个样本大小上测试和优化模型形成对比。通过这种方式,模型可以看到看不见的数据。
答案 0 :(得分:1)
有包,但根据您的要求,您可以使用基本R的提取操作符来完成此操作。这听起来像是你使用时间序列或某种有序的观察。
获得数据后,创建培训索引。 接下来,按训练索引对数据进行子集化,以创建训练集。 然后通过再次对数据进行子集化,但减去列车索引来创建测试集。
data <- data.frame(x=runif(10000), y=runif(10000))
train_index <- 1:(NROW(data)*0.666)
train_set <- data[train_index, ]
test_set <- data[-train_index, ]
此外,caret
包非常受欢迎,并且具有train
函数,该函数具有许多附加参数,用于实现不同复杂程度的抽样技术,具体取决于您使用的模型和数据。如果您还没有使用它,请查看它。
如果您正在处理时间序列,forecast
包有两个可能感兴趣的功能,CVar
和tsCV
,但它们不会以您的方式拆分您的数据要求,他们将以滚动的方式训练您的数据,这与某些时间序列模型更相关。
答案 1 :(得分:1)
有一些套餐可以帮助解决这个问题。 numerical expression has 2 elements: only the first usedNAs introduced by
coercion
Show Traceback
Error in quo_name(dv):~!(!iv) : NA/NaN argument
包有一个名为caTools
的函数,专门用于将数据集拆分为测试和训练集。
请参阅:sample.split documentation
您将数据集中的列作为第一个参数(通常是响应变量)传入,并按比例在该变量中的值之间拆分数据集。如果您的响应变量可能只在5%的时间内达到某个值,那么这将非常有用,您希望您的训练和测试集在两者中都具有相似的值。它可以像:
一样使用sample.split