-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_main.m
108 lines (93 loc) · 3.69 KB
/
run_main.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
% We test our ESPRA approach on synthetic datasets which generated by
% Newman's generator. Other two methods, FacetNet and DYNMOGA, can be used
% for comparison.
% The scrip first generates synthetic dataset by Newman's generator. This
% generator is implemented by Yu-Ru Lin (see function gen_syn2.m).
% The code for FacetNet is not included. Please contact Dr. Yu-Ru Lin
% <[email protected]> if you need the code.
% The code for DYNMOGA is not included. Please contact Dr. Francesco Folino
% <[email protected]> or Dr. Clara Pizzuti <[email protected]> if you
% need the code.
% Author: Peizhuo Wang <[email protected]>
% Sep. 2016
clear all
clc
X = 20; % iteration times
T = 10; % the number of timesteps
N = 256; % the number of nodes
nmi_final = zeros(T, X, 3);
errate_final = zeros(T, X, 3);
z = 3; % z=2,3,4
nc = 0.3; % nc=10%,30%
for x=1:X
disp(['Iteration ', num2str(x)])
% Generate syntentic datasets
[W_Cube,GT_Matrix, nbCluster] = gen_syn2(T,z,round(nc*N/(4*3)),100*x*rand(1),N,16,false);
% [1]evolutionary clustering, alpha=0.8, beta=0.5------
result_my = ESPRA( W_Cube, 0.8, 0.5);
% [2]run FacetNet--------------------------------------
% result_facetnet = cell(T,1);
% lambda = 0.8;
% for i =1:T
% if (i==1)
% [D, H, logl] = snmf_evol(W_Cube{i}, nbCluster, 1e-6, 500);
% else
% [D, H, logl] = snmf_evol(W_Cube{i}, nbCluster, 1e-6, 500,D,H,lambda,H);
% end
% Y = H./repmat(sum(H,2),[1 nbCluster]);
% [A,B] = max(full(Y),[],2);
% result_facetnet{i} = [(1:N)',B];
% end
% [3]run DYNMOGA---------------------------------------
% gen = 50; %set the number of generations
% popSize = 50; % set population size
% CrossoverFraction = 0.8; %set crossover fraction
% mutationRate = 0.2; %set mutation rate
% result_DYNMOGA = cell(T,1);
% Z = run_DYNMOEAmain(W_Cube,nbCluster,gen,popSize,CrossoverFraction,mutationRate);
% for i = 1:T
% result_DYNMOGA{i} = [(1:N)',Z(:,i)];
% end
% performance
nmi_my = zeros(T,1); errate_my = zeros(T,1);
nmi_facetnet = zeros(T,1); errate_facetnet = zeros(T,1);
nmi_DYNMOGA = zeros(T,1); errate_DYNMOGA = zeros(T,1);
for i = 1:T
benchmark_cluster=[(1:N)',GT_Matrix(:,i)];
nmi_my(i) = NMI( result_my{i}, benchmark_cluster );
errate_my(i) = ErrorRate( result_my{i}, benchmark_cluster );
% nmi_facetnet(i) = NMI( result_facetnet{i}, benchmark_cluster );
% errate_facetnet(i) = ErrorRate( result_facetnet{i}, benchmark_cluster );
% nmi_DYNMOGA(i) = NMI( result_DYNMOGA{i}, benchmark_cluster );
% errate_DYNMOGA(i) = ErrorRate( result_DYNMOGA{i}, benchmark_cluster );
end
nmi_final(:,x,1) = nmi_my; errate_final(:,x,1) = errate_my;
nmi_final(:,x,2) = nmi_facetnet; errate_final(:,x,2) = errate_facetnet;
nmi_final(:,x,3) = nmi_DYNMOGA; errate_final(:,x,3) = errate_DYNMOGA;
disp('---------------------------')
end
% figure of performance
figure();
subplot(1,2,1);
hold on;
plot(mean(nmi_final(:,:,1),2), 'sr-', 'LineWidth',2, 'MarkerFaceColor','r');
%plot(mean(nmi_final(:,:,2),2), 'sb-', 'LineWidth',2, 'MarkerFaceColor','b');
%plot(mean(nmi_final(:,:,3),2), 'sm-', 'LineWidth',2, 'MarkerFaceColor','m');
legend('ESPRA','FacetNet','DYNMOGA');
hold off;
grid on
axis([0 T+1 0 1]);
xlabel('Time steps');
ylabel('NMI');
title('NMI over Time steps');
subplot(1,2,2);
hold on;
plot(mean(errate_final(:,:,1),2), '*r-');
%plot(mean(errate_final(:,:,2),2), '*b-');
%plot(mean(errate_final(:,:,3),2), '*m-');
legend('ESPRA','FacetNet','DYNMOGA');
hold off;
grid on
xlabel('Time steps');
ylabel('Error rate');
title('Error rate over Time steps');