机器学习:基于逻辑回归对航空公司乘客满意度的因素分析

news2024/11/17 17:51:38

在这里插入图片描述

机器学习:基于逻辑回归对航空公司乘客满意度的因素分析

作者:i阿极

作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


大家好,我i阿极。喜欢本专栏的小伙伴,请多多支持

专栏案例:机器学习案例
机器学习(一):线性回归之最小二乘法
机器学习(二):线性回归之梯度下降法
机器学习(三):基于线性回归对波士顿房价预测
机器学习(四):基于KNN算法对鸢尾花类别进行分类预测
机器学习(五):基于KNN模型对高炉发电量进行回归预测分析
机器学习(六):基于高斯贝叶斯对面部皮肤进行预测分析
机器学习(七):基于多项式贝叶斯对蘑菇毒性分类预测分析
机器学习(八):基于PCA对人脸识别数据降维并建立KNN模型检验
机器学习(十四):基于逻辑回归对超市销售活动预测分析
机器学习(十五):基于神经网络对用户评论情感分析预测
机器学习(十六):线性回归分析女性身高与体重之间的关系
机器学习(十七):基于支持向量机(SVM)进行人脸识别预测
机器学习(十八):基于逻辑回归对优惠券使用情况预测分析
机器学习(十九):基于逻辑回归对某银行客户违约预测分析
机器学习(二十):LightGBM算法原理(附案例实战)
机器学习(二十一):基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
机器学习(二十二):基于逻辑回归(Logistic Regression)对股票客户流失预测分析

文章目录

  • 机器学习:基于逻辑回归对航空公司乘客满意度的因素分析
  • 1、前言
  • 2、数据说明
  • 3、数据读取及预处理
  • 4、客户满意度分布情况
  • 5、乘客其他情况
    • 5.1 不同满意度的乘客中男女人数
    • 5.2 不同满意度的乘客中客户类型的人数
    • 5.3 不同满意度的乘客中旅行类型的人数
  • 6、相关性分析
  • 7、建模预测


1、前言

航空公司乘客满意度是一个关键的指标,对于航空公司来说至关重要。了解乘客满意度的因素可以帮助航空公司优化服务,提升乘客体验,从而提高乘客忠诚度和口碑。

本文旨在基于逻辑回归方法对航空公司乘客满意度的因素进行分析。逻辑回归是一种广泛应用于分类问题的统计学习方法,能够帮助我们理解和预测不同因素对乘客满意度的影响程度。

在本文中,我们将收集与乘客满意度相关的数据,包括乘客的个人信息、航班信息、服务评价等方面。然后,我们将使用逻辑回归模型对这些数据进行建模和分析,以确定对乘客满意度具有显著影响的因素。

通过本文的研究,我们期望能够揭示出哪些因素对乘客满意度的影响最为显著,从而为航空公司制定改进策略和提供更优质的服务提供依据。

本文将首先介绍航空公司乘客满意度的研究背景和意义,然后详细阐述逻辑回归方法的原理和应用。接着,我们将描述数据收集和预处理的过程,并展示实证分析的结果和讨论。最后,我们将总结研究的主要发现,并提出对未来研究的展望。

通过对航空公司乘客满意度的因素进行逻辑回归分析,我们可以为航空公司提供有针对性的改进建议,提升乘客满意度,从而增强竞争力和业务增长。

2、数据说明

id唯一的身份证件
Gender乘客性别(女性、男性)
CustomerType客户类型(忠诚客户、不忠诚客户)
Age乘客的实际年龄
TypeOfTravel乘客飞行目的(个人旅行、商务旅行)
Class乘客飞机上的旅行舱位(商务舱、环保舱、生态升级版)
FlightDistance此旅程的飞行距离
InflightWifiservice机上wifi服务的满意度(0:不适用;1-5)
DepartureArrivalTimeCconvenient出发/到达时间的满意度方便
EaseOfOnlineBooking在线预订的满意度
GateLocation登机口位置满意度
FoodAndDrink食物和饮料的满意度
OnlineBoarding网上登机满意度
SeatComfort座椅舒适度满意度
InflightEntertainment机上娱乐的满意度
OnBoardService机上服务的满意度
LegRoomService腿部客房服务的满意度
BaggageHandling行李处理满意度
CheckinService入住服务的满意度
InflightService机上服务的满意度
Cleanliness清洁度的满意度
DepartureDelayInMinutes出发时延误几分钟
ArrivalDelayInMinutes抵达时延迟几分钟
satisfaction航空公司满意度(满意、中性或不满意)

3、数据读取及预处理

对数据进行导入。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import warnings
warnings.filterwarnings('ignore')
# 设置字体为中文字体(例如SimHei、Arial Unicode MS等)
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
df = pd.read_csv(r"D:\Download\data.csv")
df.head()

在这里插入图片描述

使用isna().sum()对数据查看是否有缺失值

df.isna().sum()

在这里插入图片描述

发现ArrivalDelayInMinutes列有297个缺失值,本文将ArrivalDelayInMinutes列的平均值进行填充。

df['ArrivalDelayInMinutes'] = df['ArrivalDelayInMinutes'].fillna(round(df['ArrivalDelayInMinutes'].mean(),2))

使用duplicated().sum() 查看是否有重复值

df.duplicated().sum()  

使用shape查看数据大小,结果发现有97247行,24列

df.shape

4、客户满意度分布情况

为了展示乘客满意度的分类分布情况,将用绘制饼图来进行解释。

tmp = df['satisfaction'].value_counts()
fig = plt.figure(figsize=(6,6))
plt.pie(tmp.values, 
        labels=tmp.index, 
        autopct='%1.1f%%', 
        counterclock=False, 
        startangle=90,
        )
plt.show()

在这里插入图片描述

在航空公司满意度的统计中,仅有43.3%的乘客觉得满意,剩下的56.7%的乘客是中立态度或是不满意。

5、乘客其他情况

5.1 不同满意度的乘客中男女人数

通过使用plt.bar函数绘制了一个柱状图,用于展示不同满意度的乘客中男女人数的对比情况。

tmp = df.groupby(['satisfaction','Gender']).agg({'Class':'count'}).reset_index()
unit_topics = tmp['satisfaction'].unique()
As = tmp.query('Gender == "Female"')['Class'].tolist()
Bs = tmp.query('Gender == "Male"')['Class'].tolist()
plt.figure(figsize=(10, 8))
plt.bar(range(len(As)), As, color="#D6E3B7", label='Female')
plt.bar(range(len(Bs)), Bs, bottom = As, color="#95A96A", label='Male')
ax = plt.subplot()
ax.set_xticks(range(len(unit_topics)))
ax.set_xticklabels(unit_topics)
ax.set_ylabel("Number")
plt.legend()
plt.title('不同满意度的乘客中男女人数',fontSize=18)
plt.show()

在这里插入图片描述

在不同满意度的乘客中,性别似乎不是是否满意的关键点,两者的男女比例接近1:1。

5.2 不同满意度的乘客中客户类型的人数

通过使用plt.bar函数绘制了一个柱状图,用于展示不同满意度的乘客中客户类型的人数对比情况。

tmp = df.groupby(['satisfaction','CustomerType']).agg({'Class':'count'}).reset_index()
unit_topics = tmp['satisfaction'].unique()
As = tmp[tmp['CustomerType'] == 'Loyal Customer']['Class'].tolist()
Bs = tmp[tmp['CustomerType'] == 'disloyal Customer']['Class'].tolist()
plt.figure(figsize=(10, 8))
plt.bar(range(len(As)), As, color="#D6E3B7", label='Loyal Customer')
plt.bar(range(len(Bs)), Bs, bottom = As, color="#95A96A", label='Disloyal Customer')
ax = plt.subplot()
ax.set_xticks(range(len(unit_topics)))
ax.set_xticklabels(unit_topics)
ax.set_ylabel("Number")
plt.legend()
plt.title('不同满意度的乘客中客户类型的人数',fontSize=18)

在这里插入图片描述

在不同类型的客户中,不忠诚客户更多的是不满意航空公司的服务;在满意服务的人群中,忠诚客户的占比远大于不忠诚客户。

5.3 不同满意度的乘客中旅行类型的人数

使用plt.bar函数绘制了一个柱状图,展示了不同满意度的乘客中旅行类型的人数对比情况。

tmp = df.groupby(['satisfaction','TypeOfTravel']).agg({'Class':'count'}).reset_index()
unit_topics = tmp['satisfaction'].unique()
As = tmp[tmp['TypeOfTravel'] == 'Business travel']['Class'].tolist()
Bs = tmp[tmp['TypeOfTravel'] == 'Personal Travel']['Class'].tolist()
plt.figure(figsize=(10, 8))
plt.bar(range(len(As)), As, color="#D6E3B7", label='Business travel')
plt.bar(range(len(Bs)), Bs, bottom = As, color="#95A96A", label='Personal Travel')
ax = plt.subplot()
ax.set_xticks(range(len(unit_topics)))
ax.set_xticklabels(unit_topics)
ax.set_ylabel("Number")
plt.legend()
plt.title('不同满意度的乘客中旅行类型的人数',fontSize=18)
plt.show()

在这里插入图片描述

在中立或不满意的人群中,进行商务出行和私人出行的人群占比接近1:1;而满意的人群中,进行商务出行的人数更多。

6、相关性分析

为了计算DataFrame df 中各列之间的相关性,并通过热力图可视化了相关性矩阵。

df['DepartureDelayInMinutesLabel'] = pd.cut(df["DepartureDelayInMinutes"],[0,10,30,60,120,10000],\
                                                        labels=["<10min","10-30min","30-1h","1-2h",">2h"],right=False)
df['ArrivalDelayInMinutesLabel'] = pd.cut(df["ArrivalDelayInMinutes"],[0,10,30,60,120,10000],\
                                                        labels=["<10min","10-30min","30-1h","1-2h",">2h"],right=False)
df.drop(['DepartureDelayInMinutesLabel','ArrivalDelayInMinutesLabel'], axis=1, inplace=True)
## 独热编码处理
from sklearn.preprocessing import LabelEncoder, MinMaxScaler  
le = LabelEncoder()
for i in df.columns:
    if df[i].dtypes == 'O':
        df[i] = le.fit_transform(df[i])   
 
## 计算相关性
tmp = round(df.corr(),2)
labels = tmp.columns.tolist()  
plt.figure(figsize=(16,16))
plt.xticks(np.arange(len(labels)), labels=labels, 
                     rotation=90, rotation_mode="anchor", ha="right")
plt.yticks(np.arange(len(labels)), labels=labels)
plt.imshow(tmp.values)
for i in range(len(labels)):
        for j in range(len(labels)):
            text = plt.text(j, i, tmp.values[i, j],ha="center", va="center", color="black")
plt.tight_layout()
plt.show()                                                 

在这里插入图片描述

7、建模预测

对数据集进行了划分,并使用逻辑回归模型进行建模和预测,并进行了模型评估。

## 划分数据集
X = df_model.iloc[:,:-1]
Y = df_model.iloc[:,-1:]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=2023)
## 使用逻辑回归进行建模
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
model
y_pre = model.predict(X_test)  ##预测
## 模型评估
from sklearn.metrics import accuracy_score, classification_report
accuracy_score(y_pre, y_test)  ##模型预测准确率

最后,通过打印输出 accuracy_score(y_pre, y_test),显示模型的预测准确率。准确率为 0.8386118251928021,表示模型在测试集上的预测准确率约为 83.86%。准确率是评估分类模型性能的常用指标之一,它表示模型正确预测的样本比例。在这个案例中,逻辑回归模型对测试集的预测准确率达到了约 83.86%,这意味着模型能够正确预测测试集中约 83.86% 的样本。


📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

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

相关文章

前端Vue仿京东加入购物车弹框立即购买弹框shopDialog自定义弹框内容

前端Vue仿京东加入购物车弹框立即购买弹框shopDialog自定义弹框内容&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13183 效果图如下&#xff1a; # cc-shopDialog #### 使用方法 使用注意&#xff1a; 该插件需引用…

【软件基础】面向对象编程知识总结

文章目录 前言一、面向对象要解决的问题1、 软件重用性差2、软件可维护性差3、不能满足用户需求 二、面向对象的基本概念三、面向对象的特征四、面向对象的要素五、面向对象的开发方法六、面向对象的模型1、对象模型2、动态模型3、功能模型 总结1、鸭子抽象类2、鸭子类3、鸭子动…

【Tableau案例】神奇宝贝属性及实力强弱|数据可视化

提前声明&#xff1a;神奇宝贝的数据分析仅供参考&#xff0c;不涉及对于神奇宝贝的各种评价&#xff0c;另外我是初学tableau&#xff0c;涉及到使用的tableau操作可能很简单&#xff0c;复杂的还掌握不熟练&#xff0c;之后会拿时间系统学习tabelau。 数据预处理 该数据集有…

电容笔和触控笔哪个好用?推荐平价好用的电容笔

实际上&#xff0c;电容笔和触控笔这两款笔最大的区别&#xff0c;就在于它的应用范围&#xff0c;一个是适用电容型屏幕&#xff0c;一个是适用电阻型屏幕。如果你想要一个与IPAD相匹配的电容笔&#xff0c;苹果的Pencil将会是一个很好的选择。实际上&#xff0c;平替的电容笔…

Java-API简析_java.lang.Throwable类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131367906 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

成都爱尔林江院长解析看懂验光单,掌握配镜“秘密”

想要更了解自己的“数据”&#xff0c; 想知道自己近视有没有增长&#xff0c; 该如何知道自己的度数呢&#xff1f; 到医院进行验光&#xff0c; 验光后得到的验光单&#xff0c;自己有仔细看过吗&#xff1f; 一串字母与数字&#xff0c;知道都代表着什么吗&#xff1f;…

警惕度量指标陷阱

本文首发于个人网站「BY林子」&#xff0c;转载请参考版权声明。 近日&#xff0c;某群有人发了领导制定的绩效考核指标&#xff1a; 对测试人员的工作成效进行考核&#xff0c;指标是发现的 Bug 的情况&#xff0c;甚至有参考指标细到每个小时要求发现多少 Bug&#xff0c;同时…

VUE L ClassStyle ⑦

目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ V u e j s Vuejs Vuejs C l a s s Class Class与 S t y l e Style Style绑定总结 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持…

scratch绘制正方形 少儿编程 电子学会图形化编程scratch编程等级考试二级真题和答案解析2023年5月

目录 scratch绘制正方形 一、题目要求 1、准备工作 2、功能实现 二、案例分析</

动态规划之下降路径最小和

1. 题目分析 题目链接选自力扣 : 下降路径最小和 如果光看这个题目说明的话, 是有点抽象的. 我们结合实例 1 来看 : 总的来说就是, 起始点是第一行中的任意一点, 每个点只有三个方向可以走即向下, 左下, 右下. 当到达最后一行的任意一点即算作到达终点. 期间不同的路径上不同…

mysql单机安装

准备工作 检测项 检测命令 标配值 服务器内存 free -m 32G 硬盘 df -h 1T seLinux getenforce Disabled&#xff08;disabled指关闭&#xff0c;Enforcing指开启 文件描述符大小 ulimit -n 65535 其他优化 Other Other 清理环境 卸载服务器自带…

佩戴比较舒适的蓝牙耳机有哪些?长久佩戴舒适的蓝牙耳机推荐

​听歌、刷剧、游戏&#xff0c;运动、吃饭、睡觉等&#xff0c;要说现在年轻人除了离不开手机之外&#xff0c;还有就是蓝牙耳机了&#xff01;当然&#xff0c;随着蓝牙耳机的快速发展&#xff0c;各种各样的蓝牙耳机都有&#xff0c;导致很多人不知道耳机怎么选了&#xff0…

四大因素解析:常规阻抗控制为什么只能是10%?

随着高速信号传输&#xff0c;对高速PCB设计提出了更高的要求&#xff0c;阻抗控制是高速PCB设计常规设计&#xff0c;PCB加工十几道工序会存在加工误差&#xff0c;当前常规板厂阻抗控制都是在10%的误差。理论上&#xff0c;这个数值是越小越好&#xff0c;为什么是10%&#x…

Git进阶系列 | 7. Git中的Cherry-pick提交

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第7篇。原文&#xff1a;Cherry-Picking Commits in Git[1] 在本系列的第5部分中&#xff0c;讨论了r…

Facebook如何与品牌合作,提升用户体验?

Facebook是全球最大的社交媒体平台之一&#xff0c;每天有数亿用户在上面发布内容、互动交流。对于品牌来说&#xff0c;与Facebook合作可以帮助它们扩大影响力、吸引更多潜在客户。 但是&#xff0c;与Facebook合作不仅仅是在平台上发布广告&#xff0c;还需要更深入的合作来…

Ramnit病毒分析

概述 Ramnit病毒是一个相对古老的病毒&#xff0c;使用会感染系统内的exe和html文件&#xff0c;通过文件分发和U盘传播。 样本的基本信息 Verified: Unsigned Link date: 19:02 2008/2/12 Company: SOFTWIN S.R.L. Description: BitDefender Management Console MachineTyp…

王道操作系统学习笔记(3)——内存管理

前言 本文介绍了操作系统中的内存管理&#xff0c;文章中的内容来自B站王道考研操作系统课程&#xff0c;想要完整学习的可以到B站官方看完整版。 3.1.1&#xff1a;内存基本知识&#xff08;指令工作原理、编译、链接、逻辑地址到物理地址的转换&#xff09; 内存可存放数据…

【yocto1】利用yocto工具构建嵌入式Linux系统

文章目录 1.获取Yocto软件源码2.初始化Yocto构建目录2.1 imx-setup-release.sh脚本运行2.2 imx-setup-release.sh脚本解析2.2.1 setup-environment脚本解析 3.构建嵌入式Linux系统3.1 BitBake构建系统3.2 BitBake构建系统过程简要解析3.2.1 解析Metadata基本配置Metadatarecipe…

HTML+CSS面试题总结(附答案+视频讲解)

HTMLCSS面试题总结如下 红色标注为常见重点 对应的视频讲解在B站&#xff1a;可以点击免费观看 2023前端高频面试题详解/面试必刷HTMLCSS前端面试题_哔哩哔哩_bilibili 目录 1. 块元素和行内元素有哪些 2. css3选择器 &#xff08;了解&#xff09; 3. css优先级 4. 对we…

java 艺考报名系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 JSP 艺考报名系统 是一套完善的系统源码&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S模式开发。 研究的基本内容是基于Web的艺考报名系统&…