MATLAB聚类有效性评价指标(内部) MATLAB聚类有效性评价指标(外部)MATLAB聚类有效性评价指标(外部 成对度量)

时间:2022-04-20
本文章向大家介绍MATLAB聚类有效性评价指标(内部) MATLAB聚类有效性评价指标(外部)MATLAB聚类有效性评价指标(外部 成对度量),主要包括MATLAB聚类有效性评价指标(内部) MATLAB聚类有效性评价指标(外部)MATLAB聚类有效性评价指标(外部 成对度量)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

MATLAB聚类有效性评价指标(内部)

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

外部评价指标(需要真实标签),请看:MATLAB聚类有效性评价指标(外部)MATLAB聚类有效性评价指标(外部 成对度量)

    MATLAB中有一个聚类内部评价指标的函数evalclusters(),关于函数的官网,请看:https://www.mathworks.com/help/stats/evalclusters.html

1. evalclusters函数用法

eva= evalclusters(data,clust,'xxx');

data:可以是归一化/标准化之后的。

clust:聚类后的标签,参数可以是字符串或者矩阵,字符串了话就要写matlab规定的聚类算法,比如'kmeans'。如果你用的不是matlab自带的聚类算法去聚类的,而是想评估自己写的聚类算法性能,那么clust就填写你聚类结果的标签矩阵Label就行了,比如你的数据data是N*M的,N是样本个数,M是特征维数。那么标签矩阵Label就是N*1的矩阵,代表聚类后每个样本的标签,这样就可以输出评估结果了。

'xxx':可以选择四种评价指标:'CalinskiHarabasz' | 'DaviesBouldin' | 'gap' | 'silhouette'

'CalinskiHarabasz': Calinski-Harabasz index (CHI,越大越好)

'DaviesBouldin': Davies-Bouldin index(用的最多,越小越好)

'gap': gap statistic (越大越好)

'silhouette': silhouette coefficient (SC,轮廓系数,越大越好)

2. MATLAB程序

实验数据来自:https://www.cnblogs.com/kailugaji/p/10861064.html#_label3_0_1_2,将生成的三维数据存为data.txt。

clear
clc
% 作者:凯鲁嘎吉 https://www.cnblogs.com/kailugaji/
% 用了SC与DBI这两个指标
% label:聚类后的标签,不是真实标签
data_load = dlmread("data.txt");
data = data_load(:, 1:end-1);
label = data_load(:, end); % 真实标签
label_2 = [ones(180, 1); 2.*ones(120, 1)]; % 瞎写的标签
%% 真实标签的评价结果
eva_DBI_1= evalclusters(data,label,'DaviesBouldin'); 
eva_SC_1= evalclusters(data,label,'silhouette'); 
DBI_1 = eva_DBI_1.CriterionValues; % 越小越好
SC_1 = eva_SC_1.CriterionValues; % 越大越好
%% 瞎写的标签的评价结果
eva_DBI_2= evalclusters(data,label_2,'DaviesBouldin'); 
eva_SC_2= evalclusters(data,label_2,'silhouette'); 
DBI_2 = eva_DBI_2.CriterionValues; % 越小越好
SC_2 = eva_SC_2.CriterionValues; % 越大越好
%% 显示评价结果
fprintf("DBI越小越好:DBI(真实标签): %f, DBI(坏标签): %f\n", DBI_1, DBI_2); % 越小越好
fprintf("SC越大越好:SC(真实标签): %f, SC(坏标签): %f\n", SC_1, SC_2); % 越大越好

3. 结果

DBI越小越好:DBI(真实标签): 0.892058, DBI(坏标签): 0.938236
SC越大越好:SC(真实标签): 0.599176, SC(坏标签): 0.574342

4. 参考

[1] https://www.mathworks.com/help/stats/evalclusters.html

原文地址:https://www.cnblogs.com/kailugaji/p/16169796.html