目录

介绍

创建LSTM NN回归器

训练模型

测试模型

下一步


  • 下载异常检测 - 17.9 MB

介绍

本系列文章将指导您完成使用AI开发功能齐全的时间序列预测器和异常检测器应用程序所需的步骤。我们的预测器/检测器将处理加密货币数据,特别是比特币。但是,在学习完本系列之后,您将能够将所学的概念和方法应用于任何性质相似的数据类型。

要从本系列中充分受益,您应该具备一些Python、机器学习和Keras技能。整个项目都可以在我的“GitHub 存储库中找到。您还可以在此处和此处查看完全交互式的notebook。

在上一篇文章中,我们讨论了对时间序列数据的异常检测——现在我们能够检测过去观察中的异常。但是如果我们想在预测中检测它们呢?如果我们想确定明天的比特币价格是否会出现异常怎么办?

明天的比特币价格——以及任何其他时间序列性质的未来数据——可以使用预测来预测。这种方法涉及在历史数据上拟合机器学习 (ML) 模型,并使用它们来预测尚不可用的未来值。

在这个项目中,我们将使用按24小时顺序重组的历史比特币价格(按时间顺序排列的24个价格)来预测下一小时的价格。为了获得这样的数据集形状,我们已经定义了 shift_samples函数——请参阅上一篇文章。

在本文中,我们将使用LSTM NN作为回归器,而不使用自动编码器架构。我们还将在项目的Notebook(此处提供完全交互式的一个)中比较我们的LSTM与卷积神经网络。尽管ConvNets超出了我们在本系列中的范围,但如果LSTMs在您的场景中不能很好地工作,它们将来会对您有用。

创建LSTM NN回归器

让我们通过发出以下命令来创建LSTM NN回归器:

regressor = Sequential()regressor.add(layers.LSTM(256, activation='relu', return_sequences=True, input_shape=(tsteps, nfeatures),dropout=0.2))regressor.add(layers.LSTM(256, activation='relu',dropout=0.2))regressor.add(layers.Dense(1))
regressor.compile(loss='mse', optimizer='adam')

一方面,我们使用MSE作为损失函数,因为我们正在尝试构建回归器而不是分类器。另一方面,我们模型的最后一层没有任何激活函数。我只设置一个神经元,因为我们的数据集中只有一个特征,但我们也在尝试获取给定序列中的下一个值。如果您想获得多个,我建议您查看此Notebook,我将相同的方法应用于天气数据和其他一些变化。使用下表查看根据您要完成的任务使用哪些激活和损失函数:

训练模型

要训​​练模型,请发出以下命令:

from tensorflow.keras.callbacks import ModelCheckpoint
checkpoint = ModelCheckpoint("/kaggle/working/regressor.hdf5", monitor='val_loss', verbose=1,save_best_only=True, mode='auto', period=1)
history2 = regressor.fit(X_train,y_train,epochs=30,batch_size=128,verbose=1,validation_data=(X_test, y_test),callbacks=[checkpoint],shuffle=False)

在该过程结束时,您应该得到类似于以下的结果:

Epoch 30/30
175/175 [==============================] - ETA: 0s - loss: 3.6093e-04
Epoch 00030: val_loss did not improve from 0.00024
175/175 [==============================] - 15s 87ms/step - loss: 3.6093e-04 - val_loss: 0.0023

测试模型

我们一直在使用keras的ModelCheckpoint方法来保存训练期间获得的最佳模型。让我们从现在开始使用它并在测试集上对其进行评估:

regressor = load_model("regressor.hdf5")
regressor.evaluate(X_test, y_test)
174/174 [==============================] - 1s 6ms/step - loss: 2.3974e-04
0.0002397427597315982

不错!在评估回归量时,输出越小,误差越小。误差越小,我们的模型就越好。在这种情况下,我们获得了一个非常接近于零的数字,因此我们相当简单的模型架构足以获得良好的结果。但是,您可能会遇到需要设计更复杂模型或投入几个小时进行超参数调整的场景,这完全没问题。这一步更像是一个试错过程,而不是“冲刺”过程。

让我们看看实际的预测是什么样的。为此,让我们取X_test数据集的前24小时并调用我们的回归器来预测下一小时的值:

test = regressor.predict(X_test[0].reshape(1,24,1))

在上一篇文章中,我们将所有数据缩放到较小的值,以确保我们的模型能够收敛。现在我们将使用相同的缩放器,但这次是为了获得模型输出的逆变换并获得实际值。让我们看看这个值是什么,并了解输出形状是什么:

scaler.inverse_transform(test)
array([[6507.955]], dtype=float32)

好的!现在我们知道我们的模型正在输出正确的数据形状,并且它已经启动并运行,准备好预测最近的数据以获得未来的数据点。

下一步

在接下来的文章中,我们将在比特币价格数据的实时流相结合的预测和检测。敬请关注!

https://www.codeproject.com/Articles/5295165/AI-Forecasting-on-Bitcoin-Time-Series-Data

(四)比特币时间序列数据的AI预测相关推荐

  1. (二)预处理时间序列数据用于AI预测和异常检测

    目录 介绍 检查.重新格式化和清理比特币数据集 拆分比特币数据集 扩展比特币数据集 生成序列并创建数据集 下一步 下载 AnomalyDetection.zip - 17.9 MB 介绍 本系列文章将 ...

  2. (三)比特币时间序列数据的AI异常检测

    目录 介绍 了解异常 AI视角下的异常检测 使用K-Means聚类检测异常 实现神经网络和自动编码器来检测比特币历史价格的异常 下一步 下载异常检测 - 17.9 MB 介绍 本系列文章将指导您完成使 ...

  3. 时间序列数据预测的类型

    本文主要内容是使用LSTM网络进行不同类型的时间序列预测任务,不涉及代码,仅仅就不同类型的预测任务和数据划分进行说明. 参考文章:https://machinelearningmastery.com/ ...

  4. 智能学习 | MATLAB实现基于HS和谐搜索的时间序列未来多步预测

    智能学习 | MATLAB实现基于HS和谐搜索的时间序列未来多步预测 目录 智能学习 | MATLAB实现基于HS和谐搜索的时间序列未来多步预测 效果一览 基本介绍 模型描述 程序设计 参考资料 效果 ...

  5. (五)流比特币价格的AI预测和异常检测

    目录 介绍 从Poloniex API收集比特币数据 预测和检测Poloniex API数据中的异常 结论 下载异常检测 - 17.9 MB 介绍 本系列文章将指导您完成使用AI开发功能齐全的时间序列 ...

  6. (一)为什么要在时间序列数据上使用AI?

    目录 介绍 理解AI上下文中的时间序列数据 下一步 下载源代码 - 17.9 MB 介绍 我们都知道现在人工智能有多流行.有很多关于最常见的AI应用的文档和文章:图像分类.对象检测.回归等.如果您看到 ...

  7. keras时间序列数据预测_使用Keras的时间序列数据中的异常检测

    keras时间序列数据预测 Anomaly Detection in time series data provides e-commerce companies, finances the insi ...

  8. Richard Sutton:经验是AI的终极数据,四个阶段通向真正AI的发展之路

    导读:强人工智能的发展是近年来关注的话题.让AI从人类的感知和行为,而非单纯的标注数据中学习,成为许多研究者关注的重点.其中,如何利用人类习得的日常生活经验,启发构建能够适应不同环境,与外部世界交互的 ...

  9. 《30天吃掉那只 TensorFlow2.0》 1-4 时间序列数据建模流程范例 (国内新冠疫情结束时间预测问题)

    1-4 时间序列数据建模流程范例 (国内新冠疫情结束时间预测问题) 文章目录 1-4 时间序列数据建模流程范例 (国内新冠疫情结束时间预测问题) 一,准备数据 二,定义模型 三,训练模型 四,评估模型 ...

最新文章

  1. Jmeter接口测试踩过的坑,快来看鸭~
  2. c++ 初始化 代码 应放在那里_Go语言goroutine调度器初始化 (12)
  3. python导入csv文件-python读写csv文件
  4. 浅析LAN交换机的线速释义 From: www.c114.net
  5. php源码 乱码 通达oa_php中文乱码问题的终极解决方案汇总
  6. 提高代码质量的几个方法!52个,先罗列几个自己看
  7. 【LeetCode】【字符串】题号:412. Fizz Buzz
  8. sqlserver200864位下载_sql2008r2企业版下载-sql2008r2安装包64位 最新版 - 极光下载站...
  9. Altera系列板子没有办法sudo,问题解决
  10. MIL-STD-810G湿热试验,权威美军标环境试验报告
  11. testbed软件测试技巧,基于LDRA Testbed 软件的单元测试
  12. MPEG4Extractor分析
  13. 7月22日 暑假的一些心得记录
  14. wcl怀旧服网站中文查服务器fb进度,魔兽世界怀旧服wcl数据查询方法
  15. 基于神经网络的图像去水印/图像修复实践
  16. mininet sflow 资料和经验
  17. python爬虫基础知识
  18. 嵌入式linux pam,Linux PAM 之cracklib模块
  19. 海藻酸钠-PEG-N-羟基琥珀酰亚胺 NHS-PEG-alginate
  20. Spring 发生 has not been refreshed yet 异常

热门文章

  1. apache mediawiki 安装_MediaWiki初探:安装及使用入门
  2. html表白特效源代码_程序员如何在七夕节表白
  3. .net+mysql关闭连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...
  4. 如何更改应用路径_【电脑】实用技巧分享:如何更改电脑桌面路径?
  5. APP设计UI优秀案例|价格标签这样设计才更直观!
  6. 困计算机无法启动adb,win7系统无法启动adb.exe工具包的解决方法
  7. messagebox的用法_酝酿已久,MessageBox类实例代码讲解
  8. Python爬虫实战之解密HTML
  9. 2021年五月中旬推荐文章
  10. 内存分配器ptmalloc,jemalloc,tcmalloc调研与对比