我尝试使用train
作为每月消费数据的方法在R中使用nnet
函数。但是输出(预测值)都显示为等于某个平均值。
我有24个时间点的数据(每个时间点代表一个月的数据),我使用前20个用于训练,其余4个用于测试模型。这是我的代码:
a<-read.csv("...",header=TRUE)
tem<-a[,5]
hum<-a[,4]
con<- a[,3]
require(quantmod)
require(nnet)
require(caret)
y<-con
plot(con,type="l")
dat <- data.frame( y, x1=tem, x2=hum)
names(dat) <- c('y','x1','x2')
#Fit model
model <- train(y ~ x1+x2,
dat[1:20,],
method='nnet',
linout=TRUE,
trace = FALSE)
ps <- predict(model2, dat[21:24,])
plot(1:24,y,type="l",col = 2)
lines(1:24,c(y[1:20],ps), col=3,type="o")
legend(5, 70, c("y", "pred"), cex=1.5, fill=2:3)
有关如何替代解决此问题的任何建议?有没有办法更有效地使用神经网络?或者还有其他更好的方法吗?
答案 0 :(得分:1)
问题可能是数据不足。对于任何机器学习问题,24个数据点都很低。如果数据的曲线/形状/表面是例如简单的正弦波,则24就足够了 但是对于任何更复杂的功能,数据越多越好。你能用6个数据点准确地模拟例如sin ^ 2 x * cos ^ 0.3 x / sinh x吗?不,因为可用数据无法捕获足够的细节 如果您可以获取每日数据,请改用它。