用于在看不见的数据上测试模型的包

时间:2017-07-08 01:12:54

标签: r

我想知道哪些包可以分割我的数据。

我更愿意在2/3的数据上优化我的模型。 然后在最后的1/3运行它,看看它有多好。

这听起来像是一个愚蠢的问题......但是为了在最后1/3 / rd数据上转发优化模型,有没有办法做到这一点?否则我再回来测试吧?想法是在最后1/3的数据上对它进行测试,就像看到真实的实时数据一样......如果我有意义的话。

那里有R包可以做到吗?

**建立答案。

在这种情况下,它似乎是一个相对简单的任务,具有以下步骤:

  1. 将模型优化为数据的前2/3行。
  2. 在最后1/3的数据上测试这些参数。
  3. 这与在整个样本大小上测试和优化模型形成对比。通过这种方式,模型可以看到看不见的数据。

2 个答案:

答案 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包有两个可能感兴趣的功能,CVartsCV,但它们不会以您的方式拆分您的数据要求,他们将以滚动的方式训练您的数据,这与某些时间序列模型更相关。

祝你好运!

答案 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