MATLAB聚类评价指标计算
发现网上很少关于MATLAB聚类评价指标如CHI、DBI以及轮廓系数的计算,其实使用一个内置函数就搞定了,但是看到很多人在重复造轮子。
evalclusters()函数
用法:
eva= evalclusters(data,clust,'xxx');
data:不带标签的原始数据。
clust:聚类后的标签,参数可以是字符串或者矩阵,字符串了话就要写matlab规定的聚类算法,比如’kmeans’。如果你用的不是matlab自带的聚类算法去聚类的,而是想评估自己写的聚类算法性能,那么clust就填写你聚类结果的标签矩阵 Label (标签) 就行了,比如你的数据data是NM的,N是样本个数,M是特征维数。那么标签矩阵 Label (标签) 就是N1的矩阵,代表聚类后每个样本的标签,这样就可以输出评估结果了。
‘xxx’:可以选择四种评价指标:’CalinskiHarabasz’ | ‘DaviesBouldin’ | ‘ gap (差距) ’ | ‘silhouette’
‘CalinskiHarabasz’: Calinski-Harabasz index (指数) (CHI,越大越好)
‘DaviesBouldin’: Davies-Bouldin index (指数) (用的最多,越小越好)
‘ gap (差距) ’: gap (差距) statistic (统计) (越大越好)
‘silhouette’: silhouette coefficient (SC,轮廓系数,越大越好)
MATLAB代码
1 | clear |
运行结果
1 | DBI_1 = 0.614370044401414; % 越小越好 |