验证群集结果
validclust的Python项目详细描述
validclust
Validate clustering results
动机
聚类算法通常要求分析者指定数据中存在的簇的数目,通常称为^ {CD1>}。为k
确定适当值的一种方法是使用k
的一系列值对数据进行聚类,然后使用聚类有效性指数(cvi)评估结果聚类的质量。然后选择根据cvi对数据进行最佳分区的k
值。validclust
为分析员处理这个过程,使快速确定k
的最佳值变得非常容易。
安装
您可以从pypi获得稳定版本:
pip install validclust
或者github的开发版本:
pip install git+https://github.com/crew102/validclust.git
基本用法
1.加载库。
importmatplotlib.pyplotaspltfromsklearn.datasets.samples_generatorimportmake_blobsfromvalidclust.validclustimportValidClust
2.创建一些合成数据。数据将集中在4个中心。
data,_=make_blobs(n_samples=500,centers=4,n_features=5,random_state=0)
3.使用ValidClust
确定最佳簇数。下面的代码将使用两种不同的聚类算法将数据划分为2-7个簇,然后计算结果中的各种cvi。
vclust=ValidClust(k=list(range(2,8)),methods=['hierarchical','kmeans'])cvi_vals=vclust.fit_predict(data)print(cvi_vals)#> 2 3 4 5 \#> method index #> hierarchical silhouette 0.645563 0.633970 0.747064 0.583724 #> calinski 1007.397799 1399.552836 3611.526187 2832.925655 #> davies 0.446861 0.567859 0.361996 1.025296 #> dunn 0.727255 0.475745 0.711415 0.109312 #> kmeans silhouette 0.645563 0.633970 0.747064 0.602562 #> calinski 1007.397799 1399.552836 3611.526187 2845.143428 #> davies 0.446861 0.567859 0.361996 0.988223 #> dunn 0.727255 0.475745 0.711415 0.115113 #> #> 6 7 #> method index #> hierarchical silhouette 0.435456 0.289567 #> calinski 2371.222506 2055.323553 #> davies 1.509404 1.902413 #> dunn 0.109312 0.116557 #> kmeans silhouette 0.468945 0.334379 #> calinski 2389.531071 2096.945591 #> davies 1.431102 1.722117 #> dunn 0.098636 0.072423
很难从上面显示的原始cvi值看出k
的最佳值。并不是所有的CVI都在0-1分范围内,分数越低,一些指标的聚类结果越好。ValidClust
的plot()
方法解决了这个问题,首先对cvi进行标准化,然后在热图中显示结果。
vclust.plot()
对于上述网格中的每一行(即,对于每个聚类方法/cvi对),较暗的单元格与较高质量的聚类相关联。从这个图中我们可以看到,每个方法/索引对似乎都指向4作为k
的最佳值。