调整训练/测试以使用表达式训练模型到选定范围

时间:2014-04-21 14:55:26

标签: r

我有跟随矢量,并且为了训练模型我使用下面的表达式 - 在下面的例子中我想要测试(FALSE)列车/测试的最后一个元素(TRUE / FALSE)

x<-c(1,2,3,2,1,4,3,2,3,1,3,4,3,2,1,3,4,5,5,6,2,1,2,3,4,5,6,9,1,8,6,4,5,2,3,1,1,5,4)

S<-runif(length (x))<= .90
while(S[length(S)] [!FALSE]) {S<-runif(length (x))<= .90}
train<-print(S)

我有两个问题:

  1. 为什么当我运行90%训练(TRUE)/ 10%测试(FALSE)测试时,我得到的FALSE数量超过10%表示为TEST,并且有一种方法可以使得只有10%的FALSE只要。

  2. 我如何构建表达式“while(S ...)”的第二部分,使FALSE成为连续的(例如, - (Test-FALSE)10%仅在结束时找到“火车”而不是随机分发。

  3. 谢谢

1 个答案:

答案 0 :(得分:1)

要修改想法,在您的示例中length(x)是39.所以,

S<-runif(length (x))<= .90

创建一个长度为39的T / F向量,其中~90%的值为T。然后是表达式

S[length(S)] [!FALSE]

只是提取S的最后一个元素(以极其复杂的方式)和

while(S[length(S)] [!FALSE]) {S<-runif(length (x))<= .90}

创建一个新的向量S ,直到最后一个元素为F ,当它停止时。最终S的生成方式与初始S完全相同,因此约有10%F

所以基本上你的循环没有什么用处,我能辨别出来。

如果您想要一个包含90%值的x的随机样本,您可以这样做:

s <- sample(1:length(x),0.9*length(x))
train <- x[s]
test  <- x[-s]
相关问题