【不是铁人赛】Day 02|虚拟货币价格预测(二)LSTM与GRU。

友:你要不要一起参加铁人赛?
我:好啊!
(几天後)
我:乾我不小心忘了报名......
--------------------------------------> 2021.09.17


本系列的目标如下

  1. 陪我同事参赛,一起写文。
  2. 带大家使用不同的模型来预测涨跌。
  3. 带大家使用不同的特徵来预测涨跌。
  4. 总目标是发大财。

今天来带大家跑个模型吧!

今天会使用的的模型是常见的LSTM及GRU。一样的是,网路上有许多优质的解说文章,大家可以先去做点功课。

Step 0. 昨天准备好的资料

  • 我们昨天准备好我们的资料罗!
train_data     # (2984, 7, 4)
train_label    # (2984, )

Step 1. 建立我们的模型

  • LSTM
lstm_model = K.Sequential()
lstm_model.add(K.layers.LSTM(units=256, return_sequences=True, input_shape=(7, 4)))
lstm_model.add(K.layers.Dropout(0.3214))
lstm_model.add(K.layers.LSTM(units=64))
lstm_model.add(K.layers.Dropout(0.1432))
lstm_model.add(K.layers.Dense(units=1, activation='sigmoid'))
lstm_model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
  • GRU
gru_model = K.Sequential()
gru_model.add(K.layers.GRU(units=256, return_sequences=True, input_shape=(7, 4)))
gru_model.add(K.layers.Dropout(0.3214))
gru_model.add(K.layers.GRU(units=64))
gru_model.add(K.layers.Dropout(0.1432))
gru_model.add(K.layers.Dense(units=1, activation='sigmoid'))
gru_model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

Step 2. 切割训练资料,八成做训练,两成做测试。

train_data = np.array(train_data)
train_label = np.array(train_label)
split_num = int(len(train_data)*0.8)
train_data, test_data = train_data[:split_num], train_data[split_num:]
train_label, test_label = train_label[:split_num], train_label[split_num:]

Step 3. 训练模型及评估模型

lstm_model.fit(train_data, train_label, validation_split=0.14, epochs=50, batch_size=64, verbose=0)
gru_model.fit(train_data, train_label, validation_split=0.14, epochs=50, batch_size=64, verbose=0)
lstm_pred = lstm_model.evaluate(test_data, test_label)
gru_pred = gru_model.evaluate(test_data, test_label)

小结

  • 到目前为止,这些程序都是大家可以从网路上找到的资源。相信只要是资讯或是电机相关科系或产业的人士,都有能力可以自己从网路上找到这些资源,训练出自己的模型。
  • 其实各家的AI模型,端看各自的训练资料长什麽样子,神经网路的设计(几层,几个unit,优化器选哪个,损失函数用哪个)。
  • 这次我们训练好的模型是一个分类模型,帮我们分类训练资料的结果是1还是0,aka涨或是跌。明天会来分享如何训练一个回归模型,预测出可能的价格数值。

<<:  成为工具人应有的工具包-03 CredentialsFileView

>>:  [DAY 03]环境建置 : 硬体(1)

Day26-D3 基础图表:多线折线图

本篇大纲:范例图表一、范例图表二 昨天看完了单线折线图怎麽绘制,今天我们就来看看多线折线图吧! 有...

Day 22: Recurrent Neural Network — 循环精神网路初探(上)

Recurrent Neural Network 循环精神网路 RNN是一种专门设计用以解决时间序列...

Day 07 - 导流专家Route 53

来到了第七天,今天让我们来一起看看Route 53吧 Route 53帮那些事情? 有了Route ...

每日挑战,从Javascript面试题目了解一些你可能忽略的概念 - Day3

tags: ItIron2021 Javascript 前言 前两天我们把重点放在scope以及变数...

DAY26 学习30天的c++

cin成员函数 除了使用setw()函数设定输出格式外,还可用cin成员函数更改cin的预设输入格式...