k-means实战-RFM客户价值分群
数据挖掘的十大算法

基本概念




1、数据预处理:处理成 用户ID,R ,F,M四个字段
2、调用KMeans算法 进行聚类 ,设定为8类
3、对数据进行拟合,训练模型 ,每个ID对应一个类别(0-7)
4、如何将分类好的数字标签,和RFM 模型中的客户类别匹配起来?
查看每个类别的中心点,用其构造Dataframe来代表整个数据集
查看每个类别的中心点:clf.cluster_centers_
"""分别计算每个属性值的中位数,代表整个属性的中位水平"""
rmd = r['R'].median()
fmd = r['F'].median()
mmd = r['M'].median()
然后对8行3列数据进行判断,对8类数据进行客户类别标签
5、对整个数据集贴上标签
标签0-7和客户类型一一对应 数据集:

导入数据集到mysql数据库中
总共有940个独立消费数据

无监督算法:
K-Means 算法
K-Means 算法是一个聚类算法。你可以这么理解,最终我想把物体划分成 K 类。假设每
个类别里面,都有个“中心点”,即意见领袖,它是这个类别的核心。现在我有一个新点
要归类,这时候就只要计算这个新点与 K 个中心点的距离,距离哪个中心点近,就变成了
哪个类别。
引入模块
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import pymysql
连接数据库:
conn = pymysql.connect(host='localhost',user='root',password='',db='db2',port=3306)
rfm = pd.read_sql('select * from consumption_data',con=conn)
conn.close()
查看详情:
rfm.info()

rfm.head()

"""选取RFM 三列"""
new_rfm = rfm.loc[:,['R','F','M']]
"""调用KMeans算法 进行聚类 ,设定为8类"""
clf = KMeans(n_clusters=8,random_state=0)
"""对数据进行拟合,训练模型"""
clf.fit(new_rfm)
"""查看一下分类的结果,返回的数组中每个数字对应了rfm中每一行"""
print(len(clf.labels_))
se = pd.Series(clf.labels_)
se.value_counts()
new_rfm['label']=clf.labels_
new_rfm.head()
"""如何将分类好的数字标签,和RFM 模型中的客户类别匹配起来?"""
"""查看每个类别的中心点,用其构造Dataframe来代表整个数据集"""
查看每个类别的中心点:clf.cluster_centers_ 8行3列
r = pd.DataFrame(clf.cluster_centers_,columns=['R','F','M'])
print(r) 每个类别的中心点0-7共8类

"""分别计算每个属性值的中位数,代表整个属性的中位水平"""
rmd = r['R'].median()
fmd = r['F'].median()
mmd = r['M'].median()
cluster=[]
for i in range(len(r)):
if r.iloc[i,0] > rmd and r.iloc[i,1] >fmd and r.iloc[i,2] >mmd:
cluster.append('高价值客户')
elif r.iloc[i,0] < rmd and r.iloc[i,1] > fmd and r.iloc[i,2] >mmd:
cluster.append('重点保持客户')
elif r.iloc[i,0] > rmd and r.iloc[i,1] < fmd and r.iloc[i,2] >mmd:
cluster.append('重点发展客户')
elif r.iloc[i,0] < rmd and r.iloc[i,1] < fmd and r.iloc[i,2] > mmd:
cluster.append('重点挽留客户')
elif r.iloc[i,0] > rmd and r.iloc[i,1] > fmd and r.iloc[i,2] < mmd:
cluster.append('一般价值客户')
elif r.iloc[i,0] < rmd and r.iloc[i,1] > fmd and r.iloc[i,2] < mmd:
cluster.append('一般保持客户')
elif r.iloc[i,0] > rmd and r.iloc[i,1] < fmd and r.iloc[i,2] < mmd:
cluster.append('一般发展客户')
else:
cluster.append('潜在客户')
cluster

"""将贴好的标签,匹配到每一行数据"""
r['客户分类']=cluster

s = r.reset_index()
print(s)

new_rfm.head()

标签0-7和客户类型一一对应 对整个数据集贴上标签 # result = pd.merge(new_rfm,r['客户分类'],how='inner',left_on='label',right_index=True)# 用右表的索引做连接键
result = pd.merge(new_rfm,s[['index','客户分类']],how='inner',left_on='label',right_on='index') result.sort_index()![]()
k-means实战-RFM客户价值分群的更多相关文章
- RFM客户价值分类
# 自定义好的包,亲测可用 原数据和代码思想来自以下网址 # https://github.com/joaolcorreia/RFM-analysis import datetime as dt im ...
- 客户主题分析(tableau)—客户分群
主要分析方面:客户合理分群 客户分群实现:使用聚类构建指标,需理解聚类的分析逻辑,需使用软件:tableau 聚类方法:选择3指标分别为购买总金额,客户购买次数.类平均购买价格(四类的平均购买价格,四 ...
- 数据分析之客户价值模型(RFM)技术总结
作者 | leo 管理学中有一个重要概念那就是客户关系管理(CRM),它核心目的就是为了提高企业的核心竞争力,通过提高企业与客户间的交互,优化客户管理方式,从而实现吸引新客户.保留老客户以及将已有客户 ...
- Python使用RMF聚类分析客户价值
投资机构或电商企业等积累的客户交易数据繁杂.需要根据用户的以往消费记录分析出不同用户群体的特征与价值,再针对不同群体提供不同的营销策略. 用户分析指标 根据美国数据库营销研究所Arthur Hughe ...
- 项目实战:负载均衡集群企业级应用实战—LVS详解
目录 一.负载均衡集群介绍 二.lvs 的介绍 三.LVS负载均衡四种工作模式 1.NAT工作模式 2.DR工作模式 3.TUN工作模式 4.full-nat 工作模式 5.四者的区别 四.LVS i ...
- Admixture的监督分群(Supervised analysis)
目录 说明 实战 说明 Admixture通过EM算法一般用于指定亚群分类:或者在不知材料群体结构背景下,通过迭代交叉验证获得error值,取最小error对应的K值为推荐亚群数目.如果我们预先已知群 ...
- python实现六大分群质量评估指标(兰德系数、互信息、轮廓系数)
python实现六大分群质量评估指标(兰德系数.互信息.轮廓系数) 1 R语言中的分群质量--轮廓系数 因为先前惯用R语言,那么来看看R语言中的分群质量评估,节选自笔记︱多种常见聚类模型以及分群质量评 ...
- 如何通过CRM评估客户价值和提高客户忠诚度?
随着市场经济的日益繁荣,同行业之间企业的竞争越来越激烈,企业纷纷各出奇招吸引和挖掘客户,力求让自己的品牌成为更多客户的第一选择.那么,我们可以用什么方法来评估客户价值,提高客户忠诚度呢? 在互联网时代 ...
- Tableau 分群
对数据的特征进行分析,分群. 数据选用的是Iris data 下载地址:http://archive.ics.uci.edu/ml/machine-learning-databases/iris/ 1 ...
随机推荐
- 央行辟谣未发行“DC/EP”和“DCEP” 法定数字货币仍在测试阶段
http://www.sohu.com/a/354709423_100157595 近期,中国央行再度就法定数字货币发布公告,指出目前系统仍处于研究测试过程中,市场上交易“DC/EP”或“DCEP”均 ...
- IDEA debug工具使用
参考:https://www.cnblogs.com/jajian/p/9410844.html
- python进阶之内存模型
每一个编程语言的背后都有自己独特的内存模型支持,比如最经典的C语言,一个int类型占8字节.那么在python中不区分数据类型,定义一个变量其在内存在占用多少字节呢?python中数据的运算其内存是如 ...
- 华为mate10 pro内置浏览器出现的令人头疼的样式兼容问题
问题描述: 下图红色框区域内容在华为mate10 pro(以下简称mate10)内置浏览器中整体向左偏移,没有居中,其它手机浏览器都无该问题,如下图 问题分析 经过一番追根溯源,我发现是 bo ...
- Linux常见命令之权限管理命令
chmod命令 chmod命令用来变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取.写入.执行3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文 ...
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
- Python Turtle绘画初学编程——六芒星,浪形圈
老师上课说可以自学一下python中的绘图turtle,就自己初步学习了一下,做了两个简单的绘图——六芒星和浪形圈(其实我也不知道该叫它什么,就照样子编了个词
- WPF MVVM,Prism,Command Binding
1.添加引用Microsoft.Practices.Prism.Mvvm.dll,Microsoft.Practices.Prism.SharedInterfaces.dll: 2.新建文件夹,Vie ...
- .NET MVC5简介(四)Filter和AuthorizeAttribute权限验证
在webform中,验证的流程大致如下图: 在AOP中: 在Filter中: AuthorizeAttribute权限验证 登录后有权限控制,有的页面是需要用户登录才能访问的,需要在访问页面增加一个验 ...
- ASP.NET(1)
1.IIS安装问题,先装VS再装IIS,处理程序映射有问题,使用VS自带的控制台输入命令,注册路径 2.开发模式,一般处理程序,使用IO操作读取html文件,使前后端分离 3.post请求和get请求 ...



