Python使用RMF聚类分析客户价值

投资机构或电商企业等积累的客户交易数据繁杂。需要根据用户的以往消费记录分析出不同用户群体的特征与价值,再针对不同群体提供不同的营销策略。

用户分析指标

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

R-最近一次消费(Recency)

F-消费频率(Frequency)

M-消费金额(Monetary)

通过该图将用户进行分类:

R、F、M都很高,重要价值客户(VIP客户)

F、M很高,R不高,重要保持客户

R、F、M都很低,流失客户

M很高,R、F不高,重要挽留客户

根据这8个类别的R、F、M指标,对用户进行标注,哪些是重要价值客户,哪些是重要保持客户,哪些是重要发展客户,哪些是流失客户等

流程介绍

以R、F、M这三个核心指标为维度进行聚类分析

利用K-means聚类分析将用户分类

根据R、F、M指标,对用户进行标注

准备工作:
数据

某电商企业客户近期购买的数据。包含客户注册日期,最后购买日期以及购买消费总金额

参数:

R-求出最近一次投资时间距提数日天数

F-月均投资次数

M-月均投资金额

目标:分析客户交易数据,用户群体的特征与价值,进行精准营销,降低营销成本,提高销售业绩。

1  分析数据获取RFM

R-求出最近一次投资时间距提数日天数

确定一个提现日,减去用户的最新投资日期

F-月均投资次数

总投资次数/总月数

M-月均投资金额

投资总金额/总月数

处理数据获取R-F-M

def dataChange(data):
    deadline_time = datetime(2016,7,20)
    print(deadline_time)

    # 时间相减 得到天数查 timedelta64类型
    diff_R = deadline_time - data["最近一次投资时间"]

    # 渠道具体天数
    # days = diff_R[0].days
    R = []
    for i in diff_R:
        days = i.days
        R.append(days)

    print(R)
    ‘‘‘
    用户在投时长(月
    Python没有直接获取月数差的函数
    1、获取用户在投天数
    2、月=在投天数/30,向上取整
    ‘‘‘
    diff = deadline_time - data["首次投资时间"]
    print(diff)

    # 利用向上取整函数
    months = []
    for i in diff:
        month = ceil(i.days/30)
        months.append(month)

    print(months)

    # 月均投资次数
    month_ave = data["总计投标总次数"]/months
    F = month_ave.values
    print(F)

    # 月均投资金额
    M = (data["总计投资总金额"]/months).values
    print(M)

    return R, M, F

2 训练KMeans模型

先对数据进行转换,然后通过K—Means模型训练,生产模型

def analy_data(data, R, M, F):
    cdata = DataFrame([R, list(F), list(M)]).T
    # 指定cdata的index和colums
    cdata.index = data.index
    cdata.columns = ["R-最近一次投资时间距提数日的天数", "F-月均投资次数", "月均投资金额"]
    print("cdata_info:\n", cdata)

    print("cdata:\n", cdata.describe())

    # K-Means聚类分析

    # 01 数据标准化  均值:cdata.mean()   标准差:cdata.std()
    # 对应位置分别先相减 再相除
    zcdata = (cdata-cdata.mean())/cdata.std()
    print("zcdata:\n", zcdata)

    # n_clusters:分类种数  n_jobs:计算的分配资源  max_iter:最大迭代次数  random_state:随机数种子,种子相同,参数固定
    kModel = KMeans(n_clusters=4, n_jobs=4, max_iter=100, random_state=0)
    kModel.fit(zcdata)
    print(kModel.labels_)

3  通过模型对用户标注

   # 统计每个类别的频率
    value_counts = Series(kModel.labels_).value_counts()
    print(value_counts)

    # 将类别标签赋回原来的数据
    cdata_rst = pd.concat([cdata, Series(kModel.labels_, index=cdata.index)], axis=1)
    print(cdata_rst)

    # 命名最后一列为类别
    cdata_rst.columns = list(cdata.columns) + ["类别"]
    print(cdata_rst)

    # 按照类别分组统计R, F, M的指标均值
    user_ret = cdata_rst.groupby(cdata_rst["类别"]).mean()
    print(user_ret)

‘‘‘

        R-最近一次投资时间距提数日的天数   F-月均投资次数         月均投资金额 类别  0            27.859375               2.820312          21906.754297  1            20.684211               4.552632          115842.105263  2            10.568182               5.579545          26984.313636  3            12.111111               17.277778         107986.000000

  结论:  类别3:R、F、M都比较高,属于重要价值客户 或 超级用户  类别0:R、F、M都比较低,属于低价值客户  类别1:R一般、F一般、M很高,也属于重要价值客户

  ‘‘‘

通过模型对新用户标注

1、获取新用户数据

2、通过和原数据处理获取RFM

3、通过训练模型得出用户类型

def user_classes(cdata, user_info):
    ‘‘‘
    # 模拟一条用户数据
    1、获取当前时间表示为截止时间
    2.计算出: R F M

    ‘‘‘
    R, M, F = user_info_change(user_info)
    user_data_info = DataFrame([[R], [F], [M]]).T
    print(user_data_info)

    # user_data_info = DataFrame([[12.5], [18.0], [20000.0]]).T
    user_data_info.index = ["lily"]
    user_data_info.columns = cdata.columns
    print("cdata_info:\n", user_data_info)

    new_zcdata = (user_data_info-cdata.mean())/cdata.std()
    print("new_zcdata", new_zcdata)

    kModel = load_model("user_classes.pkl")
    ret = kModel.predict(new_zcdata)
    print("new_zcdata_ret:", ret)
    # new_zcdata_ret: [3]



原文地址:https://www.cnblogs.com/blogs/p/12003145.html

时间: 2024-09-30 21:59:23

Python使用RMF聚类分析客户价值的相关文章

最近一个项目的一点反省:客户价值才是关注的焦点

我们公司的一款PC软件,是对各种波形数据文件进行解析.显示.最近的一次开发,采用敏捷的方法进行,每次迭代验收都严格执行单体测试的全面性确认.本次开发的内容是追加一种新的波形数据文件解析,因此这个项目的主要输出是文件解析的DLL,但是针对新文件数据的显示,也是项目内容之一,只是因为显示功能已比较完善,预想不会占有太多的时间. 但最后问题就出在这个预想上.最终结果,6K的程序中共出现了9件Bug(第三方确认测试中发现的),而这些Bug几乎全部出现在显示和显示后的文件保存上. 为什么会出现这样的问题?

CRM——零售业客户价值挖掘利器

网络时代在搜索成本越来越低的情况下,网络上的海量信息让客户拥有了足够分辨能力并能迅速做出决定--在一秒钟内选择或放弃某个零售品牌的商品,或在下一秒钟再更换成另一家零售品牌.品牌一点点的偏差就有可能流失客户. 对此,品牌不要短视地看待客户今天的购买行为.购买数量和支付金额.要用忠诚度牢牢地拴住那些有价值的或具潜在价值的客户,提高他们对品牌的满意度和忠诚度,尽可能延长客户的生命周期,最终实现客户价值的倍增. 莎士比亚说,"闪光的不一定都是金子".同样,客户也不一定都是属于你的上帝.一项研究

零售业CLV客户价值模型

赶在2017年的尾巴,终于把几个模型做完并进入部署阶段,开心之余想到好久没更新我的小白数据分析师的文章啦~赶紧来补个功课! 关于CLV客户价值模型,其实本质就是想回答2个业务人员关心的问题:(1)    这个客户已经为企业创造了多少价值?回答:客户X过去n年内消费XX元(2)    这个客户将来会为企业创造多少价值?回答:客户X未来n年内将消费XX元       故而,CLV模型首先被拆成了两个部分:一是CCV客户当前价值模型:二是CPV客户潜在价值模型. 模型框架:(一)    Custome

创业公司怎样靠解锁客户价值链成功

无论是优步还是爱彼迎,近几年的明星创业公司的一大共同点是,他们靠着打破某个行业的原有规则获得成功.哈佛商学院副教授泰丽斯·特谢拉(Thales Teixeira)通过6年的分析调查提出,这些公司商业模式的基本原理叫做脱钩(decoupling).在她的新书<解锁客户价值链:脱钩如何动摇消费者决策>(Unlocking the Customer Value Chain:How Decoupling Drives Consumer Disruption)中,特谢拉解释了"脱钩"

Python:层次聚类分析——基于基站定位数据商圈分析

<Python数据分析与挖掘实战>书中本章无原始数据,文中仅展示了聚类分析了各人群聚集区特征(商圈特征,做营销策划住宅区.CBD商场.办公楼这还用聚类分析吗,直接肉眼也能辨别吧,这就是所有的人流特征和规律?)也是没什么实际用处,而且数据源数据预处理过程才是挖掘重点吧,避重就轻. 记录学习一下两点 数据标准化方式(归一化.标准化.正规化) 聚类分析算法 归一化:无量纲化,提升模型的收敛速度.精度:需考虑标准化前后模型是否同解等价 正则化:一般是为解决模型过拟合问题,除降低特征维度外可选用的方法就

[python]机器学习 k-mean 聚类分析

1.聚类代码: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @File : 聚类2.py 4 # @Author: 赵路仓 5 # @Date : 2020/3/19 6 # @Desc : 7 # @Contact : [email protected] 8 9 import csv 10 import re 11 import jieba.analyse 12 from sklearn.cluster import KMeans

剑指offer python版 礼物的最大价值

class Solution: def getmaxValue(self, values, rows, cols): if not values or rows<=0 or cols <=0: return 0 # 用于存放中间数值的临时数组 temp = [0] * cols for i in range(rows): for j in range(cols): left = 0 up = 0 if i > 0: up = temp[j] if j > 0: left = tem

Python 的经典入门书籍

实python非常适合初学者入门,上手很容易.我就是完全通过网上资源学了python的.最大的是3点经验:1.找一本浅显易懂,例程比较好的教程,从头到尾看下去.不要看很多本,专注于一本.把里面的例程都手打一遍,搞懂为什么.2.去找一个实际项目练手.我当时是因为要做一个网站,不得已要学python.这种条件下的效果比你平时学一门新语言要好很多.所以最好是要有真实的项目做.可以找几个同学一起做个网站之类.3.最好能找到一个已经会python的人.问他一点学习规划的建议,然后在遇到卡壳的地方找他指点.

数据挖掘应用案例:RFM模型分析与客户细分(转)

正好刚帮某电信行业完成一个数据挖掘工作,其中的RFM模型还是有一定代表性,就再把数据挖掘RFM模型的建模思路细节与大家分享一下吧!手机充值业务是一项主要电信业务形式,客户的充值行为记录正好满足RFM模型的交易数据要求. 根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有三个神奇的要素,这三个要素构成了数据分析最好的指标:最近一次消费(Recency).消费频率(Frequency).消费金额(Monetary). 我早期两篇博文已详述了RFM思想和IBM Modeler操作