背景
当前位置:首页 > 网站精选 > 使用Spark和TensorFlow预测航班延误(一)

使用Spark和TensorFlow预测航班延误(一)

  • 发布时间:2020-10-02 06:54:36

以前我们介绍过IBM数据科学家集成工作台的信息,请参考《在Jupyter Notebooks里进行大数据分析,So easy!》。为更好的学习大数据技术,IBM提供了一个供大数据大学的实验环境:BigData University Labs,去年推出时它虚拟化一个实验环境出来可能还需要半个小时,最近它升级了,2、3分钟环境就设置好了!


(快速链接:https://datascientistworkbench.cn/


今天我们简介它的一个机器学习的例子程序:使用Jupyter Notebook,Spark和TensorFlow来预测航班是否延误。你可以选择使用Jupyter Notebook工作台后,在Welcome界面中找到机器学习部分,快速进入它的运行界面。




先简单介绍一下运行环境,Python 2.7 以及Jupyter Notebook。训练模型的数据集来源于http://stat-computing.org/网站的2007年的美国航班数据(这一年有7百万的航班信息)。


航班信息数据结构如下:29个字段,描述航班起降时间、地点以及延误原因、时间等信息



打开预定义好的Tutorial-FlightDelay-Tensorsor.ipynb Notebook界面,你就可以一步步的执行命令和实践这个应用了:Jupyter Notebook提供了如下编程集成环境、单步执行调试运行环境和可视化展现的运行环境。




例子导引也介绍说为何使用这几个技术:Jupyter Notebook提供了Python的交互式编程界面;Spark 实现数据的预处理;TensorFlow来实现模型的建立。关于TensorFlow的信息可以去这个中文社区找到详细的文档:http://tensorfly.cn/tfdoc/get_started/introduction.html

你也把社区里面的例子拷贝到这个环境中运行。在本文中使用到航班历史数据训练一个分类模型来预测新的航班是否会延误。数据预处理部分使用到Spark SQL以及SparkML的包。由于数据集比较大,因此使用SparkML的原因是可以使用多节点来进行并行处理,可以比较快速得到结果,而之前谷歌开源出来的TensorFlow只能在单节点运行,在这里使用它来构建分类模型。


程序前面的代码都是将航班文件数据读入到Spark的DataFrame结构中,同时增加一个标志位DepDelayed,说明该航班是否延误超过15分钟,这个标志位用于指明数据集的分类结果:



Spark的RDD数据预处理完成后,就可以运行Spark SQL来研究当年历史航班数据集的信息了,常见问题如下:


  1. 哪些机场经常延误?

    (由于原数据集中没有列明机场的全称,因此还从网上下了一个机场名称数据集,里面包含了航班起飞机场代号与实际机场名称对应的文件)按照航班起飞机场分类,统计航班数以及平均延误时间,排前列的有Houston、Tucson、Spokane机场都是可能延误高发机场啊!Houston平均每航班延误10分钟,近二十万航班的话时间就多了去......



    可视化图部分代码如下:


    关于matplotlib的toolkits中basemap的用法可以参考:http://matplotlib.org/mpl_toolkits/index.html以及http://matplotlib.org/basemap/

    下图是代码运行结果:圆圈大小表明机场航班繁忙程度,颜色越红表明经常延误......


  2. 哪些航线容易延误?以上代码使用航班起飞和降落航线进行分组,再统计平均的延误时间以及次数

    可视化部分代码是:结果如下:每条线表示一段航线,颜色越深表明这段航班延误可能性比较大。

  3. 哪些航空公司按照月份看延误比较多?

    下图可以看到6月和8月延误的航班最多


  4. 每天按照每小时分析延误的航班有多少?

    下图看到的延误可能的原因:

     - 每天晚上的航班极可能延误,可能航班问题都堆积到晚上

     - 文中还有一个结论是每周第一天(周日晚或周一晚)也比较多延误,可能是周一例会较多(不知怎么的出来的....)




好了,以上是数据集的概况,我们可以通过以上代码先把Python的数据可视化学好。我们接下来开始使用逻辑回归算法来建模,预测你的航班是否可能晚点,请看下期(To Be Continue ......)







友情链接