Matlab 6.1 digunakan dalam pembuatan kode program m-file nya. Program mempunyai 2 fungsi utama yaitu pertama untuk klasifikasi dimana data training dan data testing dimasukkan dan yang kedua data contoh tersedia ( prior,rataan,matrik kovariance,inverse matrik kov,determinan,sudah diketahui) dan tinggal memasukkan data testingnya. Kaedah klasifkasi yang digunakan adalah kaedah Bayes untuk yang berdimensi 2 dan multivariate.
Data Training dan Data Testing Dimasukkan
Data Contoh Tersedia dan Data Testing dimasukkan
PA = 0.5
PB = 0.25
PC = 0.25
mu(A) = [ 0.36 ;1.41 ]
mu(B) = [ -0.11;1.69 ]
mu(C) = [ 1.61 ;1.80 ]
sigma(A) = [ 0.97 0.91 ;0.91 1.21 ]
sigma(B) = [ 1.29 0.10 ;0.10 0.60 ]
sigma(C) = [ 0.53 0.57 ;0.57 0.82 ]
Inv(sigma(A)) = [ 4.3 -3.5 ;-3.5 3.8 ]
Inv(sigma(B)) = [ 0.8 -0.1 ;-0.1 1.7 ]
Inv(sigma(C) = [ 7.5 -5.2 ;-5.2 4.8 ]
detA = 0.26
detA = 0.76
detA = 0.11
Kode Progam
% Program klasifikasi secara dinamis
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Untuk mengklasifikasi vektor input (F1,F2,F3,…,Fjfeature)
% ke dalam kelas output ( G1,G2,G3,…,Gjkelas)
% algoritma:MLE dan Empiris Kernel
% note:Dinamis jml kelas,jml feature,dan jml datanya …
% Menggunakan type data structure yang didukung Matlab
% Terdapat 2 pilihan pada program ini:
% 1. anda menginput data training dan data testing
% 2. telah tersedia rataan,kov matrix,inv kov matrik,
% prior prob,determinan,dan anda tinggal meng-input
% data testing. 3 kelas tersedia )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% clear screen,clear variable dan tutup semua figure window
clc;clear all;close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% pinya = inisiasi pi number
% enya = inisiasi exp number
% jsample = menampung jumlah sample semua kelas yang ada
% jkelas = menampung jumlah kelas
% jfeature = menampung jumlag feature dari masing-masing data
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pinya = 3.14;% inisiasi pi number
enya = 2.17;% inisiasi e number
jsample = 0;% inisiasi jumlah sample data training = 0
pilihan = input(‘Anda ingin input data atau menggunakan data contoh:‘);% masukkan pilihan 1 input 2 dt contoh
if pilihan == 1 % data input
jkelas = input(‘Masukkan jumlah kelas:‘) % jumlah kelas
jfeature = input(‘Masukkan jumlah feature dari sample data:‘);% jumlah feature
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% proses untuk memasukkan data training:indek structure = kelas
% sesuai dengan jumlah kelas,jumlah data dan jumlah features dari
% masukkan sebelumnya
% jdata = menampung jumlah data sample masing2 kelas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for kelaske = 1:jkelas % loop1 sejumlah kelas
sprintf(‘Kelas %d ‘,kelaske) % tampilkan data kelas
jdata = input(‘Masukkan jumlah sample data training:‘);% masukkan jml data perkelas
datanya = [];% inisiasi variabel temporary
for datake = 1:jdata % loop2 sejumlah data
for featureke = 1:jfeature % loop3 sejumlah feature
sprintf(‘Masukkan Datake %d,Featureke %d:‘,datake,featureke)
datanya(datake,featureke) = input (”);% entri data
end % akhir dari loop3
end % akhir dari loop2
kelasnya(kelaske).data = datanya % masukkan data training
kelasnya(kelaske).jdata = jdata % jumlah data per kelas
jsample = jsample + jdata % akumulasi jumlah sample per kelas
end % akhir dari loop1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% memproses rataan,matrik kova,inverse dari matrik kov dan
% determinan dari masing-masing kelas dan Prior probaliliti adalah
% sama dengan jumlah sample per group dibagi jumlah total sample% Pi = ni/N
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for kelaske = 1:jkelas % loop sejumlah kelas
kelasnya(kelaske).prior = kelasnya(kelaske).jdata / jsample;
kelasnya(kelaske).u = mean(kelasnya(kelaske).data)’;% rata-rata tiap kelas
kelasnya(kelaske).c = cov(kelasnya(kelaske).data);% matrik kov tiap kls
kelasnya(kelaske).cinv = inv(kelasnya(kelaske).c); % matrik inv kov tiap kls
kelasnya(kelaske).det = det(kelasnya(kelaske).c); % determinan tiap kls
end % akhir dari loop
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else % data contoh
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% memproses rataan,matrik kova,inverse dari matrik kov dan
% determinan dari masing-masing kelas dan Prior probaliliti adalah
% sama dengan jumlah sample per group dibagi jumlah total sample% Pi = ni/N
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
jkelas = 3; % default jkelas = 2
jfeature = 2; % default jfeature = 2
kelasnya(1).prior = 0.5;% prior kelas 1
kelasnya(1).u = [ 0.36 ;1.41 ]; % rata-rata kelas 1
kelasnya(1).c = [ 0.97 0.91 ;0.91 1.21 ];% matrik kov kelas 1
kelasnya(1).cinv = [ 4.3 -3.5 ;-3.5 3.8 ] % matrik inv kov kelas 1
kelasnya(1).det = 0.26; % determinan kelas 1
kelasnya(2).prior = 0.25;% prior kelas 2
kelasnya(2).u = [ -0.11 ;1.67 ]; % rata-rata kelas 2
kelasnya(2).c = [ 1.29 0.10 ;0.10 0.60 ];% matrik kov kelas 2
kelasnya(2).cinv = [ 0.8 -0.1 ;-0.1 1.7 ];% matrik inv kov kelas 2
kelasnya(2).det = 0.76; % determinan kelas 2
kelasnya(3).prior = 0.25;% prior kelas 3
kelasnya(3).u = [ 1.61 ;1.80 ]; % rata-rata kelas 3
kelasnya(3).c = [ 0.53 0.59 ;0.57 0.82 ];% matrik kov kelas 3
kelasnya(3).cinv = [ 7.5 -5.2 ;-5.2 4.8 ];% matrik inv kov kelas 3
kelasnya(3).det = 0.11; % determinan kelas 3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% proses melakukakan klasifikasi pada data testing %
% lagi = menampung data berisi jawaban apabila user ingin mengulang%
% klasifikasi pada data yang lain %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lagi = ‘Y’;%inisiasi jawaban user
while ((lagi == ‘Y’) | (lagi == ‘y’))
clear testnya;
jdata = input(‘Masukkan jumlah sample data testing:‘);
for datake = 1:jdata
clear datanya;
for featureke = 1:jfeature
sprintf(‘Masukkan Datake %d,Featureke %d:‘,datake,featureke)
datanya(1,featureke) = input (”);
end
testnya(datake).data = datanya’;
testnya(datake).kflag = 0;
for kelaske = 1:jkelas
testnya(datake).ptest(kelaske) = 0;
end
end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Proses klasifikasi thd data testing dengan MLE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for datake = 1:jdata % loop1 sejumlah data testing
kflag = 0 % inisiasi var temporary
for kelaske = 1:jkelas % loop sejumlah kelas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% p(wi/x) = ( 1/(2pi*sqrt(det)) ) * … %
% exp^( –1/2* ( tranpose(x-ui) * ( cinv * (x-ui)) ) ) * p(wi) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
right1 = testnya(datake).data –kelasnya(kelaske).u
right2 = ( transpose(right1) * kelasnya(kelaske).cinv ) * right1
right3 = -0.5 * right2
right4 = enya ^ right3
left1 = sqrt(kelasnya(kelaske).det)
left2 = ( 2 * pinya )
left3 = 1 / ( left2 * left1 )
testnya(datake).ptest(kelaske) = left3 * right4 * kelasnya(kelaske).prior
if kflag <testnya(datake).ptest(kelaske)
testnya(datake).kflag = kelaske
end
kflag = testnya(datake).ptest(kelaske)
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Proses klasifikasi thd data testing dengan Empiris Kernel %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if pilihan == 1 % Empiris kernel untuk pilihan 1 saja
for kelaske = 1:jkelas % loop sejumlah kelas
kernelnya(kelaske).jmlexp = 0;
end
for datake = 1:jdata % loop1 sejumlah data testing
kflag = 0 % inisiasi var temporary
h = 1 % inisiasi varibel pemulus
for kelaske = 1:jkelas % loop sejumlah kelas
for sampleke = 1:kelasnya(kelaske).jdata % loop sejumlah sample
kernelnya(kelaske).jmlexp = kernelnya(kelaske).jmlexp + …
exp(-0.5*(testnya(datake).data’-kelasnya(kelaske).data(sampleke,:))*…
(testnya(datake).data’-kelasnya(kelaske).data(sampleke,:))’/h.^jfeature)
end
end
for kelaske = 1:jkelas % loop sejumlah kelas
ktestnya(datake).ptest(kelaske) = kernelnya(kelaske).jmlexp/…
(sqrt(2*pi)*kelasnya(kelaske).jdata*h.^jfeature)
if kflag <ktestnya(datake).ptest(kelaske) % cek prob terbesar
ktestnya(datake).kflag = kelaske
end
kflag = ktestnya(datake).ptest(kelaske) % isi prob terbesar
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Proses pelaporan data hasil klasifikasi %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display( sprintf(‘=====================================
================’) );
display( sprintf(‘| Hasil klasifikasi dengan MLE |’) );
display( sprintf(‘=====================================
================’) );
for datake = 1:jdata % loop1 sejumlah data testing
for kelaske = 1:jkelas % loop sejumlah kelas
display( sprintf(‘Kelas:%d’,kelaske) );
display( sprintf(‘=====================================
================’) );
if pilihan == 1 % data input
display( sprintf(‘Data Training:‘) );
display( kelasnya(kelaske).data ); % data testing
end
display( sprintf(‘Prior :‘) );
display( kelasnya(kelaske).prior ); % prior
display( sprintf(‘Mean :‘) );
display( kelasnya(kelaske).u );% rata-rata
display( sprintf(‘Cov Matrik:‘) );
display( kelasnya(kelaske).c );% matrik kov
display( sprintf(‘Inv Cov Matrik:‘) );
display( kelasnya(kelaske).cinv ); % matrik inv kov
display( sprintf(‘Determinan:‘) );
display( kelasnya(kelaske).det);% determinan
display( sprintf(‘======================================
===============’) );
display( sprintf(‘Data Testing :‘) );
display( testnya(datake).data ); % prior
display( sprintf(‘Peluang data testing di kelas %d:%15.5f’,kelaske,testnya(datake).ptest(kelaske)) );
display( sprintf(‘======================================
===============’) );
end
display( sprintf(‘Sehingga dengan MLE untuk data testing
ini masuk ke kelas:%d’,testnya(datake).kflag) );
end
if pilihan == 1 % Empiris kernel untuk pilihan 1 saja
display( sprintf(‘=======================================
==============’) );
display( sprintf(‘| Hasil klasifikasi dengan Empiris Kernel |’) );
display( sprintf(‘=======================================
==============’) );
display( sprintf(‘Data Testing :‘) );
display( testnya(datake).data ); % data testing
for datake = 1:jdata % loop1 sejumlah data testing
for kelaske = 1:jkelas % loop sejumlah kelas
display( sprintf(‘Peluang data testing di kelas %d:%15.5f’,kelaske,ktestnya(datake).ptest(kelaske)) );
display( sprintf(‘=======================================
==============’) );
end
display( sprintf(‘Sehingga dengan Empiris Kernel untuk
data testing ini masuk ke kelas:%d’,ktestnya(datake).kflag ) );
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lagi = input(‘Anda ingin mengulangi proses dgn data testing lain ?:‘,’s')
% proses input jawaban
end % loop proses input jawaban
Inlinks:
There is no matching category for 'matlab'.
