XGBOOST_航班延误预测

本文介绍了利用XGBOOST进行航班延误预测的过程。首先,作者通过搜集和处理数据,包括合并天气数据,构建预测模型。然后,使用XGBOOST进行训练,模型准确率达到了90%。最后,讨论了评估模型性能的方法,如AUC曲线,强调了模型预测的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,想尝试一下利用机器学习进行航班的延误预测,一开始的倾向是使用GBDT算法,使用了在scikit-learn上的肿瘤数据作为初步模型测试,使用网格搜索后发现,其预测结果仅仅只有50%不到,还不如KNN——《机器学习之Knn算法》

后来在网上看到了XGBOOST算法,于是常识了一波,准确率可以达到90%,比knn要强出5%以上,所以在模型的选择上,博主决定使用XGBOOST。

对于GBDT和XGBOOST的原理,以及各超参的控制机理,博主这边还只是初步尝试,后面会较深入的去琢磨一番,然后完善博客,但是工具的使用还是简单的,问题在于数据集。


一、航班数据集

1.1 搜集数据

国内的航班数据几乎没有,也没有免费的公开网站,而公司的数据几乎不可用,因为只有航线、航司、出发、到达、计划时间等,没有博主需要的实际时间、天气状况、航班号等。

为此博主花了一整天时间搜罗各大网站,终于发现了这个国外网站——stat-computing.org,貌似需要翻墙。可以查询到美国的航空公司航班准点率数据,博主选取的是2016年的。

此外,还有这位博主,提供的数据也被博主参考了进来——《通过使用 Python 创建机器学习模型来预测航班晚点情况》

但是唯一遗憾就是缺少天气数据,经过不断的搜索,博主发现了一个美国气象局,可以查到2016年的历史天气数据——ATL亚特兰大国际机场天气状况

亚特兰大国际机场2016年1月部分数据
在这里插入图片描述

本想通过爬虫进行爬取数据,但实际情况不允许。不过博主也是讲table标签数据copy下来,然后利用python进行数据的整理与合并。

经过分析,博主个人认为风速和降水量,由于变化幅度大,可以作为影响航班的主要因素,隐藏只提取这两个因素作为天气指数。

1.2 天气数据处理和合并

由于是调研,选取的是美国大型航空公司——DL达美,并选取了五个机场:ATL(佐治亚州亚特兰大:哈茨菲尔德-杰克逊亚特兰大国际机场)、DTW(底特律韦恩县国际机场)、JFK(纽约:约翰·F·肯尼迪国际机场)、MSP(明尼苏达州明尼阿波利斯:明尼阿波利斯圣保罗国际机场)、SEA(华盛顿州:西雅图/塔科马国际机场)

由两个文件,一个是USA_fightDataSet.xlsx,这个Excel文件记录的是起飞时间、机场、计划飞行时间、实际飞行实际、航班号等数据;另一个是由机场和月份组成的60个txt文件,里面是html的table标签数据。

博主要做的就是将table标签里的当天的天气情况,即风速和降水量,插入到表格相应的位置,代码如下:

## 获取天气数据的类方法
import pandas as pd
import numpy as np
np.set_printoptions(threshold=np.inf)
# 获取数据
def getData(url, airport, mon):
    # 读取配置文件
    table = pd.read_html(url);

    # 数据行数
    dayOfMonth = np.array(table[1])[1:, 0]
    size = dayOfMonth.size

    # 选取最后一个元素进行判断,因为爬取的数据有时候最后一个又从1号开始,这里进行判断排除处理
    ele = dayOfMonth[size-1]
    if ele == '1':
        dayOfMonth = np.array(table[1])[1:size, 0]
        wsp_data = np.array(table[5])[1:size, 1]
        precipitation_data = table[7].values[1:size, 0]
    else :
        # 读取数据,这里将header删掉,取数据
        # 日
        dayOfMonth = np.array(table[1])[1:, 0]

        # windSpeed的平均值
        wsp_data = np.array(table[5])[1:, 1]

        # 降水量
        precipitation_data = table[7].values[1:, 0]

    # 填充月份
    size = dayOfMonth.size
    month = np.array([mon for i in range(size)])

    # 填充机场
    airport = np.array([airport for i in range(size)])

    # 输出结果
    return np.vstack([month, dayOfMonth, airport, wsp_data, precipitation_data]).T

# 迭代合并数组,从2开始
def fibonacci
### 关于机票航班延误预测的源码 对于机票航班延误预测,可以利用多种机器学习模型来构建有效的预测系统。Python 是一种广泛使用的编程语言,在 GitHub 上有许多开源项目提供了详细的实现方案。 #### 数据预处理 在进行任何建模之前,数据清洗和特征工程是非常重要的环节。通常会涉及到缺失值填充、时间戳转换以及创建新的特征变量等操作[^1]。 ```python import pandas as pd from sklearn.model_selection import train_test_split # 假设 df 是已经加载好的原始 DataFrame df['date'] = pd.to_datetime(df['timestamp']) df.set_index('date', inplace=True) # 处理缺失值 df.fillna(method='ffill', inplace=True) # 创建新特征 df['hour'] = df.index.hour df['day_of_week'] = df.index.dayofweek ``` #### 构建模型 常见的用于分类任务(如判断是否会延迟)的方法有逻辑回归、随机森林和支持向量机等。下面是一个简单的例子展示如何使用 `scikit-learn` 库中的随机森林来进行训练: ```python from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score, classification_report X = df[['hour', 'day_of_week']] # 特征列 y = (df['delay_minutes'] > 0).astype(int) # 是否延误标签 # 划分测试集与训练集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) clf = RandomForestClassifier(n_estimators=100) clf.fit(X_train, y_train) predictions = clf.predict(X_test) print(f'Accuracy: {accuracy_score(y_test, predictions)}') print(classification_report(y_test, predictions)) ``` #### 部署到生产环境 当开发完成并验证过效果之后,还可以考虑将这些模型部署至实际的应用场景当中去。例如通过 Apache Kafka 和其 Streams API 来实现实时的数据流处理,并集成已有的 ML 模型做出即时响应[^2]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值