-
Notifications
You must be signed in to change notification settings - Fork 0
/
NNProb.m
executable file
·179 lines (150 loc) · 4.18 KB
/
NNProb.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
clc;
clear;
%==========================================================================
% Pelatihan JST Probabilistik
% Studi kasus: Penerimaan pegawai
% Input:
% gb: batas bawah interval konstanta gain (pengontrol)
% ga: batas atas interval konstanta gain (pengontrol)
% kuantisasi: tingkat kuantisasi dalam interval gain
% Output:
% Grafik akurasi pada Train Set dan Test Set terhadap konstanta g
%==========================================================================
function PNNTrain(gb,ga,kuantisasi)
Ptrain = ...
[3 3 2; %P1
3 2 2;
3 2 1;
3 1 1;
2 3 2;
2 2 2;
2 2 1;
2 1 1;
1 3 2;
1 2 1;
1 1 2]; %P11
JPtrain = length(Ptrain(:,1));
Ttrain = ...
[1;
1;
1;
0;
1;
1;
1;
0;
1;
0;
1];
Ptest = ...
[3 3 1;
3 1 2;
2 3 1;
2 1 2;
1 3 1;
1 2 2;
1 1 1;];
JPtest = length(Ptest(:,1));
Ttest = [0 1 0 1 0 1 0]';
%----------------------------------------------------------------------------
% TAHAP PERTAMA:
% - Pembentukan unit-unit pola yang di kelompokkan sesuai kelasnya
% - penghitungan jumlah pola pada masing-masing kelas
%----------------------------------------------------------------------------
P0 = ...
[3 1 1;
2 1 1;
1 2 1];
P1 = ...
[3 3 2;
3 2 2;
3 2 1;
2 3 2;
2 2 2;
2 2 1;
1 3 2;
1 1 2];
JP0 = length(P0(:,1)) % Jumlah semua pola latih (11)
JP1 = length(P1(:,1))
%----------------------------------------------------------------------------
% TAHAP KEDUA:
% - Penghitungan total jarak terdekat antara masing-masing pola
% terhadap pola-pola lainnya dalam satu kelas
% - penghitungan smoothing parameter untuk setiap kelas
%----------------------------------------------------------------------------
TMD0 = GetTMD(P0);
TMD1 = GetTMD(P1);
m = length(P0(1,:));
AllAkurasi = [];
for g=gb:kuantisasi:ga,
%------------------------------
% Penghitungan smoothing parameter
%------------------------------
SP0 = (g*TMD0) / JP0;
SP1 = (g*TMD1) / JP1;
DAkurasi = [];
for pp=1:2,
if pp==1,
P = Ptrain;
JP = JPtrain;
T = Ttrain;
else
P = Ptest;
JP = JPtest;
T = Ttest;
end
JumBenar = 0;
for ii=1:JP,
pegawai = P(ii,:);
%---------------------------------
% Penghitungan probabilitas pada kelas 0
%---------------------------------
prob = []; % 1 - D Vektor probabilitas
temp = 0;
for jj=1:JP0,
delta = exp(-(norm(pegawai-P0(jj,:)) / (2*(SP0^2))));
temp = temp + delta;
end
prob = [ prob temp / (((2*pi)^(m/2)) * (SP0^m) * JP0) ];
%---------------------------------
% Penghitungan probabilitas pada kelas 1
%---------------------------------
temp = 0;
for jj=1:JP1,
delta = exp(-(norm(pegawai-P1(jj,:)) / (2*(SP1^2))));
temp = temp + delta;
end
prob = [ prob temp / (((2*pi)^(m/2)) * (SP1^m) * JP1) ];
%---------------------------------
% mencari probabilitas terbesar untuk
% mendapatkan kelas keputusan
%---------------------------------
pmax = find(prob==max(prob));
if length(pmax) > 1,
pmax = pmax(1);
end
if pmax == 1,
keputusan = 0;
end
if pmax == 2,
keputusan = 1;
end
if keputusan == T(ii),
JumBenar = JumBenar + 1;
end
end
Akurasi = JumBenar / JP;
DAkurasi = [ DAkurasi Akurasi ];
end
AllAkurasi = [AllAkurasi; DAkurasi];
end
gvar = [gb:kuantisasi:ga];
figure
plot(gvar, AllAkurasi(:,1), 'k-', gvar, AllAkurasi(:,2), 'k:')
axis([gb ga 0 1.2])
legend('Train Set', 'Test Set')
title('Akurasi JST Probabilistik dengan beberapa variasi konstanta g')
xlabel('konstanta g')
ylabel('Akurasi')
save AllAkurasi.m AllAkurasi
save PNNTrainRes.m P0 P1 JP0 JP1 TMD0 TMD1 m