Python pandas RFM模型应用实例详解

作者:闲鱼!!! 时间:2023-10-15 23:27:34 

本文实例讲述了Python pandas RFM模型应用。分享给大家供大家参考,具体如下:

什么是RFM模型

根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有3个神奇的要素,这3个要素构成了数据分析最好的指标:

  • 最近一次消费 (Recency): 客户最近一次交易时间的间隔。R值越大,表示客户交易距今越久,反之则越近;

  • 消费频率 (Frequency): 客户在最近一段时间内交易的次数。F值越大,表示客户交易越频繁,反之则不够活跃;

  • 消费金额 (Monetary): 客户在最近一段时间内交易的金额。M值越大,表示客户价值越高,反之则越低。

RFM实践应用

1、前提假设验证

RFM模型的应用是有前提假设的,即R、F、M值越大价值越大,客户未来的为企业带来的价值越大。这个前提假

设其实已经经过大量的研究和实证,假设是成立的。不过为了更加严谨,确保RFM模型对于特殊案例是有效的,

本文还进行了前提假设验证:

ps:Frequency、Monetary均为近6个月内的数据,即1-6月数据;

利用相关性检验,验证假设:

  • 最近购买产品的用户更容易产生下一次消费行为

  • 消费频次高的用户,用户满意度高,忠诚度高,更容易产生下一次消费行为

  • 消费金额高的用户更容易带来高消费行为

2、RFM分级

简单的做法,RFM三个指标以均值来划分,高于均值的为高价值、低于均值的为低价值,如此可以将客户划分为8大类:

Python pandas RFM模型应用实例详解

本文采取的方法是将三个指标进行标准化,然后按照分为数划分为5个等级,数值越大代表价值越高;当然最终划分的规则还是要结合业务来定。划分为5个等级后,客户可以细分为125种。


#读取数据
rfm<-read.csv('~/desktop/rfm1_7.csv',header=TRUE)
summary(rfm)
#数据分布
par(mfrow=c(1,3))
boxplot(rfm$rankR1)
boxplot(rfm$rankF1)
boxplot(rfm$rankM1)
#rfm分级
breaks1<-quantile(rfm$Recency, probs = seq(0, 1, 0.2),names = FALSE)
breaks1<-c(1,14,30,57,111,181) #以流失用户的定义来设置分级 30天以上为流失用户
breaks2<-quantile(rfm$Frequency, probs = seq(0, 1, 0.2),names = FALSE)
breaks2<-c(1,2,3,6,14,164)
breaks3<-quantile(rfm$Monetary, probs = seq(0, 1, 0.2),names = FALSE)
rfm$rankR1<- cut(rfm$Recency,breaks1, 5,labels=F)
rfm$rankR1<- 6-rfm$rankR1
rfm$rankF1<- cut(rfm$Frequency,breaks2, 5,labels=F)
rfm$rankM1<- cut(rfm$Monetary,breaks3, 5,labels=F)

3、客户分类

本文采用K-means聚类进行分类,聚类结果结合业务划分为4大类:

  • Cluster1:价值用户R、F、M三项指标均较高;

  • Cluster2,3:用户贡献值最低,且用户近度(小于2)和频度较低,为无价值客户;

  • Cluster4:发展用户,用户频度和值度较低,但用户近度较高,可做up营销;

  • Cluster5:挽留客户,用户近度较低,但频度和值度较高,需采用挽留手段

k值选择:

Python pandas RFM模型应用实例详解

聚类结果:

Python pandas RFM模型应用实例详解


#聚类
df<-rfm[,c(6,7,8)]
p1<-fviz_nbclust(df, kmeans, method = "wss")
p2<-p1 + geom_vline(xintercept = 5, linetype = 2)
km_result <- kmeans(df, 5)
dd <- cbind(rfm,df, cluster = km_result$cluster)
##查看每一类的数目
table(dd$cluster)
picture<-fviz_cluster(km_result, df, geom = "point")
####聚类结果解释####
rfm_final <- within(dd,{Custom = NA
Custom[cluster == 1] = '高价值客户'
Custom[cluster == 2 ] = '无价值客户'
Custom[ cluster == 3] = '无价值客户'
Custom[cluster == 4] = '重点发展客户'  
Custom[cluster == 5] = '重点挽留客户'
})

4、RFM打分

步骤3,我们将客户划分为四大类,其实如果一类客户中还有大量的客户,此时为了精细化营销,可以根据RFM进行加权打分,给出一个综合价值的分。这里,运用AHP层次分析法确定RFM各指标权重:

客户价值RFM_SCORE= 0.25rankR + 0.20rankF+0.55*rankM

AHP层次分析法(专家打分法)

Python pandas RFM模型应用实例详解

来源:https://blog.csdn.net/weixin_43158056/article/details/98871967

标签:Python,pandas,RFM模型
0
投稿

猜你喜欢

  • Python打包文件夹的方法小结(zip,tar,tar.gz等)

    2022-01-14 17:40:55
  • 浅谈Python数据处理csv的应用小结

    2021-06-10 01:40:41
  • vue+el使用this.$confirm,不能阻断代码往下执行的解决

    2024-05-29 22:43:42
  • js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法

    2024-04-16 08:55:16
  • python数据类型中的字符串你了解多少

    2023-10-07 19:55:19
  • python pyqtgraph 保存图片到本地的实例

    2023-05-08 01:15:11
  • js实现屏蔽默认快捷键调用自定义事件示例

    2023-09-05 09:28:31
  • 使用SQL语句将相同名的多行字段内容拼接(方法详解)

    2024-01-15 00:11:13
  • MySQL中UPDATE语句使用的实例教程

    2024-01-27 00:10:40
  • Python跳出循环语句continue与break的区别

    2023-10-19 11:04:19
  • MYSQL分页limit速度太慢的优化方法

    2024-01-15 21:38:42
  • Python爬虫破解登陆哔哩哔哩的方法

    2021-03-28 14:17:40
  • Python实现井字棋小游戏

    2023-04-27 05:29:07
  • 如何使用Python破解ZIP或RAR压缩文件密码

    2022-03-24 19:28:45
  • python删除服务器文件代码示例

    2023-07-26 15:44:08
  • Python实现TOPSIS分析法的示例代码

    2021-05-09 19:32:47
  • Python爬虫学习之requests的使用教程

    2021-04-25 19:06:07
  • Python实现桌面翻译工具【新手必学】

    2021-03-27 08:32:47
  • 详解python中的json的基本使用方法

    2022-03-15 22:29:13
  • 详解用Python调用百度地图正/逆地理编码API

    2021-06-01 16:35:39
  • asp之家 网络编程 m.aspxhome.com