机器学习项目-基于随机森林的航空公司用户满意度分析

摘要

​ 航空旅行是人们出行的常用方式之一,乘客对于航空公司的服务质量有着较高的要求。满意度是衡量服务质量的重要指标,因此预测航空公司乘客的满意度对于提高服务质量具有重要意义。

​ 近年来,机器学习在预测领域得到了广泛应用。机器学习模型具有自动学习能力,可以从数据中自动提取特征并进行预测,因此在预测航空公司乘客满意度方面具有较高的潜力。

​ 本研究旨在通过使用机器学习模型来预测航空公司乘客的满意度。我们使用了 Kaggle 公开数据集,并对数据进行了缺失值补齐和特征放缩处理。在此基础上,我们使用了逻辑回归分类、支持向量机和随机森林分类器进行建模并调参。最后,我们对不同模型的性能进行了对比,并得出了有关航空公司乘客满意度的有用信息。

关键词:数据规范化,svm,随机森林,逻辑回归,决策树

数据集介绍

我们使用的数据来自 Kaggle 公开数据集,包含了航空公司乘客的基本信息、机票信息和满意度评分等,该数据中的乘客的部分特征如下:

image-20240623215008253

该数据集中共有约13万条数据,共包含25个变量,我们随机选择其中80%作为训练集,余下20%作为测试集。

导入程序必要的库

pythoinimport pandas as pd
from sklearn import metrics
from sklearn.metrics import hinge_loss
from sklearn import svm
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier

读取训练集和测试集

X_train = pd.read_csv('dataset/train.csv')
X_test = pd.read_csv('dataset/test.csv')
X_train, X_test

image-20240623215246628

数据预处理

def Preprocessing(X):

    # 创建 StandardScaler 对象
    scaler = StandardScaler()

    # 3.1 将分类变量(非数值)转换为数值变量
    X['Gender'] = X['Gender'].astype('category')
    X['Gender'] = X['Gender'].astype('category').cat.codes    # male:1  female:0

    X['Customer Type'] = X['Customer Type'].astype('category')
    X['Customer Type'] = X['Customer Type'].astype('category').cat.codes    # disloyal Customer:1  Loyal Customer:0

    X['Type of Travel'] = X['Type of Travel'].astype('category')
    X['Type of Travel'] = X['Type of Travel'].astype('category').cat.codes    # Personal Travel:1  Business travel:0

    X['Class'] = X['Class'].astype('category')
    X['Class'] = X['Class'].astype('category').cat.codes    # Eco Plus:2  Business:1  Eco:0

    X['satisfaction'] = X['satisfaction'].astype('category')
    X['satisfaction'] = X['satisfaction'].astype('category').cat.codes    # satisfied:1  neutral or dissatisfied:0


    # 3.2 标准化
    X_scaled = scaler.fit_transform(X[['Age']])
    X['Age'] = X_scaled

    X_scaled = scaler.fit_transform(X[['Flight Distance']])
    X['Flight Distance'] = X_scaled

    X_scaled = scaler.fit_transform(X[['Departure Delay in Minutes']])
    X['Departure Delay in Minutes'] = X_scaled

    X_scaled = scaler.fit_transform(X[['Arrival Delay in Minutes']])
    X['Arrival Delay in Minutes'] = X_scaled


    X = X.fillna(X.mean())

    # 3.3 划分出训练数据 和 对应的label
    return X.iloc[:,2:-1], X.iloc[:,-1]

测评指标

def evaluate(y_true, y_pred):
    # 计算准确率
    accuracy = metrics.accuracy_score(y_true, y_pred)
    print("Accuracy:", accuracy)
    # 计算精确率
    precision = metrics.precision_score(y_true, y_pred)
    print("Precision:", precision)
    # 计算召回率
    recall = metrics.recall_score(y_true, y_pred)
    print("Recall:", recall)
    # 计算 F1 值
    f1 = metrics.f1_score(y_true, y_pred)
    print("F1 score:", f1)
    # 计算损失值
    loss = hinge_loss(y_true, y_pred)
    print("loss:", loss)
    return accuracy, precision, recall, f1, loss

训练模型

数据处理、得到训练集和测试集

# 5.1数据处理、得到训练集和测试集
X_train, y_train = Preprocessing(X_train)
X_test, y_test = Preprocessing(X_test)

决策树模型

# 6.1 决策树模型
# 6.1.1初始化决策树分类器
clf = DecisionTreeClassifier()
# 6.1.2训练模型
clf.fit(X_train, y_train)
# 6.1.3使用模型进行预测
predictions = clf.predict(X_test)
# 6.1.4测评结果
evaluate(y_test, predictions)

image-20240623215532408

随机森林分类器

# 6.2随机森林分类器
# 6.2.1创建随机森林分类器
clf = RandomForestClassifier(n_estimators=80, random_state=0)
# 6.2.2训练模型
clf.fit(X_train, y_train)
# 6.2.3预测结果
train_predictions = clf.predict(X_test)
#6.2.4测评模型
evaluate(y_test, train_predictions)

image-20240623215615685

SVM

#6.3SVM 模型
# 6.3.1创建 SVM 模型, 样本均衡化
model = svm.SVC(kernel='linear', C = 1, class_weight='balanced')
# 6.3.2训练模型
model.fit(X_train, y_train)
# 6.3.3预测目标变量
predictions = model.predict(X_test)

image-20240623215705355

https://mbd.pub/o/bread/ZpebmpZu

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

08 - Python面向对象编程进阶

面向对象进阶 在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解。 property装…

mst[讲课留档]

最小生成树(Minimum Spanning Tree) (1)概念 我们知道,树是有 n n n个结点, n − 1 n-1 n−1条边的无向无环的连通图。 一个连通图的生成树是一个极小的连通子图,它包含图中全部的 n n n个顶点,但只有构成一棵树的 n − 1 n-1 …

SAP实现特别总账的凭证预制

SAP实现特别总账的凭证预制 仔细理解只有”其他”的特殊总帐标识才可预制凭证这句话. F-29/f-48不可预制。F-29/f-48预制时出现错误消息号 FP 030,提示特殊总帐标志类型“汇票和”预付定金“的特别总帐标志的过帐代码不能预制,这是系统写死的&#xff…

骨传导耳机哪个牌子好?精选靠谱好用的TOP5骨传导耳机推荐!

在超过八成的音乐爱好者都面临听力健康问题的当下,骨传导耳机因其独特的听觉体验和对听力的保护,在音频设备市场中备受瞩目。但近期我发现不少用户在选购骨传导耳机时常常受到不专业产品的误导。身为有着5年经验的数码博主,在此提醒大家&…

Web基础与HTTP协议:

Web基础与HTTP协议 Web:就是我们所说的页面,打开网站所展示的页面。(全球广域网,万维网) 分布式图形信息系统。 http https (加密的)超文本传输协议 分布式:计算机系统或者应用程序…

数据分析与挖掘案例-电子商务网站用户行为分析及服务推荐

数据分析与挖掘案例-电子商务网站用户行为分析及服务推荐 文章目录 数据分析与挖掘案例-电子商务网站用户行为分析及服务推荐1. 背景与挖掘目标2. 分析方法与过程2.1 分析步骤与流程2.2 数据抽取2.3 数据探索分析1. 分析网页类型2. 分析网页点击次数 2.4 数据预处理1. 删除不符…

《昇思25天学习打卡营第23天 | 昇思MindSporeRNN实现情感分类》

23天 本节学习了RNN实现情感分类。 循环神经网络(RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的神经网…

C++视觉开发 一.OpenCV环境配置

一.OpenCV安装环境配置 1.OpenCV安装 (1)下载 官方下载链接:http://opencv.org/releases 这边选择需要的版本,我是在windows下的4.9.0。(科学上网下载很快,否则可能会有点慢) (2)安装 双击下…

【深度学习】图生图img3img论文原理,SD EDIT

https://arxiv.org/abs/2108.01073 摘要 引导图像合成技术使普通用户能够以最小的努力创建和编辑逼真的图像。关键挑战在于平衡对用户输入(例如,手绘的彩色笔画)的忠实度和合成图像的真实感。现有的基于GAN的方法试图通过使用条件GAN或GAN反…

【CT】LeetCode手撕—93. 复原 IP 地址

目录 题目1- 思路2- 实现⭐93. 复原 IP 地址——题解思路 3- ACM 实现 题目 原题连接:93. 复原 IP 地址 1- 思路 模式识别:给一个 String 字符串 ——> 复原 IP 地址 ——> 回溯三部曲 ,回溯的切割问题 ——> 实现一个左闭右闭区间…

小白入门云计算的最佳方式,是去考一张AWS证书

云计算的快速发展让它成为现代IT行业的核心技术之一。 作为一名初学者,如何高效地入门云计算? 我的建议是:考一张AWS证书。 AWS(Amazon Web Services)在云计算市场占据领先地位,它的认证体系既权威又全面&a…

实现Ubuntu计划任务的反弹shell

一、实验环境 Ubuntu:IP地址:192.168.223.156 Kali : IP地址:192.168.223.152 二、编写crontab计划任务 在Ubuntu的系统中使用crontab -e命令编写计划任务,如下所示: 作用:是将一个交互式的bash …

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…

vscode 安装Vue插件

打开扩展面板 --> 点击左侧的扩展图标,或者按下快捷键 Ctrl Shift X 搜索插件,在搜索框中输入 Vue vue-helper 用来快捷提示,如果使用elementui的话,插件不会自动提示,安装了它,组件、属性都会有提示了 Vetur V…

硬核丨2024文本生成类AI产品横向评测报告

文本生成/写作”作为使用最高频的AI场景,各类产品如雨后春笋般出现。我们针对办公/学习的写作场景进行了全面系统的评测。希望此次评测结论能够帮您在工作学习中使用AI应用提效。 本次评测对象包含文心、通义、kimi等模型厂商及笔灵、迅捷、秘塔等应用厂商共13款产…

制造业如何拥抱数字化?百数服务商的转型策略与实践

制造业作为实体经济的主体部分,也是核心部分,发挥着基础性、主导性和引领性作用。推动制造业数字化转型是实现经济高质量发展的必由之路。 在这场数字化浪潮中,低代码平台作为一种新兴的技术手段,逐渐受到了企业的青睐。其能够在…

国产压缩包工具——JlmPackCore SDK说明(一)

一、什么是JlmPackCore SDK (1)自主可控 JlmPackCore是一套基于我国自主知识产权的核心算法发明专利——杰林码(详系请参考《杰林码原理及应用》一书,也可以参考后续发表的相关论文),其中一篇会议论文&…

Eagle Trader的交易魅力!

这就是 Eagle Trader 的独特魅力所在 - 让交易者能够敏锐地捕捉到市场的脉搏,将图表上的每一个波动转化为盈利的机遇。在这里,您可以凭借自己的智慧和勇气,将复杂的市场数据转化为实际的收益。 Eagle Trader 提供了丰富的交易工具和资源&…

开源网安荣获第一新声“2024中国最佳信创安全厂商”,信创实力获认可

近日,由权威机构【第一新声】与【天眼查】联合发起的“2024中国最佳信创厂商系列榜单”评选中,开源网安以其技术创新能力和在信创领域持续投入,成功入选“中国最佳信创安全厂商”。 开源网安,作为软件安全领域创领者,自…

Fooocus模型配置中文教程

很多同学这里不知道该怎么选择。不知道每个模型效果,针对这个整理了一个表格。参考表格就可生成预期效果图。 下载地址: https://download.csdn.net/download/yuanshiren133/89503764