聚类评价指标FMI的matlab代码
时间: 2024-06-16 17:05:52 浏览: 15
FMI(Fowlkes-Mallows Index)是一种常用的聚类评价指标,用于衡量聚类结果与真实标签之间的相似度。以下是使用Matlab实现FMI的代码示例:
```matlab
function fmi = calculateFMI(clusterLabels, trueLabels)
% 计算聚类评价指标FMI
% 输入参数:
% clusterLabels:聚类结果的标签
% trueLabels:真实标签
% 输出参数:
% fmi:FMI值
n = length(clusterLabels); % 样本数量
C = max(clusterLabels); % 聚类簇的数量
K = max(trueLabels); % 真实标签的数量
% 计算聚类结果的同簇样本对数tp、真实标签的同簇样本对数tp和不同簇样本对数fp
tp = 0;
fp = 0;
for i = 1:C
for j = 1:K
nij = sum(clusterLabels == i & trueLabels == j);
tp = tp + nij * (nij - 1) / 2;
end
fp = fp + sum(clusterLabels == i) * (sum(clusterLabels == i) - 1) / 2;
end
% 计算FMI值
fn = n * (n - 1) / 2 - tp - fp;
precision = tp / (tp + fp);
recall = tp / (tp + fn);
fmi = sqrt(precision * recall);
end
```
使用该函数,你可以将聚类结果的标签和真实标签作为输入参数传入,即可计算得到FMI值。