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

news2025/2/26 3:47:06

【BetterBench原创】2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现(更新中)
在这里插入图片描述

更新进展

2022年12月20日 22:00 发布初步思路

(待更新)发布初步思路实现代码

(待更新)发布进一步的详细建模方案

(待更新)发布进一步建模方案实现的代码

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 seaborn as sns
import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 
import scipy.stats as st
import warnings
%matplotlib  inline
plt.style.use('seaborn-darkgrid')
sns.set(style = 'darkgrid')
import  warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] = ['STSong']

3.2 读取并查看数据

file1 = pd.read_excel('./data/附件1语音业务用户满意度数据.xlsx')
file2 = pd.read_excel('./data/附件2上网业务用户满意度数据.xlsx')

在这里插入图片描述

file1.info()

在这里插入图片描述

在这里插入图片描述

3.3 查看缺失值

msn.matrix(file1)
plt.savefig('img/附件1缺失值查看.png',dpi=300)

在这里插入图片描述

isnull_df = pd.DataFrame(file1.isnull().any())
print(isnull_df[file1.isnull().any()==True])

在这里插入图片描述

附件1中,用户描述,用户描述.1,重定向次数,重定向驻留时长 ,是否关怀用户,是否去过营业厅,缺失值较多,可以直接不要这个字段的列
是否4G网络客户(本地剔除物联网),终端品牌,终端品牌类型,外省流量占比,是否5G网络客户,是否实名登记用户,客户星级标识,当月欠费金额,前第3个月欠费金额,缺失值较少,可以选择填充或者删除该行缺失值

msn.matrix(file2)
plt.savefig('img/附件2缺失值查看.png',dpi=300)

在这里插入图片描述

isnull_d2 = pd.DataFrame(file2.isnull().any())
print(isnull_d2[file2.isnull().any()==True])

在这里插入图片描述

3.4 异常值查看


# 对浮点型数据,查看数据分布
fig = plt.figure(figsize=(80,60),dpi=75)
i=0
for s in file1.columns:
    if file1[s].dtype==float:
        ...# plt.savefig('img/附件1箱线图查看.png',dpi=300)
plt.show()

在这里插入图片描述

# 对浮点型数据,查看数据分布
fig = plt.figure(figsize=(80,60),dpi=75)
i=0
for s in file2.columns:
    if file2[s].dtype==float:
        ...略
plt.savefig('img/附件2箱线图查看.png',dpi=300)
plt.show()

在这里插入图片描述

3.5 查看分布

# 所有浮点型字段的分布
dist_cols = 4
dist_rows = len(file1.columns)
plt.figure(figsize=(4*dist_cols,4*dist_rows))
i = 1
for col in file1.columns:
    if file1[col].dtype==float:
        ...# plt.savefig('img/附件1所有浮点型字段分布.png',dpi=300)
plt.show()

在这里插入图片描述

# 所有int型字段的分布
dist_cols = 4
dist_rows = len(file1.columns)
plt.figure(figsize=(4*dist_cols,4*dist_rows))
i = 1
for col in file1.columns:
    if file1[col].dtype==int:
        ...# plt.savefig('img/附件1所有整型字段分布.png',dpi=300)
plt.show()

在这里插入图片描述
在这里插入图片描述

# 附件2所有浮点型字段的分布
dist_cols = 4
dist_rows = len(file2.columns)
plt.figure(figsize=(4*dist_cols,4*dist_rows))
i = 1
for col in file2.columns:
    if file2[col].dtype==float:
        ...# plt.savefig('img/附件2所有浮点型字段分布.png',dpi=300)
plt.show()

在这里插入图片描述

# 附件2所有浮点型字段的分布
dist_cols = 4
dist_rows = len(file2.columns)
plt.figure(figsize=(4*dist_cols,4*dist_rows))
i = 1
for col in file2.columns:
    if file2[col].dtype==int:
        ...略
        i+=1

# plt.savefig('img/附件2所有整型字段分布.png',dpi=300)
plt.show()

在这里插入图片描述

结论:如果出现某个特征的分布不符合正态分布,后续需要通过对数据进行转换,针对右偏和左偏的转换方法不一样

  • 很多右偏数据可以正态化
  • 对数变换后呈正态分布,方差稳定
  • 不太严重的右偏,使用平方根变换
  • 严重右偏,倒数变换

查看label 分布

# 取1-10之间
y_p = file1[(file1['语音通话整体满意度']<=10) & (file1['语音通话整体满意度']>=1)]['语音通话整体满意度']
## 3) 查看预测值的具体频数
...略

plt.savefig('img/语音通话整体满意度分布.png',dpi=300)
plt.show()

在这里插入图片描述

# 取1-10之间
y_p = file2[(file2['手机上网整体满意度']<=10) & (file2['手机上网整体满意度']>=1)]['手机上网整体满意度']
## 3) 查看预测值的具体频数
...略
plt.savefig('img/手机上网整体满意度分布.png',dpi=300)
plt.show()

在这里插入图片描述

3.7 对不符合正态分布的特征转换

以符合左偏分布的重定向次数,对数转换举例

clear_file1 = file1[(file1['语音通话整体满意度']<=10) & (file1['语音通话整体满意度']>=1)]
plt.figure(figsize=(20, 6))
y = clear_file1['重定向次数']
plt.subplot(121)
plt.title('johnsonsu分布拟合',fontsize=20)
plt.xlabel('重定向次数',fontsize=15)
sns.distplot(y, kde=False, fit=st.johnsonsu, color='Red')

plt.subplot(121)
y2 = clear_file1['重定向次数']
plt.subplot(122)
st.probplot(y2, dist="norm", plot=plt)
plt.title('重定向次数 Q-Q图',fontsize=20)
plt.xlabel('X分位数',fontsize=15)
plt.ylabel('Y分位数',fontsize=15)
plt.savefig('img/重定向次数未转换前的分布.png',dpi=300)
plt.show()

在这里插入图片描述

plt.figure(figsize=(20, 6))
y = np.log1p(clear_file1['重定向次数'])
plt.subplot(121)
plt.title('johnsonsu分布拟合',fontsize=20)
plt.xlabel('重定向次数',fontsize=15)
sns.distplot(y, kde=False, fit=st.johnsonsu, color='Red')

plt.subplot(121)
y2 = np.log1p(clear_file1['重定向次数'])
plt.subplot(122)
st.probplot(y2, dist="norm", plot=plt)
plt.title('重定向次数 Q-Q图',fontsize=20)
plt.xlabel('X分位数',fontsize=15)
plt.ylabel('Y分位数',fontsize=15)
plt.savefig('img/重定向次数转换后的分布.png',dpi=300)
plt.show()

结论:重定向次数是属于数值特征,存在异常值,数据分布不符合正态分布,需要对数转换后,便可以近似为正态分布。

3.8 相关性分析

plt.rcParams['font.sans-serif'] = ['STSong']
corr = clear_file1.corr().abs()
k = 10
col =  corr.nlargest(k,'语音通话整体满意度')['语音通话整体满意度'].index
plt.subplots(figsize = (10,10))
...略
plt.savefig('img/附件1-Top10相关性热图.png',dpi=300)
plt.show()

在这里插入图片描述

plt.rcParams['font.sans-serif'] = ['STSong']
corr = clear_file2.corr().abs()
k = 10
col =  corr.nlargest(k,'手机上网整体满意度')['手机上网整体满意度'].index
plt.subplots(figsize = (10,10))
...略
plt.savefig('img/附件2-Top10相关性热图.png',dpi=300)
plt.show()

在这里插入图片描述

结论:影响语音通话整体满意度的关键因素有,语音通话清晰度, 网络覆盖与信号强度, 语音通话稳定性, 是否遇到过网络问题, 居民小区, 手机没有信号, 有信号无法拨通, 通话过程中突然中断, 办公室。

影响手机上网整体满意度的关键因素有手机上网速度, 网络覆盖与信号强度, 手机上网稳定性, 网络信号差/没有信号, 手机上网速度慢, 上网过程中网络时断时续或时快时, 打开网页或APP图片慢, 居民小区, 显示有信号上不了网

4 代码及图片下载

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

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

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

相关文章

即时通讯音视频开发视频编解码预测技术

目的是去除空间冗余和时间冗余。因为视频存在大量的空间冗余和时间冗余&#xff0c;包括空间冗余、时间冗余&#xff0c;预测后得到去除大部分空间或时间冗余的残差。 图像空间相邻像素具有很强的相关性&#xff0c;帧内预测技术去除空间冗余。 视频图像在时间上有较强的相关性…

组团出海抢抓跨境电商外贸,有利于2023“开门稳”

组团出海抢抓跨境电商外贸&#xff0c;有利于2023“开门稳” 我国是货物贸易第一大国&#xff0c;强大的生产能力、出色的产业配套、完善的物流供应、充足高效的劳动力&#xff0c;都为我国成为贸易强国提供了有利条件。 近几年&#xff0c;中国跨境电商产业进入快速发展阶段&a…

区块链北大肖老师学习笔记4

第五节 比特币系统的实现 区块链是去中心化的账本&#xff0c;比特币使用的是基于交易的这种账本模式(transaction[交易]-based ledger[账本])。系统当中并不会显示每个账户有多少钱。 比特币系统的全节点要维护一个叫UTXO(unspent transaction output)(还没有被花出去的交易的…

成为2.2亿儿童主动要吃的天然营养,AMSTRONG维小壮做对了什么?

文|螳螂观察&#xff08;TanglangFin&#xff09; 随着疫情防控政策的调整&#xff0c;在人们开始注重提升身体免疫力以抗击病毒的措施中&#xff0c;在国外流行多年的接骨木莓&#xff0c;开始受到国内消费者的青睐。 接骨木莓的功效早已被美国FDA和加拿大FDA双重认证&#…

VUE3-Pinia的使用《三》

pinia的官网是简介 | Pinia。 它的功能和vuex差不多&#xff0c;但是pinia更加优于vuex。主要用于状态管理&#xff0c;管理全局的变量&#xff0c;也可以存储页面A的值&#xff0c;然后在页面B中直接访问&#xff0c;不分父子组件之间的关系&#xff0c;可以任意传值&#xf…

设计模式之状态模式

State design pattern 状态模式的概念、状态模式的结构、状态模式的优缺点、状态模式的使用场景、状态模式的实现示例、状态模式的源码分析 1、状态模式的概念 对有状态的对象&#xff0c;把复杂的判断逻辑提取到不同的状态对象中&#xff0c;允许状态对象在其内部状态发生改变…

使用预授权签名加速 BSV 有状态合约更新

状态更新竞争 BSV 智能合约将状态存储在交易链的输出中。 当交易花费包含旧状态的输出并创建包含新状态的输出时&#xff0c;就会发生状态转换。 在任何给定时间&#xff0c;交易链末端的单个输出/UTXO 都具有最新状态。 当多个事务竞争同时更新共享状态时&#xff0c;就会出…

Anchor2

Anchor也是第二季了~~ 来一起来学习Faster R-CNN中的RPN及Anchor 说到RPN和Anchor&#xff0c;应该立马就能想到Faster R-CNN网络框架 首先我先将几类经典的目标检测网络做一个对比&#xff0c;然后开始说说今天要讲的知识。 最开始出现的是R-CNN&#xff0c;如下图&#xff…

什么是编程?程序员主要做啥工作?如何学习呢?

对编程的理解 编程换成通俗的语言可以理解为使用一些英文单词组成的指令发送给计算机&#xff0c;做指定的事情。 编程的种类 如今在互联网市场中&#xff0c;编程的工作一共分为了3大类&#xff1a; 前端编程 后台编程 运维编程 前端编程&#xff1a; 什么是前端&#…

门诊地图导航怎么做,零成本的医院室内导航解决方案

现在很多医院都比较大&#xff0c;科室众多&#xff0c;往往让人不知道要找的科室在哪里&#xff0c;不了解看病的流程&#xff0c;只能去咨询台询问&#xff0c;费时又费力……电子地图作为大家最喜闻乐见的高效应用形式&#xff0c;可高效为病患提供导医服务&#xff0c;并为…

XML介绍和基本用法(一文彻底搞懂XML!)

文章目录1.XML1.1概述1.2标签的规则1.3语法规则1.4xml解析1.5DTD约束1.6schema约束1.XML 1.1概述 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年&#xff0c;又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者&#xff1a; Tim Berners-Lee (蒂姆伯纳斯李…

智能图像水位识别监测 基于OpenCv

智能图像水位识别监测利用OpenCVyolo网络学习模型对河道江河湖泊等区域进行实时监测&#xff0c;当监测到水位刻度尺超标时立即抓拍。OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉处理开源软件库&#xff0c;支持与计算机视觉和机器…

【Linux】编辑器的天花板vim

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;前言&…

14.SpringAop

1. Aop简介 AOP(Aspect Oriented Programming)面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构 OOP(Object Oriented Programming)面向对象编程 作用&#xff1a;在不惊动原始设计的基础上为其进行功能增强。简单的说就是在不改变方法源代码的基…

C语言必背18个经典程序

1、/*输出9*9口诀。共9行9列&#xff0c;i控制行&#xff0c;j控制列。*/ #include "stdio.h" main() {int i,j,result;for(i1;i<10;i){for(j1;j<10;j){resulti*j;printf("%d*%d%-3d",i,j,result);/*-3d表示左对齐&#xff0c;占3位*/}printf("…

数字化转型必读书籍:27个案例让小白也能搞懂以中台战略主导的数字化转型产品建设

各位茶馆的读者朋友们大家好&#xff0c;一转眼《中台产品经理宝典》一书已经上市了2年半&#xff0c;在这期间创造了近2万册的销售记录&#xff0c;并多次冲上各大网站的销售记录。 就在今年双十一还创造了当当网细分类目销量第71名的成绩&#xff0c;这对一本已经出版了2年半…

LeetCode题解 15 (5,96) 最长回文子串,不同的二叉搜索树

文章目录最长回文子串代码解答&#xff1a;不同的二叉搜索树代码解答&#xff1a;最长回文子串 首先我们应该先了解什么是回文子串: 单个字符 例如 a 这也是回文字符串 2个字符 aa 或者 bb 这也是回文字符串 3个字符 aba 或者 bab 多个字符 abba ababa 这些也被叫做回文子串 从…

【源码透视】SpringBoot的SPI机制

一、从java类加载机制说起 java中的类加载器负载加载来自文件系统、网络或者其他来源的类文件。jvm的类加载器默认使用的是双亲委派模式。三种默认的类加载器Bootstrap ClassLoader、Extension ClassLoader和System ClassLoader&#xff08;Application ClassLoader&#xff09…

开源项目 Spartacus 的 git 提交流程规范

Spartacus 开源项目由一组库组成。为了更容易知道哪个版本的库与另一个版本兼容&#xff0c;库版本在所有包中同步。 这意味着当我们要发布 1.5.0 版本时&#xff0c;我们会发布该版本下的所有库&#xff0c;即使某些库与上一个版本相比没有任何变化。 这样一来&#xff0c;我们…

NKOJ P5676 SuperGCD【超级GCD】

为什么NKOJ的题交JAVA会被keyword卡System&#xff0c;还不能用python水高精度…… 题目分析 回归正题&#xff0c;由于本题数据范围0≤A,B≤10100000 \le A,B \le 10^{10000}0≤A,B≤1010000两个100001000010000位的整数算GCD,所以用高精度欧几里得GCD的话会使得算法时间复杂…