这次分享的是在工作中经常用到的聚类分析,只要是工作中涉及到客户分群,哪能不用到聚类分析呢?聚类分析涉及的方法有层次聚类、kmeans聚类、密度聚类等,这里主要介绍最容易上手的kmeans聚类算法,上手就是王道!

kmeans聚类原理:基于原型的、划分的距离技术,它试图发现用户指定个数(K)的簇。统计学原理请大家自觉完成自学~~

实战一:

老板的需求:将17家门店分成3类,依据指标是销售金额和客户数量,其中要求销售金额权重(60%),客户数量权重(40%)

需求解析:很幸运,这是一个具体的要求,恩!这里已经指定分类数量,并且要求对各个指标赋权重,那么就需要对各个指标依次进行聚类,得到分组后,对各组值赋一个分数,再将分数乘以权重比例相加,就能实现boss的要求~~

#载入cluster
library(cluster)
#读入需要聚类的数据
a<-read.csv("testdata.csv",header=TRUE)
str(a)
'data.frame': 17 obs. of  3 variables:$ 网点分类: Factor w/ 17 levels "store1","store10",..: 1 10 11 12 13 14 15 16 17 2 ...$ 销售金额: num  29.41 9.72 6.15 5.72 5.57 ...$ 客户数量: num  141.3 84.7 95 98.5 58.3 ...
#查看数据前4行
> head(a,n=4)网点分类  销售金额  客户数量
1   store1 29.408587 141.33560
2   store2  9.719984  84.67674
3   store3  6.154773  95.00602
4   store4  5.721835  98.48247
#将第一个指标划分为3类
res1<-kmeans(a$销售金额,3)
#将第二个指标划分为3类
res2<-kmeans(a$客户数量,3)
#将聚类结果按列合并在数据集中
res3<-cbind(a,res1$cluster,res2$cluster)
#查看前4行数据
> head(res3,n=4)网点分类  销售金额  客户数量 res1$cluster res2$cluster
1   store1 29.408587 141.33560            3            1
2   store2  9.719984  84.67674            1            2
3   store3  6.154773  95.00602            1            2
4   store4  5.721835  98.48247            1            2
#两个指标的聚类中心
> res1$centers[,1]
1  5.519207
2  2.566558
3 29.408587
> res2$centers[,1]
1 123.11407
2  86.39321
3  64.49325
#导出聚类结果
write.csv(res3,file='res3.csv')

因为聚类结果已经划分为3类,因此只要将3类结果赋予对应分值,然后按照权重计算出结果,解释出各个分类群体对应业务含义(其实就是打标签),就完成了门店的分类工作。

实战二:

老板需求:对我们的门店数据集进行分类

需求解析:这是一个很普遍的情况~~这里业务场景没有指定数量,也没有对指标赋予权重,我们要做的是将两个指标:销售金额与客户数量一起作为聚类的指标,参与聚类,得出结果,打出标签!考虑到数据单位不同,建议处理使用数据时进行标准化处理。

#载入factoextra包
library(factoextra)
#读入需要聚类的数据
a<-read.csv("testdata.csv",header=TRUE)
str(a)
#对数据进行标准化处理,需要去掉非数字的列
a1<-a[,-1]
b<-scale(a1)
#设置随机种子,保证试验客重复进行
set.seed(123)
#确定最佳聚类个数,使用组内平方误差和法
fviz_nbclust(b,kmeans,method="wss")+geom_vline(xintercept=4,linetype=2)

实用!这里函数直观给出最佳分类个数:4

#根据最佳聚类个数,进行kmeans聚类
res<-kmeans(b,4)
#将分类结果放入原数据集中
res1<-cbind(a,res$cluster)
#导出最终结果
write.csv(res1,file='res1.csv')
#查看最终聚类图形
fviz_cluster(res,data=a1)

从图形可以看出fviz_cluster()函数功能还是非常强大,可视化效果很直观清晰,12号门店单独一类,6号门店单独一类,13号、9号等6家门店一类,11号、4号等9家一类,你需要做的是给这四类门店打标签,给出合理的业务描述,那么工作才算完成!

今天的分享就到这里,欢迎交流,下次再见!

R语言聚类分析-kmeans聚类分析实战相关推荐

  1. R语言可视化韦恩图实战:VENN DIAGRAM

    R语言可视化韦恩图实战:VENN DIAGRAM #韦恩图 # load Venn diagram package library("VennDiagram")# move to ...

  2. R语言绘制空白图实战

    R语言绘制空白图实战 目录 R语言绘制空白图实战 #绘制空白图1 #绘制空白图2 #绘制空白图3

  3. R语言ggplot2可视化散点图实战:绘制基础散点图、为所有散点添加标签、只为大于阈值的散点添加标签

    R语言ggplot2可视化散点图实战:绘制基础散点图.为所有散点添加标签.只为大于阈值的散点添加标签 目录

  4. R语言导入SPSS文件实战

    R语言导入SPSS文件实战 目录 R语言导入SPSS文件实战 #导入SPSS文件的基本语法 #包的安装和导入

  5. R语言导入.dta文件实战

    R语言导入.dta文件实战 #导入.dta文件的基本语法 R的导入.dta文件最简单方法是使用haven库中的read_dta()函数. 此函数使用以下基本语法: data <- read_dt ...

  6. R语言Eta squared计算实战:Eta squared表示可以用模型中给定的变量解释的方差的比例、拟合方差分析模型(two-way ANOVA)、计算Eta Squared

    R语言Eta squared计算实战:Eta squared表示可以用模型中给定的变量解释的方差的比例.拟合方差分析模型(two-way ANOVA).计算Eta Squared 目录

  7. R语言KNN模型数据分类实战

    R语言KNN模型数据分类实战 目录 R语言KNN模型数据分类实战 #KNN基本原理 #案例分析 ​#数据集说明

  8. R语言White’s检验实战:检验回归模型中是否存在异方差性(heteroscedasticity)、发生了异常差(heteroscedasticity)问题如何解决

    R语言White's检验实战:检验回归模型中是否存在异方差性(heteroscedasticity).发生了异常差(heteroscedasticity)问题如何解决 目录

  9. R语言数据热力图绘制实战(基于原生R函数、ggplot2包、plotly包)

    R语言数据热力图绘制实战(基于原生R函数.ggplot2包.plotly包) 目录 R语言数据热力图绘制实战(基于原生R函数.ggplot2包.plotly包)

  10. R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数)

    R语言读取excel文件实战(read.xlsx函数.read_excel函数.read.xlsx函数.Write函数) 目录 R语言读取excel文件实战(read.xlsx函数.read_exce ...

最新文章

  1. oracle表中怎么去重复,oracle去掉表重复数据
  2. SAP RETAIL MP30为物料Execute Forecast,报错- Status Forecast not defined –
  3. handlebars.js 用 br替换掉 内容的换行符
  4. show processlist结果筛选(转)
  5. Linux简介、什么是Linux
  6. JAVA中报错AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@f70ee1)
  7. 13号线ab线规划图_大连地铁2050路线规划图
  8. 适配器模式在Mybatis中的妙用
  9. python入门教材论坛_GitHub - aisuhua/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...
  10. 多目标跟踪MOT评价指标
  11. 【CF Contest-1251 E2】Voting (Hard Version)【贪心】
  12. 李航统计学习方法 Chapter1 统计学习方法概论
  13. 数学建模国赛-2015A太阳影子定位再研究(未完)
  14. adb 备份和还原apk应用数据
  15. 食品药品舆情传播规律分析
  16. 1425:【例题4】加工生产调度
  17. 数据结构—排序二叉树
  18. 纪念相对论发表110周年
  19. Java基础学习笔记(十九)—— 多线程(1)
  20. 555 定时器及其应用---报警电路

热门文章

  1. 解决小牛电动自行车电池不能输出电压
  2. 微信小程序的页面布局(1)
  3. 数据库关闭的四种方式
  4. BP神经网络算法 原理讲解以及底层代码复现
  5. RB750 固件升级 图文
  6. ug草图精度怎么设置_UG怎么设置草图尺寸? UG草图尺寸的编辑方法
  7. 图片视频音频开源文件转换器file-converter
  8. JavaScript菜鸟教程笔记
  9. Excel分压电阻计算
  10. matlab中全局变量的作用域,【转载】Matlab的global变量