我正在使用https://www.mathworks.com/matlabcentral/fileexchange/32197-clustering-results-measurement来评估我在 MATLAB 中的聚类准确性,它提供了准确性和rand_index,性能与预期一样正常。但是,当我尝试使用NMI作为指标时,聚类性能极低,我使用的是源代码(https://www.mathworks.com/matlabcentral/fileexchange/29047-normalized-mutual-information)。
实际上我有两个 Nx1 向量作为输入,一个是实际标签,另一个是标签分配。我基本上检查了每个元素内部,我发现即使我有 82% 的 rand_index,NMI 也只有 0.3209。下面是带有 MATLAB 内置 K-Means的 Iris 数据集https://archive.ics.uci.edu/ml/datasets/iris的示例。
data = iris(:,1:data_dim);
k = 3;
[result_label,centroid] = kmeans(data,k,'MaxIter',10000);
actual_label = iris(:,end);
NMI = nmi(actual_label,result_label);
[Acc,rand_index,match] = AccMeasure(actual_label',result_label');
结果:
Auto ACC: 0.820000
Rand_Index: 0.701818
NMI: 0.320912