-
Notifications
You must be signed in to change notification settings - Fork 0
/
cleval.m
56 lines (49 loc) · 2.51 KB
/
cleval.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function V = cleval(X, CR, truelabels)
%==========================================================================
% FUNCTION: V = cleval(X, CR, methods, truelabels)
% DESCRIPTION: This function computes validity scores for clustering
% results and display a comparison bar chart
%
% INPUTS: X = a dataset, rows of X correspond to observations; columns
% correspond to variables (exclude class labels!!)
% CR = a matrix of clustering results (exclude row and cloumn headers!!)
% methods = a set of legend strings (clustering methods) to be shown in
% the bar chart
% truelabels =(optional) known cluster labels for each data points (N-by-1 vector)
%
% OUTPUTS: V = matrix of cluster validity scores
%
% NOTE1: format of 'V' ==> each column refers to each clustering method
% row2 = Compactness (CP),
% row3 = Davies-Bouldin Index (DB),
% row4 = Dunn Index,
% row5 = Adjust Rand Index (AR),
% row6 = Rand Index (RI),
% row7 = Classification Accuracy (CA)
% The last three rows (AR, RI and CA) will be displayed only when a user specify 'truelabels' argument
% NOTE2: CP and DB: low values indicate good cluster structures
% Dunn, AR, RI and CA: large values indicate better cluster quality
%==========================================================================
% copyright (c) 2010 Iam-on & Garrett
%==========================================================================
V = [];
for i=1:size(CR,2)
cp = valid_compactness(X, CR(:,i)); %compute Compactness index
Value=Devation(X, CR(:,i));
%db=0;
% dunn=0;
% [db, dunn] = valid_DbDunn(X',CR(:,i)); %compute Davies-Bouldin index and Dunn index
% C = unique(truelabels); %all clusters
% nClusters = length(C); %number of clusters
% dtype=1;
%[DB,CH,Dunn,KL,Han,~] = valid_internal_deviation(X,CR(:,i),dtype);
%[ Gs ] = global_silhouette(CR(:,i) , X , nClusters);
% [AR,RI]=valid_RandIndex(CR(:,i),truelabels); % compute Rand index and its variations
% ca = valid_CA(CR(:,i), truelabels); %compute Classification Accuracy
%NMI = Cal_NMI(CR(:,i),truelabels);
% [~, ~, Rn, ~, ~, ~, ~] = exMeasure(CR(:,i),truelabels);
%[AR,RI,MI,HI]=RandIndex(CR(:,i),truelabels);
V = [V [Value cp]];
end
% format result
%V = [['Validity Index' methods]; [xlabel num2cell(V)]];