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

在这里插入图片描述

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

作者: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博客,创作不易,如果觉得文章不错,可以点赞?收藏?评论?
?你的支持和鼓励是我创作的动力❗❗❗文章来源地址https://uudwc.com/A/WYLER

原文地址:https://blog.csdn.net/AOAIYI/article/details/131371561

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年06月25日 13:25
【gigabyte】开机循环进入技嘉主板界面、BIOS功能识别不出硬盘
下一篇 2023年06月25日 13:26