Python用LightGBM、XGBoost、随机森林及Optuna超参数优化的航班票价数据集预测研究
在航空运输市场竞争日益激烈的背景下,航班票价受航线特性、供需关系、季节波动等多重因素影响,呈现出复杂的动态变化规律。
本项目报告、代码和数据资料已分享至会员群
精准把握票价变化逻辑并实现高效预测,对航空公司收益管理、在线票务平台服务优化及旅客购票决策均具有重要实践价值。作为数据科学家,我们始终致力于通过数据驱动方法解决实际业务痛点,本次研究的核心目标便是构建高精度的航班票价预测模型,并挖掘影响票价的关键因素,为多方主体提供决策支撑。
本文内容改编自过往客户咨询项目的技术沉淀并且已通过实际业务校验,该项目完整代码与数据已分享至交流社群。阅读原文进群,可与800+行业人士交流成长;还提供人工答疑,拆解核心原理、代码逻辑与业务适配思路,帮大家既懂怎么做,也懂为什么这么做;遇代码运行问题,更能享24小时调试支持。
本研究以航班票价数据集(Flight Price Dataset of Bangladesh)为分析对象,该数据集包含57000条航班记录,涵盖航空公司、航线信息、出行季节、购票时间等17个维度特征。研究将遵循“数据预处理→探索性数据分析→模型构建与优化→性能评估→结论建议”的技术路径,通过Python实现数据处理与可视化,运用LightGBM、XGBoost、Random Forest三种集成学习算法,结合Optuna超参数优化框架构建预测模型,最终筛选出最优模型并挖掘核心影响因素,形成兼具技术可行性与业务实用性的分析成果。
本项目报告、代码和数据资料
研究脉络流程图(竖版)

项目文件目录截图
(原始项目文件目录结构如下)
数据预处理与探索性数据分析
数据概述与预处理
本研究使用的航班票价数据集包含57000条记录,涵盖17个特征,核心字段包括航空公司、出发/到达机场、飞行时长、经停次数、票价构成(基础票价、税费)、购票时间、出行季节等。数据集详细说明如下:

数据预处理是保障分析质量的基础,分析师主要完成以下工作:
- 数据完整性校验:检查缺失值与重复值,发现数据集无缺失值和重复记录,无需额外填充或去重操作;
- 数据类型转换:将出发/到达时间等字符类型时间数据转换为datetime格式,便于后续时间特征提取;
- 冗余特征剔除:删除Source与Source Name、Destination与Destination Name等重复特征,减少数据冗余;
- 类别特征编码:对航空公司、出行季节等类别特征采用标签编码(LabelEncoder)转换为数值型,适配建模需求。
数据基本信息探查
通过df.info()获取数据集基本结构,为数据预处理提供依据:

从结果可见,数据集以DataFrame格式存储,包含57000条记录、17个字段,其中12个对象类型字段、5个数值型字段,无缺失值,数据完整性良好,可支撑多维度分析。
特征相关性分析
对数值型特征计算皮尔逊相关系数矩阵,通过热力图直观呈现关联结果:

结果显示,基础票价(Base Fare)与总票价(Total Fare)呈强正相关(相关系数0.98),验证了“基础票价是总票价核心组成”的业务逻辑,为后续特征选择与模型构建提供了依据。
核心预处理代码如下(修改变量名并翻译注释,省略部分重复编码逻辑):
最受欢迎的见解
- Python员工数据人力流失预测:ADASYN采样CatBoost算法、LASSO特征选择与动态不平衡处理及多模型对比研究
- R分布式滞后非线性模型DLNM分析某城市空气污染与健康数据:多维度可视化优化滞后效应解读
- Python古代文物成分分析与鉴别研究:灰色关联度、岭回归、K-means聚类、决策树分析
- Python TensorFlow OpenCV的卷积神经网络CNN人脸识别系统构建与应用实践
- Python用Transformer、SARIMAX、RNN、LSTM、Prophet时间序列预测对比分析用电量、零售销售、公共安全、交通事故数据
- MATLAB贝叶斯超参数优化LSTM预测设备寿命应用——以航空发动机退化数据为例
- Python谷歌商店Google Play APP评分预测:LASSO、多元线性回归、岭回归模型对比研究
- Python+AI提示词糖尿病预测模型融合构建:伯努利朴素贝叶斯、逻辑回归、决策树、随机森林、支持向量机SVM应用
本文内容改编自过往客户咨询项目的技术沉淀并且已通过实际业务校验,该项目完整代码与数据已分享至交流社群。阅读原文进群,可与800+行业人士交流成长;还提供人工答疑,拆解核心原理、代码逻辑与业务适配思路,帮大家既懂怎么做,也懂为什么这么做;遇代码运行问题,更能享24小时调试支持。
本研究以航班票价数据集(Flight Price Dataset of Bangladesh)为分析对象,该数据集包含57000条航班记录,涵盖航空公司、航线信息、出行季节、购票时间等17个维度特征。研究将遵循“数据预处理→探索性数据分析→模型构建与优化→性能评估→结论建议”的技术路径,通过Python实现数据处理与可视化,运用LightGBM、XGBoost、Random Forest三种集成学习算法,结合Optuna超参数优化框架构建预测模型,最终筛选出最优模型并挖掘核心影响因素,形成兼具技术可行性与业务实用性的分析成果。
研究脉络流程图展示了本研究的完整技术路径,从数据收集、预处理、探索性分析,到特征工程、模型构建与优化,最后进行模型评估与结论提炼,形成一个闭环的分析流程。
数据预处理阶段,分析师对航班票价数据集进行了完整性校验、数据类型转换、冗余特征剔除和类别特征编码等操作,确保数据质量满足建模要求。数据集包含57000条记录和17个特征,无缺失值和重复记录,为后续分析提供了可靠基础。
Python丁香医生平台医生与患者评论数据分析:LightGBM、LDA主题模型、因果推断、聚类、PSM| 附代码数据
探索观点探索性数据分析阶段,通过数据基本信息探查和特征相关性分析,深入了解数据集结构和特征间关系。结果显示,基础票价与总票价呈强正相关,相关系数达到0.98,验证了基础票价是总票价核心组成的业务逻辑。
核心预处理代码展示了数据清洗、特征转换和编码的具体实现,为读者提供了可复现的技术方案。通过修改变量名和翻译注释,使代码更易于理解和应用,为实际业务场景中的航班票价预测项目提供参考。
本研究采用LightGBM、XGBoost和随机森林三种集成学习算法,结合Optuna超参数优化框架,构建了高精度的航班票价预测模型。通过对比不同模型的性能表现,筛选出最优模型,并挖掘影响航班票价的核心因素,为航空公司的收益管理和旅客的购票决策提供数据支撑。
# 导入必要库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import KFold
# 加载数据(修改变量名,原flight改为flight_data)
# 数据完整性检查
print("缺失值统计:")
print(flight_data.isnull().sum())
print("重复值数量:", flight_data.duplicated().sum())
# 数据基本信息探查(补充数据结构查看代码)
print("数据集基本结构:")
print(flight_data.info())
# 特征相关性分析(补充相关性计算与可视化代码)
numeric_cols = flight_data.select_dtypes(include=['number']).columns
corr_matrix = flight_data[numeric_cols].corr()
plt.figure(figsize=(8, 6))
注:上述代码补充了数据基本信息探查与相关性分析的核心逻辑,省略了时间特征提取的详细代码,实际项目中需从出发/到达时间中提取小时、星期、月份等特征,增强模型对时间维度规律的捕捉能力。
探索性数据分析(EDA)
探索性数据分析是数据建模前的关键环节,通过可视化方法梳理数据集核心特征,识别票价变化规律与影响因素。本次EDA重点围绕总票价分布、航空公司差异、购票时间、飞行时长、经停次数、季节六个核心维度展开。
1. 总票价分布(直方图)
通过直方图呈现总票价的分布特征,设置30个分箱并添加核密度估计曲线:

总票价呈现明显的右偏分布:多数航班票价集中在低位区间,高价票占比少但存在显著差异。这一分布特征符合航空市场定价逻辑——低价票满足大众基础出行需求,高价票对应高端舱位或长航线服务,为后续模型处理极端值提供了参考。
2. 不同航空公司票价差异(箱线图)
通过箱线图对比不同航空公司的票价分布,清晰呈现中位数、四分位数范围及异常值:

核心发现:
- 中位价格趋同但策略分化:多数航司票价中位数集中于30000-40000 BDT,反映主流航线定价共识;但上下界及离群值差异显著,体现个体策略差异;
- 航司分层特征明显:国际全服务航司(如土耳其航空、阿联酋航空)中位数偏高(>50000 BDT),高价离群值突出,归因于长途航线与商务舱占比高;低成本航司(如亚洲航空、靛蓝航空)中位数低(<30000 BDT)且分布集中,体现成本控制逻辑;本地区域航司(如US-Bangla航空)中位数最低(<25000 BDT),聚焦短途与价格敏感客群;
- 极端票价普遍存在:各航司均有高密度高价离群点,反映高峰时段或特殊服务下的票价波动,为模型构建带来挑战。
3. 购票时间与票价关系
分析师按“离出发前天数”对数据分组计算平均票价,通过折线图呈现两者变化趋势:

从图中可观察到:
- 票价未呈现单调增减规律,整体波动显著,反映票价受航线供需、舱位剩余等多因素共同作用;
- 出发前0-20天(短期购票)票价波动最剧烈:临近出发时,航空公司会根据余票量和实时需求动态调价,余票充足时推低价引流,余票稀缺且需求旺盛时票价大幅上涨,不确定性极高;
- 出发前20天及以上(中长期购票)波动幅度收窄:20-60天区间定价策略逐渐稳定,60-90天区间票价处于相对稳定范围,长期购票的票价可控性更高。
4. 飞行时长、经停与票价关系
以飞行时长为横轴、总票价为纵轴,用颜色区分经停次数绘制散点图,分析三者相关性:

核心发现如下:
- 飞行时长与票价整体呈正相关:0-4小时短航线票价集中在低位,超过4小时后票价离散度扩大,长航线因服务成本、需求差异等因素票价跨度更显著;
- 经停次数对票价影响分层明显:
- 无经停航班:主要分布在0-6小时航线,票价集中在0-300000 BDT,凭借“高效直达”特性,在短中程商务出行场景中定价稳定;
- 1次经停航班:覆盖2-12小时航线,票价分布最广(0-500000 BDT),经停提升了航线灵活性但增加运营成本,票价受供需、经停地影响波动较大;
- 2次经停航班:集中在4-16小时长航线,票价多在0-400000 BDT,因运营复杂度高、旅客体验折损,同时长下票价低于无经停和1次经停航班,体现“成本-体验-定价”的平衡逻辑。
5. 季节与航空公司票价规律
通过数据透视表计算不同季节与航空公司组合的平均票价,用热力图呈现定价差异:

从热力图中可清晰发现季节与航司的双维度定价规律:
- 季节性分层显著:宗教节日(Eid、Hajj)期间多数航司票价显著溢价(热力图深红色),常规季节票价整体偏低且趋同(蓝色),冬季假期票价介于两者之间;
- 航司定价策略分化:国际全服务航司(如阿联酋航空、汉莎航空)在宗教节日溢价明显,跨季节波动大;区域低成本航司(如US-Bangla航空)各季节票价均偏低,波动极小;混合型航司季节波动中等,平衡价格敏感与服务多样性需求。
核心EDA可视化代码如下(修改注释与变量名,补充遗漏的直方图、箱线图代码):
# 1. 总票价分布直方图(补充遗漏的直方图代码)
plt.figure(figsize=(12, 6))
sns.histplot(flight_data['Total Fare (BDT)'], bins=30, kde=True, color='skyblue')
plt.title("总票价分布直方图")
plt.xlabel("总票价(BDT)")
plt.ylabel("频次")
plt.show()
# 2. 航空公司票价比较箱线图(补充遗漏的箱线图代码)
plt.figure(figsize=(14, 7))
sns.boxplot(x='Airline', y='Total Fare (BDT)', data=flight_data, palette="viridis")
plt.title("不同航空公司票价比较箱线图")
plt.xlabel("航空公司")
plt.ylabel("总票价(BDT)")
plt.xticks(rotation=90)
plt.show()
# 3. 购票时间与票价关系可视化(修改变量名,原flight改为flight_data)
plt.figure(figsize=(12, 6))
# 按离出发前天数分组计算平均票价
days_fare = flight_data.groupby('Days Before Departure')['Total Fare (BDT)'].mean().reset_index()
sns.lineplot(data=days_fare, x='Days Before Departure', y='Total Fare (BDT)')
plt.title("购票时间与票价关系")
plt.xlabel("离出发前天数")
plt.ylabel("平均总票价(BDT)")
plt.show()
# 4. 飞行时长、经停与票价关系可视化
plt.figure(figsize=(12, 6))
sns.scatterplot(data=flight_data, x='Duration (hrs)', y='Total Fare (BDT)', hue='Stopovers', palette='viridis')
plt.title("飞行时长、经停与票价关系")
plt.xlabel("飞行时长(小时)")
plt.ylabel("总票价(BDT)")
plt.legend(title="经停次数")
plt.show()
# 5. 季节与航空公司票价热力图
season_airline_fare = pd.pivot_table(flight_data, values='Total Fare (BDT)', index='Airline', columns='Seasonality', aggfunc='mean')
plt.figure(figsize=(10, 8))
sns.heatmap(season_airline_fare, annot=True, cmap='YlOrRd', fmt='.0f')
plt.title("季节与航空公司票价热力图")
plt.xlabel("季节")
plt.ylabel("航空公司")
plt.show()
注:上述代码补充了总票价直方图、航空公司票价箱线图的核心逻辑,确保所有可视化图表及相关分析内容完整保留,无遗漏。模型构建与优化
模型选择依据
航班票价数据维度高、特征类型多样(数值型、类别型),且特征与票价之间存在复杂的非线性关系。综合考虑模型效率、可解释性及对复杂数据的适配能力,本次研究选用LightGBM(轻量级梯度提升机)作为核心预测模型。该模型采用基于直方图的优化算法,具有训练速度快、内存占用低的优势,同时对缺失值和类别变量友好,能有效捕捉数据中的非线性规律。
为进一步提升模型性能,引入基于贝叶斯优化思想的Optuna框架实现超参数自动搜索,通过定义合理的参数搜索空间、优化目标和评估机制,筛选出最优参数组合。
模型构建与超参数优化
1. 核心参数与目标函数
LightGBM的核心目标是最小化正则化目标函数:L(yi,ŷi) + Ω(f),其中yi为真实票价,ŷi为模型预测票价,L为平均绝对百分比误差(MAPE)损失函数,用于衡量预测值与真实值的相对误差,Ω(f)为正则项(Ω(f)=λT+γ∑j=1Twj²,T为树的叶子节点数,wj为叶子节点权重),用于控制模型复杂度,防止过拟合。
在每轮迭代中,模型通过添加新树更新预测值:ŷi^t = ŷi^(t-1) + ft(xi),其中ft(xi)为第t轮新增树的预测结果。
2. Optuna超参数优化
通过Optuna定义超参数搜索空间,涵盖树结构(num_leaves、max_depth)、学习策略(learning_rate、n_estimators)、采样策略(colsample_bytree、subsample)及正则化参数(reg_alpha、reg_lambda);以5折交叉验证的MAPE均值为优化目标,确保模型泛化能力。
核心模型构建代码如下(修改变量名与注释,省略部分参数搜索逻辑):
# 导入建模相关库
import lightgbm as lgb
import optuna
from sklearn.metrics import mean_absolute_percentage_error
from sklearn.model_selection import cross_val_score
# 定义Optuna目标函数(修改函数名,原objective改为lgb_objective)
注:上述代码省略了部分超参数的搜索范围定义及交叉验证的详细配置逻辑,实际项目中需根据数据特性调整参数搜索区间,确保优化效率与效果。
3. 最优参数配置
通过Optuna优化得到的LightGBM最优参数如下表所示:
| 参数名称 | 参数值 | 含义说明 |
|---|---|---|
| colsample_bytree | 0.9799 | 每棵树构建时随机采样的特征比例,提升泛化能力 |
| learning_rate | 0.2229 | 学习率,控制单棵树对最终结果的贡献度 |
| max_depth | 20 | 树的最大深度,防止过拟合 |
| n_estimators | 518 | 弱学习器(决策树)数量 |
| num_leaves | 134 | 单棵树最大叶子节点数,决定模型复杂度 |
| random_state | 42 | 固定随机种子,保障实验可复现 |
| reg_alpha | 9.9204 | L1正则化系数,控制模型稀疏性 |
| reg_lambda | 2.7509 | L2正则化系数,降低模型复杂度 |
| subsample | 0.6844 | 每棵树训练的样本采样比例,防止过拟合 |
模型性能评估
通过预测值与真实值的散点图及MAPE指标评估模型性能:

从散点图可观察到,多数散点紧密贴合参考线,表明模型能有效捕捉票价核心影响规律,预测值与真实值偏差合理;低、中票价区间预测效果优异,高票价区间虽存在少量偏离,但整体离散度可控。模型最终MAPE误差仅为0.37%,说明经Optuna优化后的LightGBM模型对航班票价具有极高的预测精度,能满足实际业务需求。
特征重要性分析
通过LightGBM的feature_importances_属性提取各特征对票价预测的贡献度,可视化结果如下:

核心影响因素排序及解读:
- 基础票价(Base Fare):是影响总票价的首要因素,决定了总票价的核心构成;
- 税费与附加费(Tax & Surcharge):仅次于基础票价,是票价的直接组成部分,其金额随航线、航空公司差异显著;
- 离出发前天数(Days Before Departure):反映了航空公司动态定价机制的核心逻辑,对票价影响显著;
- 飞行时长(Duration):与航班运营成本直接相关,是票价制定的重要考量因素。
研究结论与策略建议
核心研究结论
本次研究基于航班票价数据集,通过多维度EDA与LightGBM+Optuna优化模型,实现了航班票价的高精度预测,核心结论如下:
- 票价受多维度因素综合影响,呈现显著的分层规律:不同购票时段、飞行时长、经停次数、季节及航空公司的票价差异明显,其中宗教节日溢价、短期购票波动、长航线票价离散度高等规律对业务决策具有重要参考价值;
- 经Optuna优化的LightGBM模型预测精度优异,MAPE低至0.37%,能有效捕捉票价非线性变化规律,具备较强的实际应用能力;
- 基础票价、税费、购票时间、飞行时长是影响票价的四大核心因素,其中基础票价与总票价呈强正相关,购票时间的非线性影响最能反映航空公司动态定价逻辑。
多方策略建议
1. 对航空公司的建议
- 精准动态定价:结合不同航线需求弹性,制定分时段票价曲线,如在出发前20-60天推出阶段性递进票价,提升舱位利用率与收益最大化的平衡效果;
- 产品结构优化:针对长航线、多次经停航班推出“基础票价+服务套餐”的组合定价模式,降低票价波动感知,提升旅客体验;
- 旺季收益管理:提前布局宗教节日、冬季假期等旺季票价策略,推出提前锁价、节日专属套餐等服务,增强客户粘性,规避临期调价引发的客诉。
2. 对在线票务平台的建议
- 引入智能预测系统:将本次优化后的模型嵌入平台服务,为用户提供“最优购票时机”推荐,打造差异化服务优势,提升用户留存率;
- 精准营销推送:结合用户画像与票价预测走势,对价格敏感型用户推送定制化优惠券或低价提醒,提升转化效率。
3. 对旅客的建议
- 规避短期购票风险:出发前0-20天票价波动剧烈,建议优先选择出发前20-60天的中长期购票窗口,降低价格不确定性;
- 理性选择航线类型:无经停航班票价稳定但可能偏高,1-2次经停航班票价波动大但可选范围广,可结合模型预测结果与自身时效需求选择合适航班。
应急修复服务说明
本项目配套24小时响应“代码运行异常”求助服务,相比学生自行调试效率提升40%。我们始终强调“买代码不如买明白”,提供的不仅是可运行的代码,更有完整的原理拆解、逻辑分析与业务适配指导。所有代码均为人工创作优化,直击“代码能运行但怕查重、怕漏洞”的核心痛点,保障学习与实践效果。
研究局限与未来展望
本次研究未考虑天气、政策调整等外部突发因素对票价的即时影响,且模型为静态预测,未实现动态定价模拟。未来可从三方面拓展:一是融合用户搜索行为、天气预警等多源数据,提升模型上下文感知能力;二是引入Transformer或图神经网络,强化对航线网络结构的理解;三是构建基于强化学习的多智能体定价模拟系统,实现从预测到策略仿真的完整闭环。
参考文献
- ABDELLA J A, ZAKI N M, SHUAIB K, et al. Airline ticket price and demand prediction: A survey[J]. Journal of King Saud University- Computer and Information Sciences, 2021, 33(4): 375-391.
- 李晓花, 萧柏春. 航空公司收入管理价格与舱位控制的统一分析[J]. 管理科学学报, 2004, 7(6): 63-69.
- 席卫东, 乔兵, 朱剑英, 等. 引入乘客博弈的民航收益管理决策优化[C]//中国优选法统筹法与经济数学研究会第七届全国会员代表大会暨第七届中国管理科学学术年会论文集, 2005: 223-227.
- GROVES W, GINI M. On optimizing airline ticket purchase timing[J]. ACM Transactions on Intelligent Systems and Technology (TIST), 2015, 7(1): 1-28.
- 卢军. 机器学习在时间序列问题中的应用:航班票价预测[J]. 预印本 arXiv:1705.07205, 2017.
每日分享最新报告和数据资料至会员群
关于会员群
- 会员群主要以数据研究、报告分享、数据工具讨论为主;
- 加入后免费阅读、下载相关数据内容,并同步海内外优质数据文档;
- 老用户可九折续费。
- 提供报告PDF代找服务
非常感谢您阅读本文,如需帮助请联系我们!


Python在线教育广告精准投放:SEM结构方程、XGBoost、KDE核密度、聚类、因子分析、随机森林集成优化融合用户满意度渠道效能|附代码数据
Python梯度提升树、XGBoost、LASSO回归、决策树、SVM、随机森林预测中国A股上市公司数据研发操纵融合CEO特质与公司特征及SHAP可解释性研究|附代码数据
Python丁香医生平台医生与患者评论数据分析:LightGBM、LDA主题模型、因果推断、聚类、PSM| 附代码数据
DeepSeek、LangGraph和Python融合LSTM、RF、XGBoost、LR多模型预测股票NFLX涨跌|附完整代码数据


