楼主: speedness
6533 11

[问答] 请教一个关于交叉验证的问题 [推广有奖]

11
CRouGD 发表于 2013-11-13 19:39:17
我拿了吴喜之老师的书(56页)跟你的代码对比了一下,主要是输入的代码里面有好多的中括号漏了。。。
下面的是我测试过的。。循环部分,我把i 都改成q。 最后一部分,红色的,是我后面加上去的。因为根据老师的代码,最后得出的mm[[q]] 仍然是一个列表,如果用于后面的例题(58页的,等等)作为训练集、测试集 ‘w[-m,]或者w[m,]’这样的表达是不行的。
不知道你看不看得懂,不过你可以自己先试试。

w <- read.csv('D:/R code/animal2.csv',header = T)
w$cluster_ward50 <- as.factor(w$cluster_ward50)
w$VEGETATION <- as.factor(w$VEGETATION)
d <- 1:370827
dd <- list()
Z <- 5
nn <- levels(w$cluster_ward50)
KL <- length(nn)
for(q in 1:KL)
dd[[q]] <- d[w$cluster_ward50==nn[q]]
kk<- NULL
for(q in 1:KL)
kk <- c(kk,round(length(dd[[q]])/Z))
set.seed(1111)
yy <- list(NULL,NULL,NULL)
for(q in 1:KL){xx <- list()
               uu<-dd[[q]]
               for(j in 1:(Z-1)){xx[[j]] <- sample(uu,kk[q])
                                uu<- setdiff(uu,xx[[j]])}
               xx[[Z]] <- uu
               for(k in 1:Z)
               yy[[q]][[k]] <- xx[[k]]}

mm <- list(NULL,NULL,NULL,NULL,NULL)
for(q in 1:Z)
for(j in 1:KL)
mm[[q]] <- c(mm[[q]],yy[[j]][q])

for(q in 1:Z)
mm[[q]]<-unlist(mm[[q]])

12
speedness 发表于 2014-3-12 22:09:47
CRouGD 发表于 2013-11-13 19:39
我拿了吴喜之老师的书(56页)跟你的代码对比了一下,主要是输入的代码里面有好多的中括号漏了。。。
下面 ...
对不起,这么晚才回复您,不论怎样,非常感谢您对我的帮助,谢谢~

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 23:28