rulururu





post Kaedah Bayes Untuk Klasifikasi

February 18th, 2008

Filed under: Matlab — Unggul_USA @ 1:56 pm — View blog reactions


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_bayes_for_klasifikasi.JPG

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 :

(No Ratings Yet)
382 Views

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Most Viewed Post/Page:

  • Tips : Mengatasi Komputer Bermasalah - 15,551 Views
  • Tips : Membuat Jaringan Wi-Fi - 6,757 Views
  • Download - 6,101 Views
  • Memilih Anti Virus - 5,248 Views
  • Apa itu Multimedia ? - 5,230 Views
  • SORTING ALGORITHM ANALYSIS - 4,864 Views
  • Tips : Merawat Komputer - 3,789 Views
  • Sejarah Kriptografi - 3,612 Views
  • Database - 3,383 Views
  • Power Builder 11.0 Launching - 3,374 Views
  • Most Rated Post/Page:

  • Tips : Membuat Jaringan Wi-Fi - 8 Votes
  • Tips : Mengatasi Komputer Bermasalah - 7 Votes
  • Download - 5 Votes
  • Tips : Komputer Aman Dari Virus - 5 Votes
  • Memilih Anti Virus - 4 Votes
  • Menjalankan Banyak Account Yahoo Messenger - 3 Votes
  • Aplikasi Web Atau Aplikasi Desktop ? - 3 Votes
  • Aplikasi Untuk Amankan Data Penting - 3 Votes
  • Tips : Merawat Komputer - 2 Votes
  • Database #2 - 2 Votes
  • ruldrurd
    porn movies buy online pharmacy viagra soft tabs viagra or levitra order cialis soft tabs online information on viagra for woman cheap cialis soft tabs levitra cheap generic viagra online viagra levitra purchase uk free cialis order online cialis cream for women levitra for women online viagra soft tabs
    Powered by WordPress, Web Design by Laurentiu Piron
    Entries (RSS) and Comments (RSS)