我试图通过使用neuralnet()函数来预测负载数据,但是,当我尝试使用forecast()函数时,我收到错误:is.constant(y)中的错误:( list)对象无法强制转换为键入' double'
我的数据如下:
date temperature load weekday month weekend day
1 2010-01-01 -28 256131 5 01 0 1
2 2010-01-02 -24 277749 6 01 1 2
3 2010-01-03 -53 264166 0 01 1 3
4 2010-01-04 -42 319847 1 01 0 4
5 2010-01-05 -17 321376 2 01 0 5
并且结构如下:
str(NLtrain)
'data.frame': 2191 obs. of 7 variables:
$ date : POSIXct, format: "2010-01-01" "2010-01-02" "2010-01-03" ...
$ temperature: num -28 -24 -53 -42 -17 -45 -43 -42 -25 -11 ...
$ load : num 256131 277749 264166 319847 321376 ...
$ weekend : num 0 1 1 0 0 0 0 0 1 1 ...
$ weekday : int 5 6 0 1 2 3 4 5 6 0 ...
$ month : chr "01" "01" "01" "01" ...
$ day : int 1 2 3 4 5 6 7 8 9 10 ...
我使用的代码:
loadts <- ts(NLtrain$load, frequency=7, start = c(2010,1,1))
nnvar = NLtrain$weekday+NLtrain$day+NLtrain$temperature
nn = neuralnet(loadts~nnvar,
data = NLtrain, hidden = 3,
linear.output =FALSE)
forecast(nn)
我做错了什么?
提前致谢
答案 0 :(得分:0)
您为neuralnet()
定义公式的方式不正确。
&#34; nnvar&#34;成为你解释它的方式的向量。它是列的总和。使用以下方式
nnvar<-as.formula(loadts~weekday+day+temperature)
nn=neuralnet(nnvar,data=NLtrain,hidden=3,linear.output=F)
另外,由于你的loadts中的值不在(0,1)的区间内,我认为你不应该使用linear.output = F,因为在这种情况下,logistic函数成为激活函数,你的值被限制为0 -1