【发布时间】:2014-06-27 23:48:32
【问题描述】:
我有两个向量和一个数据框。我运行一个随机生成器以获得模型的训练和测试分割。 (TRUE 训练而 FALSE 测试集),如果运行多次,TRUE 到 FALSE 的数量会发生变化(FALSE 范围从 4 到 8)以及位置。这是一个例子,实际的数据框要大得多。
x <- c(1,2,3,5,4,1,2,3,5,7,4,2,1,5,6,8,5,3,2,4,6,8,9,0,2)
y <- c(3,5,7,8,4,2,2,5,4,7,9,0,0,7,6,4,2,2,1,4,6,8,9,0,0)
X <- data.frame(x,y)
runif(nrow (X)) <= 0.75
[1] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE TRUE
FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
我想找到一个函数或能够指示生成拆分 TRUE 和 FALSE 的顺序,所有名为 FALSE 的元素仅在最后找到,而先前的元素应该为 TRUE。它应该产生与下面的示例一致的东西。
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
我已经寻找可以在没有运气的情况下执行此操作的函数,因为用于此目的的函数 createTimeSlices 在 caret 包中意味着模型中的重大更改难以实现。
另一方面,我有下面的表达式,其中我只在最后一次获得 FALSE,而其余部分是随机的,但是我无法得出一个表达式,该表达式会按拆分指示顺序产生 FALSE 的数量只能在最后的位置找到,而在此之前会产生 TRUE,如上例所示。
S<- runif(nrow (X)) <= 0.75
S[length(S)] <- FALSE
while(S[length(S)] [!FALSE]) { S<-runif(nrow (X)) <= 0.75}
train<-print(S)
欢迎任何帮助
非常感谢
【问题讨论】:
-
所以你想选择数据框底部的 25%,但你不想每次都正好是 25%?我对你的方法感到困惑
-
没错。无论出于何种原因,随机拆分并不总是产生相同比例的 FALSE 到 TRUE。在示例中,FALSE 元素的数量从 4 到 8 不等
-
你为什么需要它?
-
不是我需要那样,而是这是由 runif(nrow (X))
-
@Barnaby 我刚刚编辑了我的回复以消除任何随机性——它总是接近 75% 或行(向下舍入)。这就是你所追求的吗?
标签: r