comparison toolboxes/FullBNT-1.0.7/bnt/examples/static/HME/hme_class_plot.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:e9a9cd732c1e
1 function fh=hme_class_plot(net, nodes_info, train_data, test_data)
2 %
3 % Use this function ONLY when the input dimension is 2
4 % and the problem is a classification one.
5 % We assume that each row of 'train_data' & 'test_data' is an example.
6 %
7 %------Line Spec------------------------------------------------------------------------
8 %
9 % LineWidth - specifies the width (in points) of the line
10 % MarkerEdgeColor - specifies the color of the marker or the edge color
11 % forfilled markers (circle, square, diamond, pentagram, hexagram, and the
12 % four triangles).
13 % MarkerFaceColor - specifies the color of the face of filled markers.
14 % MarkerSize - specifies the size of the marker in points.
15 %
16 % Example
17 % -------
18 % plot(t,sin(2*t),'-mo',...
19 % 'LineWidth',2,...
20 % 'MarkerEdgeColor','k',... % 'k'=black
21 % 'MarkerFaceColor',[.49 1 .63],... % RGB color
22 % 'MarkerSize',12)
23 %----------------------------------------------------------------------------------------
24
25 class_num=nodes_info(2,end);
26 mn_x = round(min(train_data(:,1))); mx_x = round(max(train_data(:,1)));
27 mn_y = round(min(train_data(:,2))); mx_y = round(max(train_data(:,2)));
28 if nargin==4,
29 mn_x = round(min([train_data(:,1); test_data(:,1)]));
30 mx_x = round(max([train_data(:,1); test_data(:,1)]));
31 mn_y = round(min([train_data(:,2); test_data(:,2)]));
32 mx_y = round(max([train_data(:,1); test_data(:,2)]));
33 end
34 x = mn_x(1)-1:0.2:mx_x(1)+1;
35 y = mn_y(1)-1:0.2:mx_y(1)+1;
36 [X, Y] = meshgrid(x,y);
37 X = X(:);
38 Y = Y(:);
39 num_g=size(X,1);
40 griglia = [X Y];
41 rand('state',1);
42 if class_num<=6,
43 colors=['r'; 'g'; 'b'; 'c'; 'm'; 'y'];
44 else
45 colors=rand(class_num, 3); % each row is an RGB color
46 end
47 fh = figure('Name','Data & decision boundaries', 'MenuBar', 'none', 'NumberTitle', 'off');
48 ms=5; % Marker Size
49 if nargin==4,
50 % ms=4; % Marker Size
51 subplot(1,2,1);
52 end
53 % Plot of train_set -------------------------------------------------------------------------
54 axis([mn_x-1 mx_x+1 mn_y-1 mx_y+1]);
55 set(gca, 'Box', 'on');
56 c_max_train = max(train_data(:,3));
57 hold on
58 for m=1:c_max_train,
59 app_x=train_data(:,1);
60 app_y=train_data(:,2);
61 thisX=app_x(train_data(:,3)==m);
62 thisY=app_y(train_data(:,3)==m);
63 if class_num<=6,
64 str_col=[];
65 str_col=['o', colors(m,:)];
66 plot(thisX, thisY, str_col, 'MarkerSize', ms);
67 else
68 plot(thisX, thisY, 'o',...
69 'LineWidth', 1,...
70 'MarkerEdgeColor', colors(m,:), 'MarkerSize', ms)
71 end
72 end
73 %---hmefwd_generale(net,data,ndata)-----------------------------------------------------------
74 Z=fhme(net, nodes_info, griglia, num_g); % forward propagation trougth the HME
75 %---------------------------------------------------------------------------------------------
76 [foo , class] = max(Z'); % 0/1 loss function => we assume that the true class is the one with the
77 % maximum posterior prob.
78 class = class';
79 for m = 1:class_num,
80 thisX=[]; thisY=[];
81 thisX = X(class == m);
82 thisY = Y(class == m);
83 if class_num<=6,
84 str_col=[];
85 str_col=['d', colors(m,:)];
86 h=plot(thisX, thisY, str_col);
87 else
88 h = plot(thisX, thisY, 'd',...
89 'MarkerEdgeColor',colors(m,:),...
90 'MarkerFaceColor','w');
91 end
92 set(h, 'MarkerSize', 4);
93 end
94 title('Training set and Decision Boundaries (0/1 loss)')
95 hold off
96
97 % Plot of test_set --------------------------------------------------------------------------
98 if nargin==4,
99 subplot(1,2,2);
100 axis([mn_x-1 mx_x+1 mn_y-1 mx_y+1]);
101 set(gca, 'Box', 'on');
102 hold on
103 if size(test_data,2)==3, % we know the classification of the test set examples
104 c_max_test = max(test_data(:,3));
105 for m=1:c_max_test,
106 app_x=test_data(:,1);
107 app_y=test_data(:,2);
108 thisX=app_x(test_data(:,3)==m);
109 thisY=app_y(test_data(:,3)==m);
110 if class_num<=6,
111 str_col=[];
112 str_col=['o', colors(m,:)];
113 plot(thisX, thisY, str_col, 'MarkerSize', ms);
114 else
115 plot(thisX, thisY, 'o',...
116 'LineWidth', 1,...
117 'MarkerEdgeColor', colors(m,:),...
118 'MarkerSize',ms);
119 end
120 end
121 else
122 plot(test_data(:,1), test_data(:,2), 'ko',...
123 'MarkerSize', ms);
124 end
125 for m = 1:class_num,
126 thisX=[]; thisY=[];
127 thisX = X(class == m);
128 thisY = Y(class == m);
129 if class_num<=6,
130 str_col=[];
131 str_col=['d', colors(m,:)];
132 h=plot(thisX, thisY, str_col);
133 else
134 h = plot(thisX, thisY, 'd',...
135 'MarkerEdgeColor', colors(m,:),...
136 'MarkerFaceColor','w');
137 end
138 set(h, 'MarkerSize', 4);
139 end
140 title('Test set and Decision Boundaries (0/1 loss)')
141 hold off
142 end