- 博客(82)
- 收藏
- 关注
原创 基于 Python + MySQL + Streamlit 的电商用户增长分析项目实战
经过数据清洗与特征构建后:用户表:5000条记录订单表:15000条记录商品表:2000条记录行为表:30000条记录未发现重复数据;缺失值主要来源于未完成订单及未评价订单;高金额订单经业务验证后保留;最终形成用户特征表与商品特征表,为后续RFM分析、ABC分析、漏斗分析以及用户流失预测模型提供数据基础。统计周期内累计GMV达到:4616.6万元 具备较强交易规模。指标含义R(Recency)最近一次消费距今天数消费频次累计消费金额RFM模型是用户价值分析中最经典的方法之一。
2026-06-25 13:55:47
261
原创 Python 电商购物篮 Apriori 实战
用户购物习惯:单次下单仅采购单一品类商品,无跨品类共购样本;单品维度过于分散,直接单品建模维度高达 1906 个,几乎无共购组合。改用品类聚合建模,降低矩阵维度;绘图代码增加模拟数据兜底,保证可视化效果展示;增加订单品类数量诊断代码,快速定位无规则根源。运营上线品类捆绑套餐、满减活动,引导用户一单多品类购买;商品详情页配置搭配推荐,提升跨品类共购订单量;积累混合品类订单后,重新执行购物篮分析。
2026-06-18 00:58:47
237
原创 基于 RFM 模型实现淘宝用户精细化分层与营销分析
本文基于RFM模型对电商用户进行价值分层分析,通过订单数据计算用户最近消费时间(R)、消费频次(F)和消费金额(M)三个核心指标,将用户划分为8类群体:重要价值客户、重要流失客户、重要挽留客户、重要唤回客户、一般活跃客户、一般流失客户、一般挽留客户和低价值客户。分析结果显示不同分层用户在消费特征上存在显著差异,并针对每类用户提出了差异化运营策略,如为核心价值客户提供专属权益、对高价值流失用户进行定向召回等。该项目实现了从粗放运营到精细化管理的转变,为电商平台优化资源配置、提升用户价值提供了数据支持。
2026-06-14 12:09:01
317
原创 4月16号
在windows操作系统当中,java对回车换行进行了优化。虽然完整的是\r\n,但是我们写其中一个\r或者\n,java也可以实现换行,因为java在底层会补全。续写:如果想要续写,打开续写开关即可 , 开关位置:创建对象的第二个参数。手动传递true:表示打开续写,此时创建对象不会清空文件。默认false:表示关闭续写,此时创建对象会清空文件。换行写:再次写出一个换行符就可以了。建议:不要省略,还是写全了。
2025-04-16 22:31:07
324
原创 4月15号
细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true , 如果当前路径表示的文件是存在的,则创建失败,方法返回false。5.当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件。细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件。4.当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。3.mkdirs 创建多级文件夹。
2025-04-15 22:34:12
278
原创 4月10号
假设流里面的数据是字符串,那么使用这种方式进行方法引用,只能引用string这个类中的方法。第二个参数到最后一个参数:跟被引用方法的形参保持一致,如果没有第二个参数,说明被引用的方法需要是无参的成员方法。是跟抽象方法的第一个参数有关,这个参数是什么类型的,那么就只能引用这个类中的方法。3.被引用方法的形参,需要跟抽象方法的第二个形参到最后一个形参保持一致,返回值需要保持一致。3.被引用方法的形参和返回值需要跟抽象方法的形参和返回值保持一致。第一个参数:表示被引用方法的调用者,决定了可以引用哪些类中的方法。
2025-04-10 22:32:10
264
原创 4月8号.
细节2:Map里面的of方法,参数是有上限的,最多只能传递20个参数,1θ个键值对。细节:当我们要获取一个不可变的Set集合时,里面的参数一定要保证唯一性。创建不可变的Set集合。创建Map的不可变集合。细节1:键是不能重复的。
2025-04-08 22:37:04
246
原创 4月7号.
在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中,方法返回null。在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回。put方法的细节:添加/覆盖。3.Lambda表达式。
2025-04-06 21:59:55
201
原创 4月6号.
细节2:如果我们要往Set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false如果要删除的元素不存在,就会删除失败。细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的。2,迭代器遍历完毕,指针不会复位。
2025-04-06 11:17:15
384
原创 4月3号.
遍历无序的序列得到里面的每一个元素,假设当前遍历得到的元素是A元素 把A往有序序列中进行插入,在插入的时候,是利用二分查找确定A元素的插入点。底层原理:因为在实际开发中,-128~127之间的数据,用的比较多. 如果每次使用都是new对象,那么太浪费内存了. 所以,提前把这个范围之内的每一个数据都创建好对象. 如果要用到了不会创建新的,而是返回已经创建好的对象.底层原理:会根据系统的不同时区来获取不同的日历对象. 把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中.
2025-04-03 22:30:12
461
原创 4月2号.
细节:如果要求两个范围的交集,那么需要写符号&& , 如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号.[1-9]表示0不在开头,\\d表示数字,{5,19}表示位数.
2025-04-02 22:38:22
281
原创 4月1号.
3.如果我们传递的是0~10之间的整数,包含0,包含10,那么方法会返回己经创建好的对象,不会重新new。1.如果要表示的数字不大,没有超出double的取值范围,建议使用静态方法。2.如果要表示的数字比较大,超出了double的取值范围,建议使用构造方法。BigDecima的作用: 用于小数的精确计算 用来表示很大的小数。
2025-04-01 22:31:44
422
原创 3月31号
结论: 1.如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较的是地址值是否相等 2.一般来讲地址值对我们意义不大,所以我们会重写,重写之后比较的就是对象内部的属性值了。上一周算法题刷了10道,然后学习了一些鼠标按键知识,创建图形化界面的知识,菜单栏的知识,Math类的常用方法,Runtime,Object的成员方法,implements和extends.当我们的鼠标在按钮上做出动作时,控制台会给我们提示相应的反应,我们可以在那些父类方法里面改写我们的程序,实现更多的操作.
2025-03-31 20:04:21
708
原创 3月28号
CX 小朋友找出了餐厅中所有的筷子,但遗憾的是这些筷子长短不一,而我们都知道筷子需要长度一样的才能组成一双,更麻烦的是 CX 找出来的这些筷子数量为奇数,但是巧合的是,这些筷子中只有一只筷子是落单的,其余都成双,善良的你,可以帮 CX 找出这只落单的筷子的长度吗?一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 m 开始爬到蜂房 n,m<n,有多少种爬行路线?栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。
2025-03-28 21:23:48
946
原创 3月27号
(因为我也是看的视频)剩下的操作看链接: https://pan.baidu.com/s/1UZrlFo2782HsivdJJ996UA。3.->innosetup:将游戏用到的图片,java的运行环境和第二步打包的代码,组合成最终的安装程序。3.把第二步的exe,图片,JDK整合在一起,变成最终的exe安装包。1.把所有代码打包成一个压缩包,jar后缀的压缩包。2.->exe4j:将jar包转换成exe的工具。在不同的情况下,相对路径的相对位置是不一样的。3.游戏用到的图片也要打包起来。
2025-03-27 21:52:23
431
原创 3月24号
代码运行出来这样:在"点我呀!"上面进行鼠标与按键操作,会显示划入,划出,单机,按下不松.点了"再点我呀!"会改变按钮位置:点了"点我呀!
2025-03-24 22:24:56
336
原创 3月21号
如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,4 和 5,当它们按正常顺序排列时,形成了 5 位数 12345,当你交换无名指和小指的位置时,会形成 5 位数 12354,当你把五个手指的顺序完全颠倒时,会形成 54321,在所有能够形成的 120 个 5 位数中,12345 最小,它表示 1;这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。
2025-03-21 22:26:03
1018
原创 3月19号
当对static引用的相关值进行了改变,则在任意一个成员变量调用时都是改变后的值,如果其中一个成员变量调用改变了值,则其他成员变量中的值都会改变.如果有一个成员函数的名字和类的名字完全相同,则在创建这个类的每一个对象的时候会自动调用这个函数,这个函数我们称为构造函数.任何人都可以访问,任何人指任何类的函数或定义初始化中可以使用,使用指的是调用,访问,定义变量。只有这个类内部可以访问,类内部指类的成员函数和定义初始化,这个限制是对类的而不是对对象的。创建对象的时候给出不同的参数值,就会调用不同的构造函数。
2025-03-19 22:24:40
327
原创 3月18号
哈希函数能快速的将一个数值转换为哈希值(整数),所以哈希表必须保持哈希值计算的一致,如果两个哈希值是不相同的,那么这两个哈希值的原始输入也是不相同的.给定 n 个正整数组成的数列 a1,a2,⋯,an 和 m 个区间 [li,ri],分别求这 m 个区间的区间和。接下来 m 行,每行为两个正整数 li,ri ,满足1≤li≤ri≤n。对于 100% 的数据:1≤n,m≤105,1≤ai≤104。第二行,为 n 个正整数 a1,a2,⋯,an。第 i 行为第 i 组答案的询问。
2025-03-18 22:26:37
395
原创 3月17号
对象与类:对象是实体,需要被创建,可以为我们做事情类是规范,根据类的定义来创建对象自己设计了一个类之后,类的名字就可以用来定义变量,来创建对象,对象变量v是对象管理者而非创造者.成员变量:new出来每一个变量之后,对象里面有相应的变量,每个对象里面的变量都是不同的.类定义了对象中所具有的变量,这些变量称作成员变量.每个对象有自己的变量,和同一个类的其他对象是分开的.
2025-03-17 22:32:04
314
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅