XGBoost、LightGBM和CatBoost实战

本文基于2015年航班延误的Kaggle数据集,选取1%数据(5万条记录),探讨XGBoost、LightGBM和CatBoost在实际建模中的应用。主要涉及数据预处理、特征选择(包括类别和数值特征),并分别建立三个模型进行预测。

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

1. 数据

(1) 数据

2015年航班延误的Kaggle数据集(官方地址:https://www.kaggle.com/usdot/flight-delays#flights.csv),其中同时包含类别型变量和数值型变量。数据集中一共有约500万条记录,本文使用了1%的数据:5万条记录。

(2) 建模使用特征

•目标变量:到达延误情况(以航班是否延误超过10分钟转化为二值变量)

•解释变量:月、日、星期航线、航班号、出发机场、到达机场、出发时间、距离和飞行时间(加粗表示类别特征,标红表示需要进行one-hot编码

(3) 数据概览

2. 代码实现

(1)数据预处理

import catboost as cab
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import confusion_matrix,roc_curve,auc,f1_score,accuracy_score,\
    precision_recall_curve,classification_report,average_precision_score,roc_auc_score,make_scorer
#一共有约500万条记录,我使用了1%的数据:5万条记录
# data = pd.read_csv('/Users/harper/Desktop/seminar/flights.csv')
# data = data.sample(frac = 0.01,random_state = 10)
# data.to_csv('flights_sample.csv')
data = pd.read_csv('/Users/harper/Desktop/python/pycharm/numpy练习/flights_sample.csv')
data = data[["MONTH", "DAY", "DAY_OF_WEEK", "AIRLINE", "FLIGHT_NUMBER", "DESTINATION_AIRPORT",
             "ORIGIN_AIRPORT", "AIR_TIME", "DEPARTURE_TIME", "DISTANCE", "ARRIVAL_DELAY"]]
'''
MONTH:月——类别特征
DAY:日——类别特征
DAY_OF_WEEK:星期——类别特征
AIRLINE:航线——类别特征
FLIGHT_NUMBER:航班号——类别特征
DESTINATION_AIRPORT:到达机场——类别特征
ORIGIN_AIRPORT:出发机场——类别特征
AIR_TIME:飞行时间
DEPARTURE_TIME:出发时间
DISTANCE:距离
ARRIVAL_DELAY:到达延误情况——预测目标,转为二值变量:航班是否延误超过10分钟
'''
#删除缺失值
data.dropna(inplace=True)
#将到达延误情况转化为二值变量
data['ARRIVAL_DELAY'] = (data['ARRIVAL_DELAY'] > 10)*1
#将航线、航班号、到达机场、出发机场进行one-hot编码
cols = ['AIRLINE', 'FLIGHT_NUMBER', 'DESTINATION_AIRPORT', 'ORIGIN_AIRPORT']
for item in cols:
    data[item] = data[item].astype('category').cat.codes + 1
#将列名转换为中文
data = data.ren
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远胥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值