2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 问题二建模方案及代码实现详解

news2024/11/16 1:20:25

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现

在这里插入图片描述

更新进展

2022年12月21日 12:20 发布问题一、二思路及问题一的python代码实现

2022年12月22日 15:00 发布问题二python实现的代码

更新完毕

相关链接

(1)问题一建模方案及代码实现

(2)问题二建模方案及代码实现

1 题目

移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越完善。各个移动运营商,越来越重视客户的网络使用体验,从而进一步提升网络服务质量。 客户满意度是客户对运营商产品服务的满意程度,反映了客户期望与实际感知的产品服务之间的差异。特别是在信息透明、产品同质化的今天, 客户满意度的表现成为各大运营商市场运营状况的重要体现。数字经济时代,各大运营商需要运用数字经济的管理理念和技术手段,建立客户体验生态的全方位系统性测评体系,实现客户满意度评测的数字化转型,让客户体验赋能商业决策,让商业决策真正服务客户,共同推动移动网络高质量可持续发展。 根据客户投诉,对影响用户体验的问题逐点解决,是传统提升客户满意度的方法。但是随着用户数量的大幅增加,移动产品的种类越来越丰富, 客户的需求越来越高,传统的方法已经难以有效提升客户的满意度。本研究拟通过分析影响用户满意度的各种因素,为决策提供依据,从而实现更早、更全面提升用户满意度。 中国移动通信集团北京公司,让客户根据自身在网络覆盖与信号强度、语音通话清晰度和语音通话稳定性三个方面的体验进行打分,同时还让客户根据语音通话的整体体验进行语音通话整体满意度的打分,并统计整理影响客户语音业务体验的因素,希望以此来分析客户语音业务满意度的主要影响因素,并提升客户语音业务满意度。同时,对于上网数据业务,中国移动北京公司让客户根据自身在网络覆盖与信号强度、手机上网速度、手机上网稳定性三个方面的体验进行打分,同时还让客户根据手机上网的整体体验进行手机上网整体满意度的打分,并统计整理影响客户上网体验的因素,希望以此可以分析影响客户上网业务体验的主要因素,并提升客户的上网体验。

初赛问题 基于以上背景,请你们的团队根据附件给出的数据,通过数据分析与建模的方法帮助中国移动北京公司解决以下问题:

问题 1:根据附件 1 和附件 2,分别研究影响客户语音业务和上网业务满意度的主要因素,并给出各因素对客户打分影响程度的量化分析和结果。附件 1、2 中各字段的解释说明见附件 5。

问题 2:结合问题 1 的分析,对于客户语音业务和上网业务分别建立客户打分基于相关影响因素的数学模型,并据此对附件 3、4 中的客户打分

进行预测研究,将预测结果分别填写在result.xlsx 的Sheet1“语音”和Sheet2“上网”两个工作表中,并上传到竞赛平台,说明你们预测的合理性。

附件

附件 1 语音业务用户满意度数据 附件 2 上网业务用户满意度数据 附件 3 语音业务用户满意度预测数据 附件 4 上网业务用户满意度预测数据附件 5 附件 1、2、3、4 的字段说明result.xlsx

2 思路分析

2.1 问题一

这是相关性分析问题,分别对附件1和附件2计算所有因素与语音通话整体满意度和手机上网整体满意度的相关性。首先对数据集进行数据预处理和数据可视化分析,具体的分析过程看以下 部分python代码实现。查看异常值,去除异常值,查看数据分布,对分布进行抓换等处理。预处理完毕后,采用的相关性分析方法有

  • Pearson相关

Pearson相关用于评估两个连续变量之间的线性关联强度。这种统计方法本身不区分自变量和因变量,但如果您根据研究背景已经对变量进行了区分,我们仍可以采用该方法判断相关性。

  • Spearman相关

Spearman相关又称Spearman秩相关,用于检验至少有一个有序分类变量的关联强度和方向。

  • Kendall’s tau-b相关系数

Kendall’s tau-b 相关系数是用于检验至少有一个有序分类变量关联强度和方向的非参数分析方法。该检验与Spearman相关的应用范围基本一致,但更适用于存在多种关联的数据(如列联表)。

  • 卡方检验

卡方检验常用于分析无序分类变量之间的相关性,也可以用于分析二分类变量之间的关系。但是该检验只能分析相关的统计学意义,不能反映关联强度。因此,我们常联合Cramer’s V检验提示关联强度。

  • Fisher精确检验

Fisher精确检验可以用于检验任何RC数据之间的相关关系,但最常用于分析22数据,即两个二分类变量之间的相关性。与卡方检验只能拟合近似分布不同的是,Fisher精确检验可以分析精确分布,更适合分析小样本数据。但是该检验与卡方检验一样,只能分析相关的统计学意义,不能反映关联强度。

2.2 问题二

这是一个多分类问题,1-10的评分,10分类问题。简单的机器学习问题。首先数据预处理,包括缺失值处理、异常值处理、类别特征编码,label 采用onehot编码或者数值编码。接下来是特征工程,特征工程的方法有,特征筛选、特征降维、特征交叉、特征标准化或归一化等等。接下来选择常用的机器学习分类模型

  • 1.KNN
  • 2.感知机
  • 3.朴素贝叶斯法
  • 4.决策树
  • 5.逻辑斯谛回归模型*
  • 6.SVM
  • 7.AdaBoost
  • 8.随机森林
  • 9.XGB
  • 10.LGB

XGB、LGB一般效果更好。此比赛时间充足,可以多对比几种模型,看实验效果。此外还可以采用神经网络分类模型,耗时较长,效果更佳。

3 问题二python代码实现

3.1 读取数据

import datetime
import numpy as np
import pandas as pd
import numpy as np
from tqdm import tqdm
tqdm.pandas()

file1 = pd.read_excel('./data/附件1语音业务用户满意度数据.xlsx')
clear_file1=file1[(file1['语音通话整体满意度']<=10) & (file1['语音通话整体满意度']>=1)]
label = clear_file1['语音通话整体满意度']

3.2 数据预处理

用户描述,用户描述.1,重定向次数,重定向驻留时长 ,是否关怀用户,是否去过营业厅列,这些列缺失值太多,直接删除。

clear_file1_1 = clear_file1.drop(columns=['语音通话整体满意度','用户描述','用户描述.1','重定向次数','重定向驻留时长','是否关怀用户','是否去过营业厅'])
clear_file1_1 

在这里插入图片描述

异常值填充,类别特征,用众数填充,数值特征,用平均值填充

是否4G网络客户(本地剔除物联网),终端品牌,终端品牌类型,外省流量占比,是否5G网络客户,是否实名登记用户,客户星级标识,当月欠费金额,前第3个月欠费金额

for s in ['是否4G网络客户(本地剔除物联网)','终端品牌','终端品牌类型','外省流量占比','是否5G网络客户','是否实名登记用户','客户星级标识','当月欠费金额','前第3个月欠费金额']:
    if clear_file1_1[s].dtype==object:
        fill_none = clear_file1_1[s].value_counts().index[0]
    else:
        fill_none = np.mean(clear_file1_1[s])
    clear_file1_1[s] = clear_file1_1[s].fillna(fill_none)
clear_file1_1.isnull().any()

在这里插入图片描述

3.3 特征工程

3.3.1 特征交叉

统计类别特征和数值特征


cross_cat = []
cross_num = []
for s in clear_file1_1.columns:
    if clear_file1_1[s].dtype==object or clear_file1_1[s].dtype==int:
        cross_cat.append(s)
    else:
        cross_num.append(s)
 cross_cat

在这里插入图片描述

将类别特征编码

clear_file1_2 = clear_file1_1.copy()
for s in clear_file1_2.columns:
    if clear_file1_2[s].dtype==object:
        class_mapping = {label:idx+1 for idx,label in enumerate(set(clear_file1_2[s]))}
        clear_file1_2[s] = clear_file1_2[s].map(class_mapping)

定义交叉特征统计

def cross_cat_num(df, num_col, cat_col):
    for f1 in tqdm(cat_col):
        g = df.groupby(f1, as_index=False)
        for f2 in tqdm(num_col):
            。。。略
            df = df.merge(feat, on=f1, how='left')
    return(df)
data = cross_cat_num(clear_file1_2, cross_num, cross_cat)  # 一阶交叉
data.shape

3.3.2 特征降维

步骤一:根据与满意度打分的相关性,筛选性相关性高的特征

tmp_train = data.copy()
tmp_train['语音通话整体满意度'] = label
col_list = tmp_train.columns.tolist()
mcorr = tmp_train[col_list].corr().abs()
tt = mcorr['语音通话整体满意度'] > 0.2
new_col = list(tt[tt == True].index)
new_col.remove('语音通话整体满意度')


clear_dataset_df1 = data[new_col].copy()
clear_dataset_df1['语音通话整体满意度'] = label
clear_dataset_df1.to_csv('data/clear_file1.csv',index=False)
len(new_col)

将清洗后的数据集存储起来

clear_dataset_df1 = data[new_col].copy()
clear_dataset_df1['label'] = label
clear_dataset_df1.to_csv('data/clear_file1.csv',index=False)

3.4 模型训练

划分训练集和测试集


from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

df = pd.read_csv('data/clear_file1.csv')
Y = df['label']
X = df.drop(columns=['label'])


X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=42)
scaler = StandardScaler()
train_X = scaler.fit_transform(X_train)
test_X = scaler.transform(X_test)

XGB分类模型

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.metrics import accuracy_score
import xgboost as xgb
from xgboost import plot_importance
from sklearn import metrics
import warnings
warnings.filterwarnings("ignore")

model = xgb.XGBClassifier(learning_rate=0.01,
                      n_estimators=10,           # 树的个数-10棵树建立xgboost
                      max_depth=4,               # 树的深度
                      min_child_weight = 1,      # 叶子节点最小权重
                      gamma=0.,                  # 惩罚项中叶子结点个数前的参数
                      subsample=1,               # 所有样本建立决策树
                      colsample_btree=1,         # 所有特征建立决策树
                      scale_pos_weight=1,        # 解决样本个数不平衡的问题
                      random_state=27,           # 随机数
                      slient = 0
                      )
model.fit(train_X,y_train)
y_pred = model.predict(test_X)
print("Accuracy : %.4g"%accuracy_score(y_test, y_pred)) 

输出:Accuracy : 0.7724

预测附件3,并存储为csv文件

test_df = pd.read_csv('data/clear_file3.csv')
y_pred = model.predict(test_df)
pd.DataFrame(y_pred).to_csv('result_1.csv',index=False)

同理,对附件2和附件4进行处理,附件4预测结果存储为result_2.csv,最后合并两个csv为result.xlsx。

对附件2 的代码在下载内容中,不再在文章中展示。

在这里插入图片描述

4 两问代码及图片下载

# https://www.betterbench.top/#/17/detail

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

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

相关文章

【观察】魔方安全:攻击面管理SaaS化创新,让企业在攻防实战中化被动为主动...

近年来&#xff0c;随着网络安全形势的愈加严峻&#xff0c;行业对实战型攻防技术的认知也有了快速的提升。在此背景下&#xff0c;偏向于主动防御且更注重实战对抗的攻击面管理&#xff08;Attack Surface Management&#xff0c;简称“ASM”&#xff09;理念以及相关技术&…

使用 ABAP 代码给 OData 元数据增添注解的一些例子

最近有读者向我咨询&#xff0c;关于当系统在 SAP NetWeaver 740 之上运行时&#xff0c;如何向 OData 服务添加注解(annotation)。 虽然使用 SAP NetWeaver 750 及更高版本&#xff0c;可以在 CDS DDL 源代码中添加注解&#xff0c;然而 SAP NetWeaver 740 没有此类支持。 尽…

基于神经网络的宏观经济数据分析研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

redis介绍及使用部署

一、redis介绍 1、redis特点&#xff1a; 开源的&#xff08;BSD协议&#xff09;&#xff0c;使用ANSI C 编写&#xff0c;基于内存的且支持持久化&#xff0c;高性能的Key-Value的NoSQL数据库单线程运行&#xff0c;省去了线程上下文切换带来的性能开销&#xff0c;效率更高…

Cadence Allegro单个元器件的PCB封装更新操作

Cadence Allegro单个元器件的PCB封装更新操作 在PCB设计中如何对同一种类型的元器件进行封装的更新&#xff0c;有时候会出现这样的情况&#xff0c;出现错误的操作&#xff0c;误删除的其中一个器件的丝印或者是什么的&#xff0c;能否只更新这一个器件呢&#xff0c;其它的不…

Python_3、数据容器和函数进阶

目录 数据容器 列表&#xff08;list&#xff09; 元组&#xff08;tuple&#xff09; 字符串&#xff08;str&#xff09; 集合&#xff08;set&#xff09; 字典&#xff08;dict&#xff09; 序列的切片 函数 数据容器 数据容器一种可以容纳多份数据的数据类型&#…

校园文件发布系统|基于Springboot实现校园文章发布系统

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java、前端、Pythone开发多年&#xff0c;做过高程&#xff0c;项目经理&#xff0c;架构师 主要内容&#xff1a;Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 文末获得源码 …

05---前后端实现分页查询

现在需要新加一个需求&#xff1a;实现分页查询&#xff0c;模糊查询&#xff0c;&#xff08;例如通过用户名查询出数据&#xff09; 从上往下修改 1、controller层 UserController.java GetMapping("/page")public Map<String,Object> findPage(RequestPar…

【HAL库】STM32CubeMX开发----STM32F407----读写W25N04KV外部Flash

STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 一、W25N04KV 简介 W25N04KV 是 NAND Flash系列的&#xff0c;具有高存储密度&#xff0c;并且写入和擦除的速度也很快。W25N04KV 内存为&#xff1a;4G(bit)/512M(byte) 特点 芯片封装和引脚…

2023年智能无人系统与人工智能国际会议(SIUSAI 2023)

2023年智能无人系统与人工智能国际会议&#xff08;SIUSAI 2023&#xff09; 重要信息 会议网址&#xff1a;www.siusai.org 会议时间&#xff1a;2023年4月21-23日 召开地点&#xff1a;深圳 截稿时间&#xff1a;2023年3月10日 录用通知&#xff1a;投稿后2周内 收录检…

浏览器底部导航栏遮盖问题;app内嵌入h5底部导航下展示问题。

欧吼&#xff0c;算是遇到两次了这种问题。每次解决完都觉得很无语&#x1f92e; 先看问题如图&#xff08;怕公司说我泄露他们啥信息&#xff0c;于是打了非常离谱且难看的马赛克&#x1f60a;&#xff09;&#xff1a; 本来要在底部导航栏上方展示底部信息。 电脑上看倒是好…

向云而行 华为云桌面成数字办公首选

从事视频制作、动画设计等工作的专业人员一定深有体会&#xff0c;采用传统物理工作站制作一段30分钟的视频&#xff0c;仅渲染至少就要几个小时&#xff0c;漫长的等待也成了工作的一部分。随着数字化时代的来临&#xff0c;将包括生产制作、分发、变现等在内的媒体处理全流程…

EtherCAT I/O 马达控制机器人从站控制器设计

AX58100是一款高性价比EtherCAT从站控制器&#xff0c;其通过了Beckhoff Automation并且内建两个支持100Mbps全双工和HP Auto-MDIX的快速以太网物理接口。AX58100能支持所有的EtherCAT系统&#xff0c;包括标准EtherCAT设备&#xff08;例如CoE, FoE,VoE,等等&#xff09;。AX5…

Spring Security OAuth2简介

本文内容来自王松老师的《深入浅出Spring Security》&#xff0c;自己在学习的时候为了加深理解顺手抄录的&#xff0c;有时候还会写一些自己的想法。 OAuth2简介 OAuth是一个开放标准&#xff0c;该标准允许用户让第三方应用访问该用户在某一个网站上存储的私密资源&#xff0…

Java+MySQL基于ssm的图书馆图书借阅管理系统

本文介绍了图书馆管理设计方案,该网站采用目前JSP中最流行的SSM框架和Eclipse编辑器、MySQL数据库设计并实现的。网站功能包含系统用户管理、图书管理、用户管理、借书管理、续借管理、违章缴款管理等模块。概述了整个系统的设计框架,介绍了系统软件开发编译环境的搭建,阐述了各…

leetcodeSQL:1445. 苹果和桔子【case when + if】

目录题目截图题目分析case when写法if写法总结题目截图 题目分析 groupby的肯定是日期怎么根据fruit类型分类呢苹果就是&#xff0c;orange就是-可以用case when或者if然后来一个sum就可以了注意&#xff0c;这里直接在select后面跟着查就可以了 case when写法 # Write your…

艾美捷硝酸盐/亚硝酸盐荧光法检测试剂盒基本参数说明

一氧化氮&#xff08;NO&#xff09;由神经元、内皮细胞、血小板和中性粒细胞响应于稳态刺激产生微量。这种NO被迅速清除&#xff08;t4 s&#xff09;&#xff0c;并以旁分泌的方式传递细胞信号。NO与鸟苷酸环化酶的HEME辅基相互作用&#xff0c;激活酶并导致cGMP水平升高。其…

【十分钟学懂Linux操作系统】

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

成本降幅达20%,效率增幅达3成,解读宝洁的供应链转型策略

从家里一部电话用N年&#xff0c;到手上的智能手机年年换&#xff1b;从单一的线下商场、超市&#xff0c;到随时随地的线上线下购物&#xff1b;从一个包裹等一个星期&#xff0c;到如今恨不得即买即达……短短的十年间&#xff0c;人们的消费习惯发生了翻天覆地的变化。数字化…

15基于峰谷分时电价引导下的电动汽车充电负荷优化(matlab程序)

参考文献 基于峰谷分时电价引导下的电动汽车充电负荷优化_欧名勇2020 主要内容 利用蒙特卡洛方法对&#xff12;种不同充电方式进行模拟并对其进行分析&#xff1b;分析用户响应度对电动汽车有序充电的影响&#xff0c;建立峰谷分时电价对电动汽车负荷影响的模型&#xff0c…