昨晚费力的读懂了老师给我改好的代码,疲惫的保存,嗖–啪--的关机。
心里想着接下就只需要①用数据跑一下看看结果和看看要跑多长时间,②用不同的K值分块,跑这个QRNN,③做RMSE和MAE。还有想问问老师用不用把训练集和参数算出来的y_test的估计值与真实y_test值做一下比较,看看它俩差的多不多。
结果今天打开电脑"sub_01.R"成了空文件。同样的错误不能再犯,还好这次在之前发过的博文里有写,不然都没地方哭,浪费时间。所以以后千万千万千万千万:1.保存完文件不要快速关掉R了,等它一会儿。2.代码备份!代码备份!!!
Data_split <- function(data,K){
chunk_size <- ceiling(nrow(data) / K)
chunk_size <- c(rep(chunk_size,K-1),nrow(data)-(K-1)*chunk_size)
chunk_list <- list()
dat <- data
for(i in 1:K){
ind <- sample(1:nrow(dat),chunk_size[i])
chunk_list[[i]] <- dat[ind,]
dat <- dat[-ind,]
}
chunk_list
}
AIC.qrnn <- function(y, yfit, n.parm, tau){
N <- length(y)
AIC <- log(mean(rho(y-yfit, tau))) + n.parm/N
AIC
}
rho <- function(u, tau) u*(tau-(u<0))
QRNN <- function(dat_train, dat_test, K, n.hidden, Tau){
Qpred <- matrix(NA,nrow(dat_train),length(Tau))
for(i in 1:length(Tau)){
q_pred <- matrix(NA, nrow(dat_train), K)
Dat <- Data_split(dat_train,K)
for (j in 1:K) { #第j块
x_train <- as.matrix(dat_train[[j]][,-1])
y_train <- as.matrix(dat_train[[j]][,1])
x_test <- as.matrix(dat_test[,-1])
n.hidden.opt <- best_n.hidden(x_train[[j]], y_train[[j]], n.hidden, Tau)
parms <- qrnn.fit(x_train[j], y_train[j], n.hidden=n.hidden.opt, tau=Tau[i], n.trials=3)
pred <- qrnn.predict(x_test, parms)
}
q_pred[,j]<-pred
}
Qpred[,i]<-apply(q_pred, 1, mean)
}