【发布时间】:2011-12-06 07:47:05
【问题描述】:
我对 R 和 AI /ML 技术还是很陌生。我想使用神经网络进行预测,由于我是新手,我只想看看这是否应该这样做。
作为一个测试用例,我根据之前的 2 个值预测 sin() 的值。对于训练,我使用y = sin(x)、x1 = sin(x-1)、x2 = sin(x-2) 创建了一个数据框,然后使用公式y ~ x1 + x2。
它似乎有效,但我只是想知道这是否是正确的方法,或者是否有更惯用的方法。
这是代码:
require(quantmod) #for Lag()
requre(nnet)
x <- seq(0, 20, 0.1)
y <- sin(x)
te <- data.frame(y, Lag(y), Lag(y,2))
names(te) <- c("y", "x1", "x2")
p <- nnet(y ~ x1 + x2, data=te, linout=TRUE, size=10)
ps <- predict(p, x1=y)
plot(y, type="l")
lines(ps, col=2)
谢谢
[编辑]
这对于预测调用是否更好?
t2 <- data.frame(sin(x), Lag(sin(x)))
names(t2) <- c("x1", "x2")
vv <- predict(p, t2)
plot(vv)
我想我想通过查看它的预测(应该近似于正弦波)来了解 nnet 是否真的在工作。
【问题讨论】:
-
predict()调用看起来很可疑。你不只是用'y'预测'y'吗?另一方面,它可能无法实际提供新数据,因为它不是数据框。所以你只是用'te'中的滞后值来“预测”。您可以查看expand以避免需要“pkg:quantmod” -
我添加了一个更好的预测示例,您认为这实际上会使用 nnet 模型吗?绘制时似乎有罪
-
您可以通过以与预测相同的比例绘制原件来检查:
plot(x, vv); lines(x, y)并且您会看到存在滞后(您似乎会预料到)。 -
here 中关于 R + DNN 的示例以便更好地理解。
标签: r machine-learning neural-network idioms