数据科学与R语言

R语言-18聚类

2019-10-04  本文已影响0人  周一ing

介绍及应用

是一种无监督的学习算法,根据样本之间的距离或者其他度量,把相似的样本聚集在一起,从而将样本划分出多个类别。在商业上,聚类可以帮助市场分析人员从消费者数据库中区分出不同的消费群体来,并且概括出每一类消费者的消费模式或者说习惯。

两种基本的聚类思想

1、K 均值(k-means)聚类:定义K个点基于距离慢慢靠拢成K个类的过程

2、层次聚类:每个点都是一个类别,慢慢合并的过程,最终划分几个类别人为指定

R语言聚类(k-中心聚类)

k-中心聚类是基于K-means算法的改进:具体介绍http://shiyanjun.cn/archives/1398.html

library(cluster)
gower_dist<-daisy(highdata,metric="gower")#计算混合类型数据的距离
summary(gower_dist)
#利用轮廓系数来确定最佳的聚类个数
sil_width<-c(NA)
for(i in 2:14){
  pam_fit<-pam(gower_dist,
               diss=TRUE,
               k = i)
  sil_width[i]<-pam_fit$silinfo$avg.width
  
}
#绘制不同聚类个数对应的轮廓系数图,选择轮廓系数不再明显下降对应的聚类个数,这里结果是2
plot(1:14, sil_width,
     xlab = "Number of clusters",
     ylab = "Silhouette Width")
lines(1:14,sil_width)

pam_fit <- pam(gower_dist, diss = TRUE, k = 2) #建立聚类数为2类的聚类模型

pam_results <- highdata %>%
mutate(cluster = pam_fit$clustering) %>%
  group_by(cluster) %>%
  do(the_summary = summary(.))
#展示聚类结果的属性特征
print(pam_results$the_summary)
上一篇 下一篇

猜你喜欢

热点阅读