首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

在本教程中,我们将简要地学习如何用R中的Keras RNN模型来拟合和预测多输出的序列数据,你也可以对时间序列数据应用同样的方法。我们将使用Keras R接口在R中实现神经网络:

准备数据

定义模型

预测和可视化结果

我们将从加载R的必要包开始。

library(keras)准备数据

首先,我们将为本教程创建一个多输出数据集。它是随机产生的数据,下面有一些规则。在这个数据集中有三个输入变量和两个输出变量。我们将绘制生成的数据,以直观地检查它。

plot(s,?df$y1,?ylim?=?c(min(df),?max(df)),?type?=?"l")

lines(s,?df$y2,?type?=?"l")

lines(s,?df$x1,?type?=?"l")

lines(s,?df$x2,?type?=?"l")

lines(s,?df$x3,?type?=?"l")

接下来,我们将把数据分成训练和测试两部分。最后的50个元素将是测试数据。

train?=?df\[1:(n-tsize),?\]

test?=?df\[(n-tsize+1):n,?\]

我们将创建x输入和y输出数据来训练模型,并将它们转换成矩阵类型。

xtrain?=?as.matrix(data.frame(train$x1,?train$x2,?train$x3))

ytrain?=?as.matrix(data.frame(train$y1,?train$y2))

接下来,我们将通过给定的步长值对输入和输出值进行切分来准备数据。在这个例子中,步长值是2,我们将把x的第一和第二行以及y的第二行作为一个标签值。下一个元素成为x的第二和第三行以及y的第三行,这个序列一直持续到结束。下表解释了如何创建x和y数据的序列。

如果步长值为3,我们将取3行x数据,第三行y数据成为输出。

dim(trains$x)

\[1\]?798???3???2

dim(trains$y)

\[1\]?798???2

定义模型

我们将通过添加简单的RNN层、用于输出的Dense层和带有MSE损失函数的Adam优化器来定义序列模型。我们将在模型的第一层设置输入维度,在最后一层设置输出维度。

model?%>%?summary()

我们将用训练数据来拟合这个模型。

fit(trains$x,?trains$y)

并检查训练的准确性。

evaluate(trains$x,?trains$y,?verbose?=?0)

print(scores)

预测和可视化的结果

最后,我们将预测测试数据,用RMSE指标检查y1和y2的准确性。

cat("y1?RMSE:",?RMSE(tests$y\[,?1\],?ypred\[,?1\]))

``````

cat("y2?RMSE:",?RMSE(tests$y\[,?2\],?ypred\[,?2\]))

我们可以在图中直观地检查结果。

``````

plot(x_axes,?tests$y\[,?1\],?ylim?=?c(min(tests$y),?max(tests$y))type?=?"l",?lwd?=?2,

在本教程中,我们已经简单了解了如何用R中的Keras rnn模型来拟合和预测多输出的顺序数据。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230315A04GA700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com