我有一个名为IED2的数据框。我尝试在R中使用neuralnet
包在此Prop.of.Proper.Cleared
的一列IED2
上开发预测模型。由于数据是按时间序列的,因此我使用了createTimeSlices
方法并扩展了窗口滚动预测来创建训练和测试数据集。但是然后在运行下面的for
循环时,我不断收到错误消息
尽管进行了检查以确保每列的数据类型为integer
,但我还是无法执行。
cbind(1,pred)%*%weights [[num_hidden_layers + 1]]错误:
需要数字/复杂矩阵/矢量参数
我的代码
timeSlices <- createTimeSlices(1:nrow(IED2),
initialWindow = 90, horizon = 62, fixedWindow = FALSE)
trainSlices <- timeSlices[[1]]
testSlices <- timeSlices[[2]]
test = NULL
net.sqrt = NULL
err = NULL
col_list <- paste(c(colnames(IED2[,5:7])),collapse="+")
col_list <- paste(c("Prop.of.Proper.Clear~",col_list),collapse="")
f <- formula(col_list)
for(i in 1:2000){
set.seed(1)
net.sqrt[i] <- neuralnet(f, data = IED2[trainSlices[[i]],] , algorithm = "rprop+", hidden=2, threshold=0.01,
learningrate = 0.0001, linear.output = TRUE, err.fct="sse")
test[i] <- compute(net.sqrt[i], IED2[testSlices[[i]],5:7])
err[i] <- ((test[i]$net.result - IED2[testSlices[[i]],13])^2)/nrow(IED2[testSlices[[i]],])
}
有人可以帮我解决这个问题吗?非常感谢您的帮助。
使用dput
structure(list(DoW = c(2L, 3L, 4L, 5L, 7L, 1L), Mnth = c(1L, 1L, 1L, 1L, 1L, 1L), Hour = c(0L, 0L, 0L,
0L, 0L, 0L), Prop.of.Proper.Clear = c(0.333333333,
0.2, 0.333333333, 0.125, 0, 0)), row.names = c(2L, 3L, 4L, 5L, 7L, 8L), class = "data.frame")