无监督学习 聚类分析③

确定最佳聚类数目

  • Nbclust包

Nbclust包是《R语言实战》上一个包,定义了几十个评估指标,聚类数目从2遍历到15(自己设定),然后通过这些指标看分别在聚类数为多少时达到最优,最后选择指标支持数最多的聚类数目就是最佳聚类数目。

library(gclus)

data(wine)

head(wine)

dataset <- wine[,-1] #去除分类标签
dataset <- scale(dataset)

library(NbClust)

set.seed(1234) #因为method选择的是kmeans,所以如果不设定种子,每次跑得结果可能不同
nb_clust <- NbClust(dataset,  distance = "euclidean",
                    min.nc=2, max.nc=15, method = "kmeans",
                    index = "alllong", alphaBeale = 0.1)


barplot(table(nb_clust$Best.nc[1,]),
        xlab = "聚类数",ylab = "支持指标数")

可以看到有16个指标支持最佳聚类数目为3,5个指标支持聚类数为2,所以该方法推荐的最佳聚类数目为3.

  • SSE(组内平方误差和)
wssplot <- function(data, nc=15, seed=1234){
  wss <- (nrow(data)-1)*sum(apply(data,2,var))
  for (i in 2:nc){
    set.seed(seed)
    wss[i] <- sum(kmeans(data, centers=i)$withinss)
  }
  plot(1:nc, wss, type="b", xlab="Number of Clusters",
       ylab="Within groups sum of squares")}

wssplot(dataset)

随着聚类数目增多,每一个类别中数量越来越少,距离越来越近,因此WSS值肯定是随着聚类数目增多而减少的,所以关注的是斜率的变化,但WWS减少得很缓慢时,就认为进一步增大聚类数效果也并不能增强,存在得这个“肘点”就是最佳聚类数目,从一类到三类下降得很快,之后下降得很慢,所以最佳聚类个数选为三

  • factoextra包
library(factoextra)
library(ggplot2)
set.seed(1234)
fviz_nbclust(dataset, kmeans, method = "wss") +
  geom_vline(xintercept = 3, linetype = 2)

选定为3类或者2类为最佳聚类数目 用该包下的fviz_cluster函数可视化一下聚类结果

km.res <- kmeans(dataset,3)
fviz_cluster(km.res, data = dataset)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AILearning

【机器学习实战】第7章 集成方法 ensemble method

第7章 集成方法 ensemble method ? 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:...

2689
来自专栏SIGAI学习与实践平台

自然场景文本检测识别技术综述

白蛇: 白纸黑字的扫描文档识别技术已经很成熟,而自然场景图像文本识别的效果还不理想。倾斜字、艺术字、变形字、模糊字、形似字、残缺字、光影遮蔽、多语言混合文本等应...

6662
来自专栏机器之心

教程 | 如何估算深度神经网络的最优学习率

3745
来自专栏智能算法

深度学习三人行(第7期)----深度学习之避免过拟合(正则化)

今天我们一起学习下深度学习中如何避免过拟合,我们多多交流,共同进步。本期主要内容如下:

2034
来自专栏marsggbo

论文笔记系列-Neural Architecture Search With Reinforcement Learning

神经网络在多个领域都取得了不错的成绩,但是神经网络的合理设计却是比较困难的。在本篇论文中,作者使用 递归网络去省城神经网络的模型描述,并且使用 增强学习训练RN...

3953
来自专栏大数据挖掘DT机器学习

决策树原理与应用:C5.0

分类预测指通过向现有数据的学习,使模型具备对未来新数据的预测能力。对于分类预测有这样几个重要,一是此模型使用的方法是归纳和提炼,而不是演绎。非数据挖掘类的软件的...

4686
来自专栏FSociety

通过一元线性回归模型理解梯度下降法

关于线性回归相信各位都不会陌生,当我们有一组数据(譬如房价和面积),我们输入到excel,spss等软件,我们很快就会得到一个拟合函数:

1743
来自专栏AI科技大本营的专栏

如何让渣画质图片达到逼真效果,试试GAN吧

翻译 | 梁红丽 编辑 | Just 【AI科技大本营导读】在最终视觉呈现效果上,现有的用于极限学习图片压缩的算法似乎都不尽人意,本文作者则使用了 GAN,允许...

3709
来自专栏专知

【深度】Deep Visualization:可视化并理解CNN

【导读】本文利用非参数化方法来可视化CNN模型,希望帮助理解CNN。 专知公众号转载已获知乎作者余俊授权。 原文地址: https://zhuanlan.zhi...

7914
来自专栏机器学习算法工程师

全面解读Group Normbalization-(吴育昕-何凯明 重磅之作)

一句话概括,GroupNormbalization(GN)是一种新的深度学习归一化方式,可以替代BN。

1774

扫码关注云+社区

领取腾讯云代金券