Jaccard系数聚类分析-R语言

在市场调研或者其他行业,常常提及人群聚类 or 用户细分等。而我们使用的源数据往往是根据一些生活观、消费观、价值观、社交观等描述性词汇进行的多选结果。In other words,也就是0与1的二分类变量。

由于源数据的特殊性,使用一般的均值聚类与层次聚类,往往得不到理想的结果,同是也无科学依据;而Jaccard系数聚类恰恰适用于二分类变量聚类。

言归正传,现在就开始介绍Jaccard系数聚类~
(具体的Jaccard系数理论依据请自行问度娘)

1.第一步是:导入数据

library(readxl)
library(vegan)
data<-read_excel(path="C:/Users/admin/Desktop/test.xlsx",sheet="data")
head(data) 

可以看到源数据是:

A tibble: 6 x 17
种 区域1 区域2 区域3 区域4 区域5 区域6 区域7 区域8 区域9 区域10 区域11 区域12 区域13

1 红胫短鼻蝗~ 0 0 0 1 0 0 0 0 0 0 0 0 0
2 青海短鼻蝗~ 0 0 0 0 1 0 0 0 0 0 0 0 0
3 郑氏短鼻蝗~ 0 0 0 1 0 0 0 0 0 0 0 0 0
4 短额负蝗 0 0 0 1 0 0 1 0 0 0 0 0 0
5 无齿稻蝗 0 0 0 1 0 0 0 0 0 0 0 0 0
6 短翅稻蝗 0 0 0 1 0 0 0 0 0 0 0 0 0
…with 3 more variables: 区域14 , 区域15 , 区域16

2.第二步是:隐藏行名称
考虑中文行名称,聚类过程中常常无法被识别,因此先隐藏行名称

rownames(data) <- data$种
data$种<-NULL

3.第三步是:Jaccard系数聚类,且同时作谱系图
本文以Jaccard系数=0.5为聚类标准

d <- vegdist(data, method = "jaccard"); d
fit <- hclust(d, method = "single")
plot(fit, labels=rownames(data),cex=0.5)
abline(h = 0.5)

可以看到谱系图如下:

Jaccard系数聚类分析-R语言_第1张图片

4.第四步是:保存聚类成员
我自觉这一步不是很智能,若有更好的保存方法,请留言指正,谢谢~

result<-cutree(fit,k=16)
cluster<-table(rownames(data),result)
write.csv(cluster,"C:/Users/admin/Desktop/聚类结果.csv",row.names = F)

以上就是Jaccard系数聚类的全部内容了,后续会更新其他聚类,可以关注哦~
当然由于我还处于初学阶段,难免存在很多不足,还望大神多加指正~

文/唏颜
一个偶尔三分钟、会耍代码的小白~
请珍惜我的整理,转载请联系作者获得授权,并标注“唏颜”这个小白~

你可能感兴趣的:(R)