www.gusucode.com > stats 源码程序 matlab案例代码 > stats/KMeansClusteringExample.m

    %% k-Means Clustering
% This example shows how to use k-Means clustering to partition data.

%% Load Data
rng default  % For reproducibility
load kmeansdata
size(X)

%% Run k-Means with 3 Clusters
idx3 = kmeans(X,3,'Distance','cityblock');

%% 3-Cluster Silhouette Plot
figure
[silh3,h] = silhouette(X,idx3,'cityblock');
h = gca;
h.Children.EdgeColor = [.8 .8 1];
xlabel 'Silhouette Value'
ylabel 'Cluster'

%% Run k-Means with 4 Clusters
idx4 = kmeans(X,4, 'Distance','cityblock','Display','iter');

%% 4-Cluster Silhouette Plot
figure
[silh4,h] = silhouette(X,idx4,'cityblock');
h = gca;
h.Children.EdgeColor = [.8 .8 1];
xlabel 'Silhouette Value'
ylabel 'Cluster'

%% Compute Average Silhouette Values
cluster3 = mean(silh3)
cluster4 = mean(silh4)

%% Run k-Means with 5 Clusters
idx5 = kmeans(X,5,'Distance','cityblock','Replicates',5);
figure
[silh5,h] = silhouette(X,idx5,'city');
h = gca;
h.Children.EdgeColor = [.8 .8 1];
xlabel 'Silhouette Value'
ylabel 'Cluster'
mean(silh5)

%% Run k-Means with 5 Replications
[idx4,cent4,sumdist] = kmeans(X,4,'Distance','cityblock',...
                       'Display','final','Replicates',5);
                   
%% Sum Distances
sum(sumdist)