机器学习-如何使用过去的20行作为每个Y值的X输入

机器学习-如何使用过去的20行作为每个Y值的X输入,第1张

机器学习-如何使用过去的20行作为每个Y值的X输入

这通常是通过递归神经网络(RNN)来完成的,当接收到下一个输入时,RNN会保留上一个输入的一些内存。多数民众赞成在简短的解释发生了什么,但是互联网上有很多资源可以更好地总结您对它们如何工作的理解。

让我们通过一个简单的示例对此进行分解。假设您有5个样本和5个数据特征,并且您希望两个数据交错排列而不是20行,而不是2行。这是您的数据(假设有1只股票,并且最早的价格是第一位)。我们可以将每一行视为一周中的一天

ar = np.random.randint(10,100,(5,5))[[43, 79, 67, 20, 13],    #<---Monday--- [80, 86, 78, 76, 71],    #<---Tuesday--- [35, 23, 62, 31, 59],    #<---Wednesday--- [67, 53, 92, 80, 15],    #<---Thursday--- [60, 20, 10, 45, 47]]    #<---Firday---

要使用

LSTM
in
keras,您的数据需要是3D的,而现在的数据是2D的结构,每个小数的符号是
(samples,timesteps,features)
。目前只有您拥有,
(samples,features)
因此您需要扩充数据。

a2 = np.concatenate([ar[x:x+2,:] for x in range(ar.shape[0]-1)])a2 = a2.reshape(4,2,5)[[[43, 79, 67, 20, 13],    #See Monday First  [80, 86, 78, 76, 71]],   #See Tuesday second ---> Predict Value originally set for Tuesday [[80, 86, 78, 76, 71],    #See Tuesday First  [35, 23, 62, 31, 59]],   #See Wednesday Second ---> Predict Value originally set for Wednesday [[35, 23, 62, 31, 59],    #See Wednesday Value First  [67, 53, 92, 80, 15]],   #See Thursday Values Second ---> Predict value originally set for Thursday [[67, 53, 92, 80, 15],    #And so on  [60, 20, 10, 45, 47]]])

请注意数据是如何交错和3维的。现在只需建立一个

LSTM
网络。由于这是多对一结构,因此Y仍为二维,但是您需要裁剪第一个值。

model = Sequential()model.add(LSTM(hidden_dims,input_shape=(a2.shape[1],a2.shape[2]))model.add(Dense(1))

这只是一个让您动起来的简短示例。有许多有效的设置(包括不使用RNN),您需要为数据找到正确的设置。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5439943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存