无监督学习 聚类分析③

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

确定最佳聚类数目

  • 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 = "支持指标数")
img_5ba564b0600a2bc02f7d41e17b659df1.png

可以看到有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)

img_50d9a0267d9b78ff8c05483e2428af52.png

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

  • factoextra包


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

img_306be0e4e71c5584c001f45575d82262.png

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

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

img_72b9568db02e8a839a7d0b4e429d1556.png
img_9144f281ef8537935bfc95b838accd5c.png
目录
相关文章
|
8月前
|
存储 移动开发 算法
SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律
SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律
|
8月前
|
机器学习/深度学习 算法 数据挖掘
【视频】决策树模型原理和R语言预测心脏病实例|数据分享(下)
【视频】决策树模型原理和R语言预测心脏病实例|数据分享
|
8月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归分析连续变量和分类变量之间的“相关性“
R语言逻辑回归分析连续变量和分类变量之间的“相关性“
|
8月前
|
存储 Python
t-sne方法:观察类别区分度
背景:一个二分类任务。 目的:尝试使用t-sne方法,观察这两个类别是否是可分的。
59 0
|
机器学习/深度学习 存储 自然语言处理
机器学习算法(一): 基于逻辑回归的分类预测
机器学习算法(一): 基于逻辑回归的分类预测
24048 1
机器学习算法(一): 基于逻辑回归的分类预测
|
机器学习/深度学习 存储 数据挖掘
聚类分析①
聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。
208 0
聚类分析①
|
机器学习/深度学习 算法
②机器学习分类算法之朴素贝叶斯
机器学习分类算法之朴素贝叶斯
144 0
②机器学习分类算法之朴素贝叶斯
|
机器学习/深度学习 算法 计算机视觉
【预测模型】基于极端随机树实现数据回归预测和分类附matlab代码
【预测模型】基于极端随机树实现数据回归预测和分类附matlab代码
|
机器学习/深度学习 算法 数据挖掘
机器学习(二)聚类的DBSCAN方法及学生上网聚类分析
一种基于密度的聚类算法: • 聚类的时候不需要预先指定簇的个数 • 最终的簇的个数不定
527 0
机器学习(二)聚类的DBSCAN方法及学生上网聚类分析
|
机器学习/深度学习 数据采集 算法
【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )
【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )
873 0