To calculate the Dunn index manually, you need to follow these steps:
- Determine the minimum distance between observations in different clusters (inter-cluster distance).
- Determine the maximum diameter (the largest distance between any two points) of all the clusters (intra-cluster distance).
- Calculate the Dunn index as the ratio of the minimum inter-cluster distance to the maximum intra-cluster distance.
Here's a simple example of how you might implement this in MATLAB. This example assumes you have a dataset X and the cluster assignments idx for each observation in X.
function dunnIndex = calculateDunnIndex(X, idx)
uniqueClusters = unique(idx);
nClusters = length(uniqueClusters);
% Calculate inter-cluster distances
minInterClusterDistance = inf;
for i = 1:nClusters
for j = i+1:nClusters
clusterIDistance = pdist2(X(idx==uniqueClusters(i),:), X(idx==uniqueClusters(j),:), 'euclidean', 'Smallest', 1);
minInterClusterDistance = min(minInterClusterDistance, min(clusterIDistance));
end
end
% Calculate intra-cluster distances (diameters)
maxIntraClusterDistance = 0;
for i = 1:nClusters
clusterIDistance = pdist(X(idx==uniqueClusters(i),:), 'euclidean');
maxIntraClusterDistance = max(maxIntraClusterDistance, max(clusterIDistance));
end
% Calculate Dunn index
dunnIndex = minInterClusterDistance / maxIntraClusterDistance;
end