热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python实现LRFM模型分析客户价值

1.分析背景这是一份某电商平台的销售数据,数据包含2010年4月22到2014年7月24的销售数据。分析该销售数据,可以发现客户价值。现利用KMeans聚类实现LRFM模型来分析客

1. 分析背景

这是一份某电商平台的销售数据,数据包含2010年4月22到2014年7月24的销售数据。分析该销售数据,可以发现客户价值。

现利用KMeans聚类实现LRFM模型来分析客户的价值,便于客户分群,针对性推广,提高销售额。

LRFM模型定义:

  • L:会员创建日期距离距离2014年7月25的时间间隔(单位:月 )

  • R:会员最近一次购买时间距离2014年7月25的时间间隔(单位:月 )

  • F:会员购买次数

  • M:会员的总购买金额

2. 分析流程

图片

3. 数据探索

3.1 导入相关包和读取数据

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
from sklearn import preprocessing
from datetime import datetime
from sklearn.cluster import KMeans

plt.rcParams['font.sans-serif'] = 'SimHei'
%matplotlib inline

# 读取数据
df = pd.read_csv(r'C:/Users/Administrator/Desktop/RFM分析1.csv',
                engine='python')
# 查看行列                
df.shape

输出:

3.2 查看表结构

image.png从图可以看出这里的数据只有class2有缺失值,这里暂时不用提取这个指标,暂不清洗。


3.3 描述性分析查看

image.png这里销售金额为负数的情况,数据清洗的时候得把这些异常值过滤。


4. 数据清洗

4.1 将销售额<0的过滤掉

# 销售金额有小于等于0的,直接过滤掉
# 这里有22542条数据
data = df[df['销售金额'] >0]
data.shape

输出:

4.2 会员创建日期、销售日期转换成datetime格式

data['会员创建日期'] = pd.to_datetime(data['会员创建日期'])
data['销售日期'] = pd.to_datetime(data['销售日期'])

# 查看是否转换成功
data.info()

输出:

5. 构建L、R、F、M指标

5.1 提取有用指标

  • L = 相对日期(这里我指定:2014年7月25) - 会员创建日期

  • R = 相对日期(这里我指定:2014年7月25) - 最晚(大)的销售日期

  • F = 用户购买的次数(这里针对流水号进行计数不同)

  • M = 用户购买的汇总金额
    代买实现:

# 计算L,再转换成月,这里转换成月,直接除于30天,保留两位小数
# L是最早的购买日期距离会员创建日期
data1 = data.groupby('UseId').agg({'会员创建日期': ['min'],
                                    '销售日期': ['min', 'max'], 
                                   '销售金额':['sum'],
                                  '流水号':['nunique']})
data1

输出:

图片
删除一层列名,并重新进行命名:

# 删除第一层的列名
data1.columns = [col[1] for col in data1.columns]
# 重新命名列名
data1.columns = ['会员创建日期', '最早销售日期', '最晚销售日期', 'M', 'F']
data1

输出:

图片
M、F指标已经构建完成。

5.2 购买L、R指标

# 先计算L,R,再转化成单位月
data1['L'] = datetime.strptime('2014-7-25', '%Y-%m-%d') - data1['会员创建日期']
data1['R'] = datetime.strptime('2014-7-25', '%Y-%m-%d') - data1['最晚销售日期']

# 将L、R转换成月做为单位
data1['L'] = data1['L'].apply(lambda x: round(x.days/30,3))
data1['R'] = data1['R'].apply(lambda x: round(x.days/30,3))
data1

输出结果:


提取有用的指标:

LRFM_data = data1[['L', 'R', 'F', 'M']]

6. 进行L、R、F、M数据的Z-Score转换

ss = preprocessing.StandardScaler()
ss_LRFM_data = ss.fit_transform(LRFM_data)
ss_LRFM_data

输出:

图片

7. 使用KMeans进行聚类分析

# n_clusters聚类的个数
kmodel = KMeans(n_clusters=5, n_jobs=4)
kmodel.fit(ss_LRFM_data)
#查看聚类中心
kmodel.cluster_centers_ 

输出:

图片
将结果转成DataFrame

client_level = pd.DataFrame(kmodel.cluster_centers_, 
                            index=['客户群1', '客户群2', '客户群3', '客户群4', '客户群5'],
                           columns=['L', 'R', 'F', 'M'])
client_level

输出:

图片

8. 针对结果进行客户群的分类

  • L越大,代表注册会员时间距离指定时间(2014年7月25)越长,代表老客户,该指标越大越好。

  • R越小,代表购买时间距离指定时间(2014年7月25)越短,R越小越好。

  • F越大,代表会员的购买次数越多。

  • M越大,代表会员购买的金额越多。

客户群1分析:
L大,R小,F大,M较大,这里判断是重要发展客户。

客户群2分析:
L大,R大,F小,M较小,这里判断是重要挽留客户。

客户群3分析:
L小,R小,F小,M小,这里判断是低价值客户。

客户群4分析:
L大,R大,F小,M小,这里判断是一般价值客户。

客户群5分析:
L大,R小,F大,M大,这里判断是重要保持客户。



推荐阅读
  • 本文介绍了使用Python根据字典中的值进行排序的方法,并给出了实验结果。通过将字典转化为记录项,可以按照字典中的值进行排序操作。实验结果显示,按照值进行排序后的记录项为[('b', 2), ('a', 3)]。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文介绍了在刷《第一行代码》过程中遇到的运行报错问题,其中出现的提示为Error:Execution failed for task ':app:processDebugResources'。 ... [详细]
  • 本文介绍了一个视频转换软件MyVideoConverter,该软件支持将mpg转换成swf格式,支持多种格式的转换,转换速度快,还能转换成3GP格式,同时具有音频分离提取功能。欢迎使用MyVideoConverter进行视频转换和音频提取。 ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • Spring Batch中多线程配置及实现例子
    本文介绍了在Spring Batch中开启多线程的配置方法,包括设置线程数目和使用线程池。通过一个示例演示了如何实现多线程从数据库读取数据并输出。同时提到了在多线程情况下需要考虑Reader的线程安全问题,并提供了解决方法。 ... [详细]
author-avatar
mobiledu2502890883
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有