【2023钉钉杯复赛】A题 智能手机用户监测数据分析 Python代码分析

【2023钉钉杯复赛】A题 智能手机用户监测数据分析 Python代码分析

在这里插入图片描述

1 题目

一、问题背景

近年来,随着智能手机的产生,发展到爆炸式的普及增长,不仅推动了中 国智能手机市场的发展和扩大,还快速的促进手机软件的开发。近年中国智能手 机市场品牌竞争进一步加剧,中国超越美国成为全球第一大智能手机市场。手机 软件日新月异,让人们更舒适的使用手机,为人们的生活带来很多乐趣,也产生 了新的群体“低头一族”。手机软件进入人们的生活,游戏、购物、社交、资讯、理财等等APP吸引着、方便着现代社会的人们,让手机成为人们出门的必备物 品。

该数据来自某公司某年连续30天的4万多智能手机用户的监测数据,已经做 了脱敏和数据变换处理。每天的数据为1个txt文件,共10列,记录了每个用户(以uid为唯一标识)每天使用各款APP(以appid为唯一标识)的起始时间,使 用时长,上下流量等。具体说明见表1。此外,有一个辅助表格app_class.csv,共两列。第一列是appid,给出4000多个常用APP所属类别(app_class),比如:社交类、影视类、教育类等,用英文字母a-t表示,共20个常用得所属类别,其余APP不常用,所属类别未知。

表 1

变量编号变量名释义
1uid用户的id
2appidAPP的id(与app_class文件中的第一列对应)
3app_typeAPP类型:系统自带、用户安装
4start_day使用起始天,取值1-30(注:第一天数据的头两行的使用起始天取 值为0,说明是在这一天的前一天开始使用的)
5start_time使用起始时间
6end_day使用结束天
7end_time使用结束时间
8duration使用时长(秒)
9up_flow上行流量
10down_flow下行流量

二、解决问题

  1. APP使用情况预测分析:要研究的问题是通过用户的APP使用记录预测用户未来是否使用APP所属类型(app_class),以及对应的具体类型(appid)( 多重分类问题)

(一)对用户使用APP的情况进行预测,根据用户第1~15天的常用所属20 类APP的使用情况,建立一个模型来预测用户在16~30天会使用哪些类的APP, 给出预测结果和真实结果相比的准确率。(注:测试集不能参与到训练和验证中,否则作违规处理)

(二)对用户使用APP的使用时长进行预测,根据用户第115天的常用所属20类APP的使用情况,建立一个模型来预测用户在1630天对于每一类APP的有效日均使用时长。评价指标选用NMSE. (注:测试集不能参与到训练和验证中,否则作违规处理)

  1. 由于APP数量众多,总量多达几万,绝大多数市场占用率极低,因此仅使用app_class.csv文件中给出的4000多个常用的并且用户数超过10个APP进行推荐。通过每个用户30天的手机app使用情况,建立一个推荐系统模型,对每一个用户推荐app,并且给出推荐系统模型的详细描述,推荐系统使用的模型参数量,以及对推荐系统的预测结果进行评价。

2 思路分析

2.1 问题一

在初赛的基础上,重新训练模型,重新预测一遍就行。

2.2 问题二

这是一个推荐系统开发的问题。

  1. 数据预处理:对数据进行清洗和预处理,包括去除重复值、缺失值填充、异常值处理、特征工程等。
  2. 特征提取:从数据中提取有用的特征,包括用户的历史使用记录、app所属类别、app类型等。
  3. 模型选择:基于内容的推荐、协同过滤推荐、深度学习推荐等推荐模型。
  4. 模型训练:将预处理后的数据输入到所选的机器学习模型中进行训练,得到模型参数。
  5. 模型评估:对训练好的模型进行评估,如准确率、召回率、F1值等。
  6. 模型优化:根据评估结果进行模型参数的调整和优化,模型改进、模型融合等方法。

我们可以考虑使用协同过滤推荐模型,模型参数包括用户偏好矩阵和物品偏好矩阵,参数量取决于用户和物品的数量。对于推荐系统的预测结果进行评价,可以使用交叉验证或者留出法等方法进行评估。

3 Python实现

3.1 数据预处理

import pandas as pd
import os
from tqdm import tqdm
import warnings
warnings.filterwarnings("ignore")
tqdm.pandas()
# 合并数据1-30天的数据
folder_path = '初赛数据集/'
dfs = []
for filename in os.listdir(folder_path):if filename.endswith('.txt'):csv_path = os.path.join(folder_path, filename)tempdf = pd.read_csv(csv_path)dfs.append(tempdf)folder_path = '复赛数据集/'
for filename in os.listdir(folder_path):if filename.endswith('.txt'):csv_path = os.path.join(folder_path, filename)tempdf = pd.read_csv(csv_path)dfs.append(tempdf)
df = pd.concat(dfs,axis=0)
df.shape
import pandas as pd
import matplotlib.pyplot as plt# 数据清洗
df.loc[df['start_day'] == 0, 'start_day'] = 1  # 将使用起始天为0的行,修改为1
df['start_time'] = pd.to_datetime(df['start_time'])  # 转换为datetime类型
df['end_time'] = pd.to_datetime(df['end_time'])  # 转换为datetime类型
df['usage_time'] = (df['end_time'] - df['start_time']) / pd.Timedelta(minutes=1)  # 使用时长(分钟)
df['up_flow_mb'] = df['up_flow'] / 1024 / 1024  # 上行流量(MB)
df['down_flow_mb'] = df['down_flow'] / 1024 / 1024  # 下行流量(MB)
df = df[df['duration'] != 0]  # 剔除使用时长为0的行
df = df[df['up_flow'] != 0]  # 剔除上行流量为0的行
df = df[df['down_flow'] != 0]  # 剔除下行流量为0的行
df
# 剔除使用时长和流量明显异常的行
# 剔除使用时长小于10秒的行
df = df[df['usage_time'] >= 10]
fig, axs = plt.subplots(1, 3, figsize=(10, 5))
axs[0].hist(df['usage_time'])
axs[0].set_title('Usage Time')
axs[0].set_xlabel('Time (minutes)')
axs[1].hist(df['up_flow_mb'])
axs[1].set_title('Up Flow')
axs[1].set_xlabel('Up Flow (MB)')
axs[2].hist(df['down_flow_mb'])
axs[2].set_title('Down Flow')
axs[2].set_xlabel('Down Flow (MB)')
plt.show()
# APP分类信息(可根据app_id和app_class文件进行关联)
cate_df_1 = pd.read_csv('初赛数据集/app_class.csv',header=None)
cate_df_2 = pd.read_csv('复赛数据集/app_class.csv',header=None)
cate_df = pd.concat([cate_df_1,cate_df_2],axis=0)
cate_df.columns = ['appid','letter']
# 定义字母编码映射字典
char_map = {chr(i + 96): i for i in range(1, 27)}
# 将'letter'列中的字母进行编码
cate_df['letter'] = cate_df['letter'].map(char_map)
cate_dict = dict(zip(cate_df['appid'],cate_df['letter']))
df['category'] = df['appid'].map(cate_dict)
df.to_excel('data/复赛数据集1-30day.xlsx',index=False)

3.2 推荐模型建立与评价

...略,请下载完整资料:betterbench.top/#/106/detail

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zblog博客网站搭建与上线发布:在Windows环境下利用cpolar内网穿透实现公网访问的指引

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

操作系统真题

操作系统真题 考点前驱图真题分页存储管理索引文件结构分段存储管理进程的状态进程的同步和互斥 考点 考试只会考察选择题 前驱图真题 c 这是常考题型 b 分页存储管理 将程序分页 --逻辑地址 将内存分为页框(物理块) --物理地址 程序页的大小和页框的大小…

海康威视相机-LINUX SDK 开发

硬件与环境 相机: MV-CS020-10GC 系统:UBUNTU 22.04 语言:C 工具:cmake 海康官网下载SDK 运行下面的命令进行安装 sudo dpkg -i MVSXXX.deb安装完成后从在/opt/MVS 路径下就有了相关的库,实际上我们开发的时候只需要…

火绒能一键修复所有dll缺失吗?教你快速修复dll文件

关于dll文件的缺少,其实大家应该都是不陌生的吧,毕竟只要是经常使用电脑的人,那么它就一定碰到过各种各样的dll文件缺失,因为很多程序都是需要dll文件来支撑的,如果dll文件丢失了,那么一些程序就会启动不了…

Python基础学习第三天:Python语法

执行 Python 语法 正如我们在上一节中学习到的,可以直接在命令行中编写执行 Python 的语法: >>> print("Hello, World!") Hello, World!或者通过在服务器上创建 python 文件,使用 .py 文件扩展名,并在命令行…

5 种 可帮助开发人员提高工作效率的AI 工具

推荐:使用 NSDT场景编辑器 助你快速搭建3D应用场景 如果没有完整的团队,学习新功能或修复旧问题可能会占用不成比例的时间——可能是数小时的搜索、阅读文档和观看教学视频。幸运的是,人工智能的进步大大加快了这一过程。 每个人都立即想到的…

【内推码:NTAMW6c】 MAXIEYE智驾科技2024校招启动啦

MAXIEYE智驾科技2024校招启动啦【内推码:NTAMW6c】 【招聘岗位超多!!公司食堂好吃!!】 算法类:感知算法工程师、SLAM算法工程师、规划控制算法工程师、目标及控制算法工程师、后处理算法工程师 软件类&a…

SpringCloud入门——微服务调用的方式 RestTemplate的使用 使用nacos的服务名初步(Ribbon负载均衡)

目录 引出微服务之间的调用几种调用方法spring提供的组件 RestTemplate的使用导入依赖生产者模块单个配置的情况多个配置的情况没加.yaml的报错【报错】两个同名配置【细节】 完整代码config配置主启动类controller层 消费者模块进行配置restTemplate配置类controller层 使用na…

13.redis集群、主从复制、哨兵

1.redis主从复制 主从复制是指将一台redis服务器(主节点-master)的数据复制到其他的redis服务器(从节点-slave),默认每台redis服务器都是主节点,每个主节点可以有多个或没有从节点,但一个从节点…

Flink Kubernates Native - 入门

创建 namespace [rootCentOSA flink-1.17.1]# kubectl create ns flink-native [rootCentOSA flink-1.17.1]# kubectl config set-context --current --namespaceflink-native命令空间添加资源限制 [rootCentOSA flink-1.17.1]# vim namespace-ResourceQuota.yamlapiVersion:…

Maven报错 [ERROR] Malformed \uxxxx encoding.

IDEA刷新项目,报错[ERROR] Malformed \uxxxx encoding. 现象 1.控制台报错 [ERROR] Malformed \uxxxx encoding.2.项目代码大部分爆红 3.Pom文件不爆红 4.IDEA未能构建Dependencies 尝试清除IDEA缓存无效,重新克隆项目无效,更换低版本mav…

精进面试技巧:如何在程序员面试中脱颖而出

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

DPI 设置和获取

DPI设置与获取之前请保证程序已经打开DPI感知或者在清单文件嵌入DPI感知,否则API可能获取的值不准确 方法一:GetScaleFactorForMonitor 通过枚举显示器获取不同设备的DPI,获取的是实际DPI static BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,HDC…

服务器数据恢复-ESXi虚拟化误删除的数据恢复案例

服务器数据恢复环境: 一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装Windows Server操作系统。 服务器故障&分析: 管理员因误操作删除了一台虚拟机&#x…

报错处理:Permission denied错误

报错处理 Permission denied错误 报错环境 在Linux上运行任何需要访问系统资源、文件或目录的命令时均有可能出现。 排错思路 该错误表示当前用户没有足够的权限执行指定的操作。排查时可以先查看具体的报错信息,例如文件或目录的路径以及相应的权限设置&#xff0c…

字符设备驱动(内核态用户态内存交互)

前言 内核驱动:运行在内核态的动态模块,遵循内核模块框架接口,更倾向于插件。 应用程序:运行在用户态的进程。 应用程序与内核驱动交互通过既定接口,内核态和用户态访问依然遵循内核既定接口。 环境搭建 系统&#…

HHDESK一键改密功能

HHDESK新增实用功能——使用SSH连接,对服务器/端口进行密码修改。 1 测试 首页点击资源管理——客户端,选择需要修改的连接; 可以先对服务器及端口进行测试,看是否畅通; 右键——测试——ping; 以及右…

【Python数据分析】Matplotlib小技巧!

1. 添加标题-title matplotlib.pyplot 对象中有个 title() 可以设置表格的标题。 **import** numpy **as** np **import** matplotlib.pyplot **as** plt \# 显示中文 plt.rcParams\[font.sans-serif\] \[uSimHei\] plt.rcParams\[axes.unicode\_minus\] **False** …

Spark整合hive的时候出错

Spark整合hive的时候 连接Hdfs不从我hive所在的机器上找,而是去连接我的集群里的另外两台机器 但是我的集群没有开 所以下面就一直在retry 猜测: 出现这个错误的原因可能与core-site.xml和hdfs-site.xml有关,因为这里面配置了集群的nameno…

三---开关稳压器

通过控制系统反馈,当电压上升时通过反馈降低,当电压下降时通过反馈升高;形成一个控制环路;控制电路:PWM(脉宽调制),PFM(频率控制方式),移相控制方…