KMeans算法在RFM模型(用户分层模型)上的应用

KMeans在RFM模型上的应用

RFM模型到底是个啥,建议先参考百度百科以及知乎的解释。
KMeans算法又是个啥,一言以蔽之:无监督学习的聚类算法(也就是俗话讲的物以类聚,人以群分)。
废话不多说,开始上手

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
data = pd.read_excel('./consumption_data.xls', index_col='Id')
data.head()

解释下这个数据集:字段R表示最近一次消费(Recency),字段F表示消费频率(Frequency),字段M表示消费金额(Monetary)
- 字段R:最近一次消费指上一次购买的时间——用户上一次是什么时候下的单、用户上一次是什么时候订购的服务,或在线下门店中用户上一次进店购买是什么时候。
- 字段F:消费频率指的是顾客在限定的期间内所购买的次数。一般而言,最常购买的用户,也是满意度/忠诚度最高的顾客,同时也是对品牌认可度最高的用户。
- 字段M:消费金额是电商相关业务数据库的支柱,也可以用来验证“帕雷托法则”——公司80%的收入来自20%的顾客。M值带有时间范围,指的是一段时间(通常是1年)内的消费金额。对于一般电商店铺而言,M值对客户细分的作用相对较弱(因为客单价波动幅度不大)。

R F M
Id
1 27 6 232.61
2 3 5 1507.11
3 4 16 817.62
4 3 11 232.81
5 14 7 1913.05
data.shape
(940, 3)
data.index
Int64Index([  1,   2,   3,   4,   5,   6,   7,   8,   9,  10,
            ...
            933, 934, 935, 936, 937, 938, 939, 940, 941, 942],
           dtype='int64', name='Id', length=940)

数据标准化

data_std = 1.0 * (data - data.mean()) / data.std()
data_std.head()
R F M
Id
1 0.764186 -0.493579 -1.158711
2 -1.024757 -0.630079 0.622527
3 -0.950217 0.871423 -0.341103
4 -1.024757 0.188922 -1.158432
5 -0.204824 -0.357079 1.189868
k =8  # k-1个簇
iteration = 500  # 聚类最大循环次数
inertia = []  # 簇内误差平方和
for i in range(1, k):
    model = KMeans(n_clusters=i, n_jobs=4, max_iter=iteration, random_state=1234
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值