全国大学生数据统计与分析竞赛2021年【本科组】-B题:用户消费行为价值分析
目录
摘 要
1 任务背景与重述
1.1 任务背景
1.2 任务重述
2 任务分析
3 数据假设
4 任务求解
4.1 任务一:数据预处理
4.1.1 数据清洗
4.1.2 数据集成
4.1.3 数据变换
4.2 任务二:对用户城市分布情况与分布情况可视化分析
4.2.1 城市分布情况可视化分析
4.2.2 登录情况可视化分析
4.3 任务三:建立随机森林分类模型进行预测
4.3.1 符号说明
4.3.2 模型准备
4.3.3 预测模型的选择
4.3.4 随机森林分类模型
4.3.5 特征重要性分析
4.3.6 预测实验
4.3.7 模型评价
4.4 任务四:用户消费行为价值分析与建议
4.4.1 用户行为分析
4.4.2 用户行为转化分析
4.4.3 用户价值分析——RFM
4.4.4 给企业的建议
参考文献
代码实现
数据预处理部分代码展示
摘 要
1 任务背景与重述
1.1 任务背景
1.2 任务重述
2 任务分析
3 数据假设
4 任务求解
4.1 任务一:数据预处理
4.1.1 数据清洗
4.1.2 数据集成
4.1.3 数据变换
4.2 任务二:对用户城市分布情况与分布情况可视化分析
4.2.1 城市分布情况可视化分析
可以得出:
4.2.2 登录情况可视化分析

综上,针对用户活跃度,可以得到以下结论:
其中,针对异常值,推测该款软件于期末 46 周前进行过一次大批量的推广活动后,
综上,针对用户活跃度,可以得到以下结论: 4.3 任务三:建立随机森林分类模型进行预测
4.3.1 符号说明

4.3.2 模型准备
如体验课下单时间(first_order_time)、体验课价格( first_order_price )、购买 4.3.3 预测模型的选择
如表2所示,逻辑回归算法的表现最差,原因是逻辑回归这样的线性分类模型不适 4.3.4 随机森林分类模型
2. 边缘函数是正确分类结果大于最大错误分类结果的表征方式,即边缘函数越大,

4.3.5 特征重要性分析
解释模型或进一步调整模型结构。
从随机森林算法做出的特征重要性排序可以发现:
4.3.6 预测实验


4.3.7 模型评价
数据洗牌后,将 75% 的是否购买数据作为测试集,使用模型剩余 25% 的数据进行
通过对比新测试集预测数据及原是否购买数据可以发现,该模型的精确率达到 4.4 任务四:用户消费行为价值分析与建议
4.4.1 用户行为分析
明确用户消费行为后,需从不同维度对这些行为进行分析,通过观察数据,合理选
数处理,绘制出年龄维度-消费行为图,如图 16 所示:

4.4.2 用户行为转化分析
4.4.3 用户价值分析——RFM
流失情况的衡量;将学习课节数作为 F 维度作为用户参与互动情况的衡量以及将体验

对于该平台大量的一般保持用户,推测为相关免费课程体验使用后就不再继续登 4.4.4 给企业的建议
参考文献

代码实现
数据预处理部分代码展示
import pandas as pd
data1 = pd.read_csv(’../../user_info.csv’)
data2 = pd.read_csv(’../../login_day.csv’)
data3 = pd.read_csv(’../../ visit_info .csv’)
data4 = pd.read_csv(’../../ result .csv’)
print(data1. isnull () .any())
print(data2. isnull () .any())
print(data3. isnull () .any())
print(data4. isnull () .any())
# display result
# user_id False
# first_order_time False
# first_order_price False
# age_month False
# city_num True
# platform_num False
# model_num False
# app_num False
# dtype: bool
# user_id False
# login_day False
# login_diff_time False
# distance_day False
# login_time False
# launch_time False
# chinese_subscribe_num False
# math_subscribe_num False
# add_friend False
# add_group False
# camp_num False
# learn_num False
# finish_num False
# study_num False
# coupon False# course_order_num False
# dtype: bool
# user_id False
# main_home False
# main_home2 False
# mainpage False
# schoolreportpage False
# main_mime False
# lightcoursetab False
# main_learnpark False
# partnergamebarrierspage False
# evaulationcenter False
# coupon_visit False
# click_buy False
# progress_bar False
# ppt False
# task False
# video_play False
# video_read False
# next_nize False
# answer_task False
# chapter_module False
# course_tab False
# slide_subscribe False
# baby_info False
# click_notunlocked False
# share False
# click_dialog False
# dtype: bool
# user_id False
# result False
# dtype: bool
# -*-coding:utf-8-*-
import pandas as pd
data1 = pd.read_csv(’../user_info.csv’)
print(data1[’user_id’ ]. count())
wp1 = data1.drop_duplicates(subset=’user_id’,keep=False)print(wp1[’user_id’].count())
wp1.to_csv(’../user_infoPretreatment.csv’)
data2 = pd.read_csv(’../login_day.csv’)
print(data2[’user_id’ ]. count())
wp2 = data2.drop_duplicates(subset=’user_id’,keep=False)
print(wp2[’user_id’].count())
wp2.to_csv(’../login_dayPretreatment.csv’)
data3 = pd.read_csv(’../visit_info.csv’)
print(data3[’user_id’ ]. count())
wp3 = data3.drop_duplicates(subset=’user_id’,keep=False)
print(wp3[’user_id’].count())
wp3.to_csv(’../visit_infoPretreatment.csv’)
data4 = pd.read_csv(’../result.csv’)
print(data4[’user_id’ ]. count())
wp4 = data4.drop_duplicates(subset=[’user_id’],keep=False)
print(wp4[’user_id’].count())
wp4.to_csv(’../resultPretreatment.csv’)
# display result
# 135968
# 116703
# 135617
# 116416
# 135617
# 116416
# 4639
# 4613 # -*-coding:utf-8-*-
import pandas as pd
data1 = pd.read_csv(’../user_info_tobemerged.csv’)
data2 = pd.read_csv(’../login_day_tobemerged.csv’)
data3 = pd.read_csv(’../visit_info_tobemerged.csv’)
data4 = pd.read_csv(’../result_tobemerged.csv’)result23 = pd.merge(data2, data3, on=[’user_id’])
result23 .to_csv(’../merge23.csv’, encoding=’gbk’)
result234 = pd.merge(result23, data4, on=[’user_id’], how=’left’)
result234 = result234. fillna (0)
result234.to_csv(’../merge234.csv’, encoding=’gbk’)
result1234 = pd.merge(data1, result234, on=[’user_id’], how=’right’)
result1234.to_csv(’../merge1234.csv’, encoding=’gbk’) import pandas as pd
import numpy as np
from sklearn. cluster import KMeans
import matplotlib.pyplot as plt
# ------ 1.导入数据 ------
df = pd.read_csv(’china.csv’) # 此处注意换成自己的数据集路径
#print(df.head()) # 展示前5行数据
# ------ 2.提取经纬度数据 ------
x = df
x_np = np.array(x) # 将x转化为numpy数组
# ------ 3.构造K-Means聚类器 ------
n_clusters = 5 # 类簇的数量
estimator = KMeans(n_clusters) # 构建聚类器
# ------ 4.训练K-Means聚类器 ------
estimator. fit (x)
# ------ 5.数据可视化 ------
markers = [’*’, ’v’, ’+’, ’^’, ’s’ , ’x’, ’o’ ] # 标记样式列表
colors = [’r’ , ’g’ , ’m’, ’c’ , ’y’, ’b’, ’orange’] # 标记颜色列表
labels = estimator.labels_ # 获取聚类标签
plt . figure ( figsize =(9, 6))
plt .xlabel(’East Longitude’, fontsize =18)
plt .ylabel(’North Latitude’, fontsize =18)for i in range(n_clusters): # 遍历所有城市,绘制散点图
members = labels == i # members是一个布尔型数组
plt . scatter(
x_np[members, 1], # 城市经度数组
x_np[members, 0], # 城市纬度数组
marker = markers[i], # 标记样式
c = colors[ i ] # 标记颜色
) # 绘制散点图
plt .grid()
plt .show() 相关文章:
全国大学生数据统计与分析竞赛2021年【本科组】-B题:用户消费行为价值分析
目录 摘 要 1 任务背景与重述 1.1 任务背景 1.2 任务重述 2 任务分析 3 数据假设 4 任务求解 4.1 任务一:数据预处理 4.1.1 数据清洗 4.1.2 数据集成 4.1.3 数据变换 4.2 任务二:对用户城市分布情况与分布情况可视化分析 4.2.1 城市分布情况可视化分析 4…...
力扣1667. 修复表中的名字
表: Users ------------------------- | Column Name | Type | ------------------------- | user_id | int | | name | varchar | ------------------------- 在 SQL 中,user_id 是该表的主键。 该表包含用户的 ID 和名字。…...
【设计模式】详解观察者模式
文章目录 1、简介2、观察者模式简单实现抽象主题(Subject)具体主题(ConcreteSubject)抽象观察者(Observer)具体观察者(ConcrereObserver)测试: 观察者设计模式优缺点观察…...
用html+javascript打造公文一键排版系统8:附件及标题排版
最近工作有点忙,所 以没能及时完善公文一键排版系统,现在只好熬夜更新一下。 有时公文有包括附件,招照公文排版规范: 附件应当另面编排,并在版记之前,与公文正文一起装订。“附件”二字及附件顺序号用3号黑…...
微服务体系<1>
我们的微服务架构 我们的微服务架构和单体架构的区别 什么是微服务架构 微服务就是吧我们传统的单体服务分成 订单模块 库存模块 账户模块单体模块 是本地调用 从订单模块 调用到库存模块 再到账户模块 这三个模块都是调用的同一个数据库 这就是我们的单体架构微服务 就是…...
M5ATOMS3基础02传感器MPU6886
M5ATOMS3基础01按键 简洁版本 MPU6886是一款6轴IMU单元,具有3轴重力加速度计和3轴陀螺仪。它采用16位ADC,内置可编程数字滤波器和片上温度传感器,并通过I2C接口(地址为0x68)与上位机通信。MPU6886支持低功耗模式&#…...
vue 快速自定义分页el-pagination
vue 快速自定义分页el-pagination template <div style"text-align: center"><el-paginationbackground:current-page"pageObj.currentPage":page-size"pageObj.page":page-sizes"pageObj.pageSize"layout"total,prev,…...
0-虚拟机补充知识
虚拟机克隆 如果想要构建服务器集群,没有必要一台一台的去进行安装,只要通过克隆就可以。 快速获得多台服务器主要有两种方式,分别为:直接拷贝操作和vmware的克隆操作 直接拷贝 将之前安装虚拟机的所有文件进行拷贝࿰…...
如何将电机控制器添加到您的 ROS 机器人
一、说明 如果您正在构建与 ROS/ROS2 一起使用的移动机器人,您需要做的第一件事就是集成电机控制器。电机控制器的目的是接受来自更高级别的软件(如导航堆栈)的消息,并将其转换为驱动电机的信号。它还将从电机的编码器接收信息,以计算机器人的速度和位置。 您可以…...
ChatGPT统计“一到点就下班”的人数
ChatGPT统计“一到点就下班”的人数 1、到点下班 Chatgpt统计各部门F-D级员工到点下班人数占比,是在批评公司内部存在到点下班现象。 根据图片,该占比的计算方法是:最后一次下班卡在17:30-17:40之间,且1-5月合计有40天以上的人…...
Games101学习笔记 - 变换矩阵基础
二维空间下的变换 缩放矩阵 缩放变换: 假如一个点(X,Y)。x经过n倍缩放,y经过m倍缩放,得到的新点(X1,Y1);那么新点和远点有如下关系,X1 n*X, Y1 m*Y写成矩阵就是如下…...
Ubuntu18.04未安装Qt报qt.qpa.plugin could not load the Qt platform plugin xcb问题的解决方法
在Ubuntu 18.04开发机上安装了Qt 5.14.2,当将其可执行程序拷贝到另一台未安装Qt的Ubuntu 18.04上报错:拷贝可执行程序前,使用ldd将此执行程序依赖的动态库也一起拷贝过去,包括Qt5.14.2/5.14.2/gcc_64/plugins目录系的platforms目录…...
GPT4ALL私有化部署 01 | Python环境
进入以下链接: https://www.python.org/downloads/release/python-3100/ 滑动到底部 选择你系统对应的版本,如果你是win,那么大概率是win-64bit 有可能你会因为网络的问题导致下载不了,我提供了 链接 接着只需要打开 等待…...
GPT-AI 使用的技术概览
ChatGPT 使用的技术概览 智心AI-3.5/4模型,联网对话,MJ快速绘画 从去年 OpenAI 发布 ChatGPT 以来,AI 的能力再次惊艳了世人。在这样的一个时间节点,重新去学习相关技术显得很有必要。 ChatGPT 的内容很多,我计划采用…...
NoSQL-Redis持久化
NoSQL-Redis持久化 一、Redis 高可用:1.概述: 二、Redis持久化:1.持久化的功能:2.Redis 提供两种方式进行持久化: 三、RDB 持久化:1.定义:2.触发条件:3.执行流程:4.启动时…...
关于uniapp中的日历组件uni-calendar中的小红点
关于uniapp中的日历组件uni-calendar中的小红点 如果你使用过uni-calendar组件,可能你觉得这个小红点有点碍眼,但是官方给定的日历组件uni-calendar中如果你想要在某一天上添加一些信息例如:价格,签到,打卡之类,只要标…...
【Nodejs】Node.js简介
1.前言 Node 的重要性已经不言而喻,很多互联网公司都已经有大量的高性能系统运行在 Node 之上。Node 凭借其单线程、异步等举措实现了极高的性能基准。此外,目前最为流行的 Web 开发模式是前后端分离的形式,即前端开发者与后端开发者在自己喜…...
SpringBoot整合Druid
在Spring Boot中整合Druid时,需要导入Druid和JDBC的相关依赖,但不需要额外导入单独的JDBC包。 Druid是一个用于数据库连接池和监控的开源框架,它已经包含了对JDBC的实现。因此,当你导入Druid的依赖时,它已经包含了对J…...
mysql(二)SQL语句
目录 一、SQL语句类型 二、数据库操作 三、数据类型 四、创建 五、查看 六、更改 七、增、删、改、查 八、查询数据 一、SQL语句类型 SQL语句类型: DDL DDL(Data Definition Language,数据定义语言):用于…...
Unity自定义后处理——Tonemapping色调映射
大家好,我是阿赵。 继续介绍屏幕后处理,这一期介绍一下Tonemapping色调映射 一、Tone Mapping的介绍 Tone Mapping色调映射,是一种颜色的映射关系处理,简单一点说,一般是从原始色调(通常是高动态范围&…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果:邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
