e-works数字化企业网  »  文章频道  »  基础信息化  »  云计算和虚拟化

利用 Azure + IoT 开发板和机器学习算法预测气温

2018/2/21    来源:Azure云计算    作者:朱人杰      
关键字:机器学习  物联网  
物联网,机器学习是目前最火的两个概念。今天就让我们把这两个概念结合起来,在 Azure 上轻松来实现一下。先说一下本次动手的目标,首先我们需要一个传感器把温度,湿度等信息采集下来。

    4. 现在我们来配置一下实时计算需要得到的结果,其实你可以通过 Stream 快速的运用 SQL 语句去选择你想要的数据,这次我们不做特殊的加工,一口气把所有的数据都记录下来。这样符合大数据一口气全要的原则。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    5. 我们把输入,输出,以及实时计算的部分都配置好了,就可以回去开启这个任务啦。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    6. 当任务进行一段时间后,其实开发版已经通过 IoT Hub 和 Steam Analytics 上传了很多数据了。我们来到存储账户,把这个 CSV 下载下来,看看是否数据都已经存在在里面了。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    使用 Tensorflow 进行气温预测
 
    1. 首先你需要一台装了 python,jupyter notebook,tensorflow 的机器,你可以选在用微软的 Data Science Virtual Machine,或者计算量小的话直接就用个人电脑也行。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    2. 本次气温预测主要就用了 RNN(Recurrent Neural Network),主要的作用就是做一个时序数据的预测。那么对于气温的预测为什么要选择 RNN 呢?主要的原因在于,气温的变化是基于时间点的。从短时间来说你可以预测每个小时的气温,从长时间来说你可以预测基于天的预测,更长时间是可以根据季节变换。其实古人的太阳和地球位置的变换,归纳总结出了节气,比如什么时候是大寒,什么时候是春分,这些都可以从以前的观察的气温结果来预测,本质上也是古人一种人类自我学习的结果,是利用了人脑的时序深度学习的计算。那么回到这次使用的 RNN,我们的时序输入是之前通过 MXChip 板子每过 5 秒收集下来的数据形成的一组时序 + 温度的数据,随后我们把这组数据输入到 RNN 网络,进行模型训练,输出的将是下一个 5 秒的一组时序 + 温度的数据。具体看一下模型的图例。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    3. 现在我们打开 Jupyter Notebook,从我们之前得到的温度的 csv 读取数据,我们利用 Pandas 库讲其读出,之后可以方便的用来直观展现数据。其中 Temp 这一列将是我们比较感兴趣的一列;-)
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    4. 由于我本人比较喜欢用 numpy 的方式,所以我通过 genfromtxt 库把 csv 转换成了 numpy 的矩阵。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    5. 接下来我们来用图表直观的展现一下,所有的这些数据局的大概分布。对于机器学习的过程当中,这一步其实是比较重要的,因为通过图表的展现你对数据的质量,以及本身自己的属性能有个比较直观的判断。这样有助于你选择什么样的训练方法,和模型,以及对后台的参数调优都有很大的帮助。从图上大家可以看到这段时间的温度变化并不是很大,主要集中在了 10 几度的范围内。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    6. 我们对数组进行操作,取得我们想要的温度那一列。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
  
    7. 接下来我们将请出机器学习框架的大神 Tensorflow(当然你也可以用另一座大神 CNTK,也是相当的好用)。我们会用 20 个温度值作为一次学习的数据输入,输入和输出都是使用一个温度数值,神经元这次定位 100 个。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    8. 挨下来定义 Loss 函数,本次项目里应该就是预测的输出和正式温度的差值,学习的步长定义为 0.001。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    9. 好了,我们来开始一个 Tensorflow 的训练吧,因为我们大概有 5000 多个温度数据,那么我就定义迭代次数是 5000 次,每次取 20 个温度数据,每次训练完数据集会往前迭代一个时间序列。每 100 次迭代,我们输出一次 MSE 的结果,最后的训练结果还是比较令人满意的,基本收敛了。最后我们把训练好的模型保存下来。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    ………………………………..
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    10. 既然有了训练好的模型,我们就来验证一下预测的效果。首先我们从 csv 里拿出 20 个一组的温度数据,输入到模型中。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    11. 我们得到了预测数据后,把数据图形化后来对比一下原始数据和预测数据,发现预测基本都比较准确,并且我们得到了一个未来的数据,就是第 21 个数据。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    12. 读出最后的一个温度数值是 11.36, 对比 csv 上面第 21 个数值是 11.3, 预测看起来还是挺准确哒。至此一个简单的温度预测就玩成啦。
 
利用 Azure + IoT 开发板和机器学习算法预测气温
 
    结语
 
    这次小小的实验,其实是利用了云的便利性,可以快速的使用 PaaS 话的 IoT,流计算,对象存储平台。并且有必要的话可以直接使用云计算资源里的机器学习镜像,实现快速分布式的计算。关于这个温度的预测,本次其实是对每 5 秒一次的序列进行预测,预测是一个比较短的未来。当然你也可以选取跨度比较长的温度序列,比如说小时,那么就可以预测下一小时,甚至是明天的气温了。当然 RNN 的时序预测可以用到更广泛的应用场景里,比如股票价格的预测,当然你的输入维度会增加,会包括股票的实时价格,交易量等。从文化艺术上看,你可以输入几首邓丽君的曲子,也许 RNN 可以给你输出一首新的听起来就像是邓丽君在唱的曲子。这里我就不一一赘述啦,祝愿大家好好利用云资源,发现有意思的应用场景。
 
责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐