python 时间减去一天_Python:用RFM模型、KMeans挖掘价值用户

一 本文目的

聚类分析是把相似的分析对象,根据各自特征分成不同的组别的统计方法。最常见的聚类分析应用场景是客户分群(segmentation),并由此衍生出对客户的画像工作。

本文目的旨在用python对数据进行处理,并根据客户的RFM进行KMeans聚类,达到组内顾客特征相似,同时不同组的顾客之间的特征差异较为明显的目的。

二 理解数据

本文数据来源于kaggle网站:

Online Retail Data Set from UCI ML repo​www.kaggle.com
7814eced201e291993a3a2be5c0611cb.png

其中,数据的时间范围从2010年12月1日到2011年12月9日,一共8个字段,541909条记录。

字段分别为:InvoiceNo、StockCode、Description、Quantity、InvoiceDate、UnitPrice、CustomerID、Country;分别对应: 订单号、产品号、产品描述、每笔交易量、交易时间、产品、单价、用户ID、用户所在国家。

三 数据导入与预处理

1 数据导入

aa190b663145cb275e9024cef79972ee.png

2 查看简要信息

2bb452a343be0fc031d55cb523ca35a9.png

3 修改列名

eb6d57e19aef1d12d62ba288e14928d1.png

4 删除空值

15f7ab1dda7dfeb50d01ad7317445819.png

上图可知,用户ID以及产品描述有空值,删除这两列的空值。

273f50fe09ad2eeebbbae5879b6f91c9.png

5 删除重复值

8列所有数据都一样的作为重复值,删除。

4f8d562af667edd16e88647ff282fee0.png

6 删除异常值

交易量,以及产品产品单价必定是大于0的,小于0的为异常值。

9aa297df2eb408e120d9d31a9a737682.png

最后,剩下397884行。

7 特征延展

后期要用到M的值,因此新增一列交易金额;新增两列,两列数据来自于分别提取交易时间中的日期与时间。

6caf9cf1bcd9b3f33db0fda092c6ccd5.png

8 求R

8.1 求出每个用户最近一次消费

b21ce688a5c35e0e7fb27763234d43fb.png

用数据中的最后一天,减去最近一次消费时间

f2e38042f82b2561a13111e28b0e3fc5.png

9 求F

相同的单号进行去重,求出每个用户的购买次数。

ff9eaa13e2eeb44fbf5afc111c0285b5.png

10 求M

9f65636c312b3ce0efcb0aa501163458.png

11 构建表格

2074168f426e46344d85bc6777e799cf.png

四 特征处理

1 对数化

观察数据,RF是1-400的数,M的取值范围是1-280206,我们先对三个数取对数,尽可能保留数据特征。

a6af78429c983b0c67f2effa8a98f75b.png

2 归一化/标准化

我们定义函数model:如果是True,表示进行归一化处理,False表示进行标准化处理。

这一步的目的是:到最后给KMeans模型进行评分时,进行调参。在此,我们先全部归一化处理。

383554fa61e2cef363bd06973b8e4b22.png

五 模型构建

KMeans的关键是定义究竟分几类,也就是找到使平方误差函数最小的簇。

那么首先,我们计算出,如果切分为1-8类,对应的簇内误差平方和。

e66be87a0b5bae2bea8e4cfc7dbd989e.png

可知,聚类数目到3时,曲线逐渐开始平缓。因此,K=2即为最佳聚类数目。

因为KMeans是基于切割的聚类,在此我们也可以计算轮廓系数,进行对比衡量聚类效果。

eb9d247aa70bfce14905e6e60a013177.png

442ebd52be66d0add6f4839c33da32a0.png

3dd14dc7ec33b7e82f15fc86440786ce.png

如上,结果确实是n=2最好。

有了以上的轮廓系数,以及簇内误差平方和,我们可以反复调参,最后达到最好的效果。

六 得出结果

经过调节,最后得出:“r=False,f=True,m=False”时,n=3,效果最好。

此时,分类后的群体,RFM的平均值,贡献的总金额大小,以及个数如下:

6b02de942db12b9cdc0c438dc0e78629.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值