2022 年首届“钉钉杯”大学生大数据挑战赛B题:航班数据分析与预测——国奖论文代码分享

news2025/4/4 14:52:42

2023年的钉钉杯挑战赛马上要来了~这里给大家分享一下去年的国奖论文思路与代码

摘要:

        随着民航事业的迅速发展 , 飞机出行已成为未来发展的一种必然趋势,然而近年来, 航班延误现象频频发生,成为困扰机场和航空公司的难题。对航班延误做出合理评价是 分析航班延误总体水平、降低延误成本,以及制定相关处置预案的重要基础,有着重要 的现实运用价值。
        针对机场聚类分析问题的第一部分,首先按照题目要求的五种属性对原始数据集进 行预处理和计算,整理成 2006-2008 年所有航班数据涉及的全部机场属性数据集。在进行聚类分析前,我们采用霍普金斯统计量判断数据集的聚类趋势,计算得到该值为 0.94 , 十分接近于 1 ,即可以认为数据集具有较好的聚集特性,适于采用聚类方法。接着,我们分别采用 k-means 聚类、层次聚类、 DBSCAN 聚类方法基于计算出的五种属性对机场进行分类讨论,并采用轮廓系数对聚类结果进行评价与比较。结果得出,K-means 聚类方法对于该问题的聚类效果最好,机场在五个维度的属性变量下被分为了四类。
      针对机场聚类分析问题的第二部分,首先需要基于 2006-2008 年的航班信息和机场数据进行特征属性的提取。综合考虑机场的延误情况、航班特征和地理位置,人工筛选以及计算出若干属性变量,接着利用低方差过滤的方法剔除方差过小的属性,得到 21个机场属性特征。然后对 21 个属性进行因子分析,提取出 5 个公因子,分别反映机场的出发延误属性,到达延误属性,航班起落属性,地理属性和航班异常属性。对其进行层次聚类分析,结合聚类结果及一致性聚类分析判断出机场被分成 4 类效果较好。通过上述两种聚类方式与结果的对比,我们采用的自选综合性因子属性具有更好的解释性, 且聚类效果显著,稳定性高。针对起飞航班的延误分析,我们首先筛选可能影响到飞机是否延误的影响因素,接着考虑到总体数据量较大,故对全部的航班信息进行均匀随机抽样。将影响因素特征作为训练集输入,然后将延误与否视作虚拟变量(True False )输出进行分类。在建立模型时,我们发现,数据输入与输出具有良好的线性特征,拟合效果好,预测正确率高, 其输入数据的非线性性不强。我们采用 Logistic 回归 预测模型判断航班是否延误,测试
集准确率达到 0.9476
    针对到达航班延误的分析,我们采取与起飞航班相同的处理方法,根据机场分布对 原始数据集进行抽样,使用 Logistic 回归 预测模型判断航班是否延误最终测试结果准确 率可以达到 0.9677
关键字: 航班延误 K-means 聚类 层次聚类 Logistics 逻辑回归

数据预处理

import pandas as pd
import numpy as np
#06-08预处理
df1=pd.read_csv('2006.csv')
df2=pd.read_csv('2007.csv')
df3=pd.read_csv('2008.csv')
df=pd.concat([df1,df2,df3])
df=df.fillna(0)
df.to_csv('06-08.csv',index=None)
df=pd.read_csv('06-08.csv')
df=df.drop(labels=['Year',
'Month','DayofMonth','DayOfWeek','UniqueCarrier','FlightNum','TailNum'], axis=1)
df.to_csv('r06-08.csv',index=None)
#06-08计算
df=pd.read_csv('r06-08.csv')
df1=df['Origin'].value_counts()
df2=df['Dest'].value_counts()
df1.to_csv('ORIGIN.csv')
df2.to_csv('DEST.csv')
#计算起飞和到达航班总数
df1=pd.read_csv('ORIGIN.csv')
df2=pd.read_csv('DEST.csv')
df=pd.merge(df1, df2, on=['airport'], how='outer')
df=df.fillna(0)
df['Sum']=df['Origin']+df['Dest']
df.to_csv('Airports.csv',index=None)
#计算到达延迟超过10分钟航班的比例,出发延迟超过10分钟航班的比例,取消航班的比例,该机场所有航线的平均距离
df=pd.read_csv('Airports.csv')
ss=['ArrDelay10','DepDelay10','Cancelled','AveDistance']
for s in ss:
df[s]=0
df0=pd.read_csv('r06-08.csv')
ii=0
for i in df['airport']:
num1=len(df0[(df0['Dest']==i) & (df0['ArrDelay']>10)])
df['ArrDelay10'].loc[ii]=num1/df['Dest'].loc[ii] #计算到达延迟超过10分钟航班的比例
num2 = len(df0[(df0['Origin'] == i) & (df0['DepDelay'] > 10)])
df['DepDelay10'].loc[ii] = num2 / df['Origin'].loc[ii] #计算出发延迟超过10分钟航班的比例
num3 = len(df0[(df0['Cancelled'] == 1) & (df0['Dest'] == i)])
num4 = len(df0[(df0['Cancelled'] == 1) & (df0['Origin'] == i)])
df['Cancelled'].loc[ii] = (num3+num4) / df['Sum'].loc[ii] # 计算取消航班的比例
df00=df0[(df0['Origin'] == i) | (df0['Dest'] == i)]
df['AveDistance'].loc[ii] =df00['Distance'].sum() / df['Sum'].loc[ii] #
计算所有航线的平均距离
ii=ii+1
df.to_csv('Airport.csv',index=None)
#新属性计算
#计算到达延迟超过10分钟航班的比例,出发延迟超过10分钟航班的比例,取消航班的比例,该机场所有航线的平均距离
df=pd.read_csv('Airport.csv')
df=df.fillna(0)
ss=['ArrDelay30','DepDelay30','SumDelay10','SumDelay30','AveArrDelay','AveDepDelay','AveArrDelay0','AveDepDelay0']
for s in ss:
df[s]=0
df0=pd.read_csv('r06-08.csv')
ii=0
for i in df['airport']:
num1=len(df0[(df0['Dest']==i) & (df0['ArrDelay']>30)])
df['ArrDelay30'].loc[ii]=num1/df['Dest'].loc[ii] #计算到达延迟超过30分钟航班的比例
num2 = len(df0[(df0['Origin'] == i) & (df0['DepDelay'] > 30)])
df['DepDelay30'].loc[ii] = num2 / df['Origin'].loc[ii] #计算出发延迟超过30分钟航班的比例
df['SumDelay30'].loc[ii] = (num1+num2)/df['Sum'].loc[ii]#计算总延迟超过30分钟航班的比例
num3 = len(df0[(df0['Dest'] == i) & (df0['ArrDelay'] > 10)])
num4 = len(df0[(df0['Origin'] == i) & (df0['DepDelay'] > 10)])
df['SumDelay10'].loc[ii] = (num3 + num4) / df['Sum'].loc[ii] # 计算总延迟超过10分钟航班的比例
df00=df0[(df0['Dest'] == i) & (df0['ArrDelay'] > 0)]
df['AveArrDelay'].loc[ii] =df00['ArrDelay'].sum() / len(df00) #
计算所有航班的平均到达延误时间(+)
df01 = df0[(df0['Origin'] == i) & (df0['DepDelay'] > 0)]
df['AveDepDelay'].loc[ii] = df01['DepDelay'].sum() / len(df01) #
计算所有航班的平均出发延误时间(+)
df02 = df0[(df0['Dest'] == i)]
df['AveArrDelay0'].loc[ii] = df02['ArrDelay'].sum() / len(df02) #
计算所有航班的平均到达延误时间(all)
df03 = df0[(df0['Origin'] == i)]
df['AveDepDelay0'].loc[ii] = df03['DepDelay'].sum() / len(df03) #
计算所有航班的平均出发延误时间(all)
ii=ii+1
df.to_csv('Airports_extended.csv',index=None)
#计算到达延迟超过10分钟航班的比例,出发延迟超过10分钟航班的比例,取消航班的比例,该机场所有航线的平均距离
df=pd.read_csv('Airports_extended.csv')
df=df.fillna(0)
ss=['DelayforA','DelayforB','DelayforC','DelayforD','lat','long']
for s in ss:
df[s]=0
df0=pd.read_csv('r06-08.csv')
dfa=pd.read_csv('airports.csv')
ii=0

 

完整版pdf请私戳获取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Idea项目application.properties配置文件默认GBK,如何设置默认为UTF-8编码

简述:java程序在项目中一般设置都是UTF-8编码格式,但是项目application.properties 文件默认是GBK,需要手工修改默认编码格式 步骤: file->setting->editor->file encodings下,勾选transparent native-to-ascll conver…

AR远程协助平台运用到建筑领域能带来哪些帮助?

随着科技的不断发展,远程协同培训已经成为了一种越来越受欢迎的学习方式。在建筑施工领域中,这种学习方式同样具有很大的应用价值。本文将探讨AR远程协助平台在建筑施工中的应用。 首先,AR远程协助平台可以提高建筑施工的效率和质量。传统的…

Java学习之Varargs机制

概述 Varargs,即variable number of arguments,variable arguments。中文一般译为,可变长度参数,或简称可变参数,参数具体来说是形参。 自JDK5引入,借助这一机制,可以定义能和多个实参相匹配的…

基于Java+SpringBoot+Vue的流浪动物救助平台设计与实现

博主介绍:✌擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案…

【前端|CSS系列第2篇】CSS零基础入门之常用样式属性

欢迎来到CSS零基础入门系列的第二篇博客!作为前端开发的关键技术之一,CSS(层叠样式表)能够为网页添加各种样式和布局效果。对于前端零基础的小白来说,了解和掌握CSS的常用样式属性是入门的关键。本篇博客将带你深入了解…

基本的组合门电路、以及二极管、三极管(详细讲解)

基本门电路、二极管、三极管 1.基本的组合门电路1.1 与门(AND Gate):2.2 或门(OR Gate):1.3 非门(NOT Gate):1.4 异或门(XOR Gate): 2…

chatgpt赋能python:Python面向对象和面向过程编程

Python面向对象和面向过程编程 Python是一种高级编程语言,可以使用不同的编程风格进行开发。本篇文章将讨论Python面向对象和面向过程编程风格的概念、差异和优缺点。 什么是面向对象编程? 面向对象编程是一种编程范式,它将现实世界的概念…

TP6在composer包里写控制器

前提:首先要了解下如何自建composer包。 1.先建一个空包,加一个文件:composer.json {"name": "test/ctrs","type": "library","license": "MIT","autoload": {&quo…

Python一行命令搭建HTTP服务器并外网访问+-+内网穿透

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自远程内网穿透的文章:【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透…

PS扣签名

打开Photoshop CS6,依次点击“文件”-“打开”,把签名照导入进来。 在“选择”菜单下点击“色彩范围”。 此时鼠标形状变成了一支笔,点击签名上黑色的地方,适当调整颜色容差,点击“确定”完成选择。 按住CtrlJ组…

基于Java园区停车管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【SWAT水文模型】率定参数选择及校准技巧

SWAT模型率定参数选择及校准技巧 水量平衡与径流(Water Balance And Stream Flow)1 基本水量平衡和总径流校准(Basic Water Balance & Total Flow Calibration)1.1 校准地表径流:1.2 校准地下径流: 2 流…

如何查看 Facebook 公共主页的广告数量上限?

作为Facebook的资深人员,了解如何查看公共主页的广告数量上限对于有效管理和优化广告策略至关重要。本文将详细介绍如何轻松查看Facebook公共主页的广告数量上限,以帮助您更好地掌握广告投放策略。 一、什么是Facebook公共主页的广告数量上限&#xff1f…

如何使用《水经注地图服务》快速发布MBTiles数据

《水经注地图服务》的快速发布功能是一个能够帮助用户实现快速发布地图服务的功能,并且提供常规情况下大多数用户所需的默认配置,让用户在发布地图时更加便捷。 今天为大家分享如何利用《水经注地图服务》快速发布MBTiles地图数据。 准备工作 离线示例…

C语言小项目之扫雷(进阶版)

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵 带你学习更多C语言知识   🔝🔝 扫雷小项目 1. 前期准备2. 初始化…

phpRedis扩展安装以及session redis存储

1.下载redis扩展(redis扩展各个版本下载地址:https://pecl.php.net/package/redis) wget https://pecl.php.net/get/redis-3.1.6.tgz 2.解压下载的redis扩展 tar zxvf redis-3.1.6.tgz 3.用phpize生成configure配置文件 phpize 4.查找p…

账号安全总结-业务安全测试实操(27)

电子邮件账号泄露事件 电子邮箱业务基于计算机和通信网的信息传递业务,利用电信号传递和存储信息,为用户传送电子信函、文件数字传真、图像和数字化语音等各类型的信息。电子邮件最大的特点是,人们可以在任何地方、任何时间收、发信件,解决了时空的限制,大大提高了工作效…

深度学习编译器汇总

深度学习的发展对个科学领域产生了深远的影响。它不仅在自然语言处理(NLP)和计算机视觉(CV)等人工智能领域显示出显著的价值,而且在电子商务、智慧城市和药物发现等更广泛的应用领域也取得了巨大的成功。随着卷积神经网…

Django学习笔记-VS Code本地运行项目

截止到上一章节:Django 学习笔记-Web 端授权 AcWing 一键登录,我们的项目一直是部署在云服务器上,包括编写代码以及调试运行也是在云服务器上,现在我们尝试将其放回本地运行。 CONTENTS 1. 将项目传到本地2. 虚拟环境配置3. 修改项…

如何录音转文字?这份录音转文字教程你必须知道

在现代快节奏的工作环境中,电脑会议录音转文字成为了一项非常重要的任务。但是很多人不知道电脑会议录音转文字怎么转?如果你也正有这样的疑问,那么你就来对地方了!在本篇文章中,我们将为你介绍几款备受推崇的录音转文…