i KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER SKRIPSI Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika Disusun Oleh: M. Ch. Agung Ayu Bulan Mahadewi 115314071 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
117
Embed
KLASIFIKASI KAIN TRADISIONAL NUSANTARA …repository.usd.ac.id/4602/2/115314071_full.pdfi KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
i
KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN
MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Disusun Oleh:
M. Ch. Agung Ayu Bulan Mahadewi
115314071
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
ARCHIPELAGO TRADITIONAL FABRIC CLASSIFICATION
BY USING THE NAIVE BAYES CLASSIFIER ALGORITHM
A Final Project
Presented as Partial Fulfillment of The Requirements
To Obtain Sarjana Komputer Degree
In Informatics Engineering Study Program
By:
M. Ch. Agung Ayu Bulan Mahadewi
115314071
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
HALAMAN PERSEMBAHAN
Tugas akhir ini saya persembahkan untuk:
Tuhan Yesus dan Bunda Maria Yang Penuh CintaKasih,
Selalu membimbing dan menguatkan
Papa di Surga dan Mama tercinta
Mas Guntur dan Mbk Bintang tersayang
Aditio Putra Setyobudi tersayang
Seluruh teman-teman yang setia menemani
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN
MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER
ABSTRAK
Di Indonesia terdapat beraneka ragam warisan budaya, salah satunya adalah kain
tradisional dari berbagai daerah yang ada di Indonesia yang wajib untuk
dilestarikan. Terdapat berbagai jenis kain tradisional yaitu batik, songket, tenun,
ulos, besurek, dan masih banyak lagi. Dalam setiap kain terdapat warna dan motif
yang berbeda-beda yang memiliki arti disetiap motif nya. Namun, tidak semua
orang mengetahui asal dari kain-kain tersebut. Oleh karena itu dilakukan
penelitian dengan pengklasifikasian kain tradisional nusantara. Dalam klasifikasi
dibutuhkan ciri khas dari kain tersebut. Untuk mendapatkan ciri khas dari kain
yang akan diklasifikasikan dibutuhkan ekstrak ciri dengan menggunakan warna
dengan mengambil meanR,G,B dan meanRGB, dan deteksi tepi. Deteksi tepi yang
digunakan adalah deteksi tepi dengan menggunakan Canny, karena metode canny
merupakan metode deteksi tepi yang baik diantara deteksi tepi yang lainnya dan
sudah pernah digunakan dalam deteksi tepi citra batik pada penelitian yang
lainnya. Selain itu, untuk membantu mendapatkan ekstrak ciri deteksi tepi
dibutuhkan pembagian citra dalam vektor horizontal dan vertikal. Sedangkan
untuk pengklasifikasian menggunakan algoritma Naive Bayes Classifier.
Algoritma naive bayes ini menggunakan metode probabilistik dan statistik.
Algoritma ini membutuhkan stándar deviasi dan mean dari setiap atribut dalam
setiap kelas. Hasil probabilitas yang tertinggi yang digunakan untuk menentukan
asal daerah kain tersebut. Untuk mengetahui kemampuan dari algoritma naive
bayes untuk klasifikasi dibutuhkan perhitungan akurasi. Berdasarkan klasifikasi
yang dilakukan dengan menggunakan ekstrak ciri warna dan vektor, didapatkan
hasil paling besar dengan menggunakan ekstrak ciri warna dan vektor vertikal
dengan tingkat akurasi 93%.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
ARCHIPELAGO TRADITIONAL FABRIC CLASSIFICATION
BY USING THE NAIVE BAYES CLASSIFIER
ABSTRACT
There are so many variegated of cultural heritage in Indonesia, one exception is
traditional fabric from many regions in Indonesia that must be preserved. There
are many various of traditional fabric like batik, songket, tenun, ulos, besurek, and
so many more. They’re have difference color and motives that having luminance
meaning. But, not everyone knows the origin of that fabric. Because of that,
perform the research to classified archipelago traditional fabric. In that classified,
the characteristic of the fabric is needed. To get the characteristic of the fabric that
want to classified, extract features is needed by using the color by taking
meanR,G,B and meanRGB, and detection of the edge. The detection of the edge is
using with Canny, because Canny method is more better than other detection
method and have been use to image detection of batik in other research. Beside
that, for get the extract feature, imagery ceiling in horizontal and vertical vector
are needed. Meanwhile, Naïve Bayes Classifier algorithm is used to classified.
Naïve bayes algorithm is using probabilistic and statistic method. This algorithm
is need standart deviation and mean from each attribute in each class. The highest
result use to determine the origin of the fabric. To find the ability classifying with
naïve bayes algorithm, calculation accuracy is needed. Based on the classified that
done with extract features of color and vector, the highest result was obtained by
using color extract feature anvertical vector with 93% of accuracy.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
KATA PENGANTAR
Puji dan syukur penulis panjatkan atas kehadirat Tuhan Yang Maha Esa
atas berkat, rahmat serta kasih-Nya sehingga penulis dapat menyelesaikan skripsi
yang berjudul “Klasifikasi Kain Tradisional Nusantara Dengan
Menggunakan algoritma Naive Bayes Classifier”.
Penulisan skripsi ini bertujuan untuk memenuhi syarat untuk memperoleh
gelar sarjana komputer program studi S1 jurusan Teknik Informatika Universitas
Sanata Dharma. Penulis menyadarai bahwa skripsi ini masih jauh dari kata
sempurna, oleh sebab itu penulis mengharapkan kritik dan saran yang bersifat
membangun dari semua pihak demi kesempurnaan skripsi ini.
Skripsi ini tidak lepas dari peran penting berbagai pihak, sehingga pada
kesempatan ini penulis dengan segala kerendahan hati serta rasa hormat
mengucapkan terimakasih yang sebesar-besarnya kepada semua pihakyang telah
memberikan dukungan baik secara langsung maupun tidak langsung kepada
penulis dalam penyusunan skripsi ini hingga selesai. Pada proses penulisan tugas
akhir ini saya ucapkan terima kasih kepada:
1. Tuhan Yesus selaku pembimbing iman dalam hidup yang selalu
memberi solusi diatas segala solusi.
2. Ibu Sri Hartati Wijono, S.Si., M.Kom. selaku pembimbing yang
memberikan pengarahan serta solusi dalam pengerjaan skripsi ini
hingga selesai.
3. Kedua orangtua, Bapak FX. Leo Taridi (Almarhum) dan Ibu M.Ch.
Ni-Luh Astutik yang selalu rela berkorban, mendoakan, menyayangi
dan memberikan motivasi kepada penulis.
4. Kedua kakak, Grs. Guntur Agung PN dan M.Ch. Agung Ayu Bintang
KS yang selalu menyayangi dan memberikan yang terbaik kepada
penulis.
5. Romo Poldo Andreas Situmorang yang senantiasa tulus meluangkan
waktunya untuk konsultasi mengenai penelitian ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
6. Aditio Putra Setyobudi yang selalu setia menemani dan membantu
dikala susah dan senang saat pengerjaan skripsi ini.
7. Monica Susi, Dyah Utami, Dhiah Rusdiana yang setia menemani dan
berbagi kesulitan bersama.
8. Seluruh civitas akademika Teknik Informatika angkatan 2011,
terutama anggota C++ yang telah berjuang bersama dan saling
memberi semangat dan inspirasi.
9. Semua pihak, baik langsung maupun tidak langsung yang telah
membantu dalam proses penyelesaian skripsi.
Penulis menyadari masih banyak kekurangan dalam penyusunan skripsi
ini, namun penulis tetap berharap skripsi ini bermanfaat bagi pengembangan ilmu
pengetahuan.
Yogyakarta, 5 November 2015
Penulis
M.Ch. Agung Ayu Bulan Mahadewi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
DAFTAR ISI
KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN
MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER ......................... i
ARCHIPELAGO TRADITIONAL FABRIC CLASSIFICATION BY USING
THE NAIVE BAYES CLASSIFIER ALGORITHM ................................................. ii
HALAMAN PERSETUJUAN ............................... Error! Bookmark not defined.
HALAMAN PENGESAHAN ............................... Error! Bookmark not defined.
HALAMAN PERSEMBAHAN ............................................................................ iv
PERNYATAAN KEASLIAN KARYA ................ Error! Bookmark not defined.
LEMBAR PERNYATAAN PERSETUJUAN ...... Error! Bookmark not defined.
ABSTRAK ............................................................................................................. ix
ABSTRACT ............................................................................................................ x
KATA PENGANTAR ........................................................................................... xi
DAFTAR ISI ........................................................................................................ xiii
DAFTAR GAMBAR ........................................................................................... xvi
DAFTAR TABEL .............................................................................................. xviii
BAB I ...................................................................................................................... 1
1.1 Latar Belakang .............................................................................................. 1
1.2 Rumusan Masalah ......................................................................................... 3
1.3 Tujuan ............................................................................................................ 3
1.4 Batasan Masalah ............................................................................................ 3
for i=1:piksel*1 for k=1:m if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=piksel*1+1:piksel*2 for k=1:m if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=piksel*2+1:piksel*3 for k=1:m if (hsl(i,k)==obyek) sum3=sum3+1; end end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
end for i=piksel*3+1:piksel*4 for k=1:m if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=piksel*4+11:piksel*5 for k=1:m if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=piksel*5+1:piksel*6 for k=1:m if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=piksel*6+1:piksel*7 for k=1:m if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=piksel*7+1:piksel*8 for k=1:m if (hsl(i,k)==obyek) sum8=sum8+1; end end end
for k=1:piksel*1 if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=1:n for k=piksel*1+1:piksel*2 if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=1:n for k=piksel*2+1:piksel*3 if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=1:n for k=piksel*3+1:piksel*4 if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=1:n for k=piksel*4+11:piksel*5 if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=1:n for k=piksel*5+1:piksel*6 if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=1:n
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
for k=piksel*6+1:piksel*7 if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=1:n for k=piksel*7+1:piksel*8 if (hsl(i,k)==obyek) sum8=sum8+1; end end
Untuk menyimpan nilai setiap vektor vertikal menggunakan
variabel h1 sampai h8. Nilai vektor didapat dari jumlah piksel yang
bernilai 1 di setiap vektor di bagi pembagi, yaitu 5000 didapat dari ukuran
setiap vektor 25 x 200 piksel.
Gambar 4. 7 Proses membagi citra kedalam vektor vertikal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
Hasil rata-rata dari setiap vektor vertikal disimpan dalam matriks yang
berukuran 1x8 seperti dibawah ini:
Gambar 4. 8 Tabel Ekstrak Ciri Vektor Vertikal
4.1.4 Implementasi Ekstraksi Ciri Warna dan Rata-rata Vektor
Dibawah ini merupakan implementasi untuk mendapatkan ciri
warna dan rata-rata vektor horizontal atau vertikal:
%Membaca Citra citra=imread(gambar); %Memisahkan RGB dan mencari rata2 RGB serta Kadar RGB meanR=0; meanG=0; meanB=0; meanRGB=0; dR=citra(:,:,1); dG=citra(:,:,2); dB=citra(:,:,3); meanR=mean(mean(dR)); meanG=mean(mean(dG)); meanB=mean(mean(dB)); meanRGB=meanR+meanG+meanB/3; %Mengubah Citra RGB Menjadi Grayscale grey= rgb2gray(citra); % imshow (grey); %Melakukan deteksi tepi hsl= edge(grey,'Canny'); %Membagi dalam vektor obyek=1; sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0;
sum8=0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
for i=1:piksel*1 for k=1:m if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=piksel*1+1:piksel*2 for k=1:m if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=piksel*2+1:piksel*3 for k=1:m if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=piksel*3+1:piksel*4 for k=1:m if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=piksel*4+11:piksel*5 for k=1:m if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=piksel*5+1:piksel*6 for k=1:m if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=piksel*6+1:piksel*7 for k=1:m if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=piksel*7+1:piksel*8 for k=1:m if (hsl(i,k)==obyek) sum8=sum8+1; end end for i=1:n
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
for k=1:piksel*1 if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=1:n for k=piksel*1+1:piksel*2 if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=1:n for k=piksel*2+1:piksel*3 if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=1:n for k=piksel*3+1:piksel*4 if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=1:n for k=piksel*4+11:piksel*5 if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=1:n for k=piksel*5+1:piksel*6 if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=1:n for k=piksel*6+1:piksel*7 if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=1:n for k=piksel*7+1:piksel*8 if (hsl(i,k)==obyek) sum8=sum8+1; end end h1 =sum1/pembagi; h2 =sum2/pembagi;
Hasil dari setiap ekstraksi ciri warna dan rata-rata vektor horizontal atau
vertikal disimpan dalam vektor yang berukuran 1x12, seperti dibawah ini:
Gambar 4. 9 Tabel Ekstrak Ciri Warna & Vektor Horizontal
Gambar 4. 10 Tabel Ekstrak Ciri Warna & Vektor Vertikal
Dari kolom ke-1 sampai kolom ke-12 merupakan nilai setiap ciri
warna dan rata-rata vektor, dan kolom terakhir atau ke-13 menandakan
kelas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
4.1.5 Implementasi Klasifikasi menggunakan Naive Bayes
Dibawah ini merupakan implementasi untuk proses klasifikasi
menggunakan algoritma Naive Bayes:
load 'data.mat','data'; load 'data.mat','lv_size'; % Data dimasukkan di dalam cell % Cell menunjukkan class nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'St
ring')); kelas=str2double(get(handles.edJmlDaerah,'String')); jmlData=nCitraPerClass*kelas; kfold=handles.kfold; nTest=floor(nCitraPerClass/kfold) [~,nData]=size(data); dataTemp=[];%matriks kosong class=1; for i=1:jmlData %looping untuk memisahkan data per kelas
dalam masing2 cell if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end
Data dalam setiap kelas dimasukan kedalam cell. Jumlah cell
sesuai dengan jumlah kelas atau daerah yaitu terdapat 10 cell. Pembagian
citra dalam setiap cell bertujuan untuk memudahkan membagi setiap 10
citra didalam satu kelas. Dibawah ini merupakan data citra yang telah
dimasukan kedalam setiap cell:
Gambar 4. 11 Data di dalam cell
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
idx1=1; %batasan untuk ambil data testing idx2=nTest; %batasan untuk ambil data testing sesuai dgn k-
fold nBenar=0; % menampung jumlah benar utk akurasi nSalah=0; %menampung jumlah salah utk akurasi for z=1:nCitraPerClass/nTest % looping trainng testing % Mencari std dan mean for i=1:class %dataCell{i}=zscore(dataCell{i}(:,1:12)); dataTest{i}=dataCell{i}(idx1:idx2,:); % mengambil
data testing trainingTemp=dataCell(i); %mengambil data dari cell
utk training semuanya trainingTemp{:}(idx1:idx2,:)=[]; ttaining=trainingTemp{:}; %data dr trainingtemp
dimasukan kdalam training rerataTrain(i,1:nData-1)=mean(ttaining(:,1:nData-
1)); rerataTrain(i,nData)=i; stdTrain(i,1:nData-1)=std(ttaining(:,1:nData-1)); stdTrain(i,nData)=i; end
Data citra dari hasil ekstraksi ciri yang telah dimasukan kedalam
masing-masing cell digunakan untuk menentukan pengambilan data
testing sesuai dengan k-fold. Data citra dari setiap cell juga digunakan
sebagai data training dan digunakan untuk perhitungan mean dan stándar
deviasi, seperti dibawah ini:
Gambar 4. 12 Tabel Mean Ekstrak Ciri Warna & Vektor Horizontal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Gambar 4. 13 Tabel Stándar Deviasi Ekstrak Ciri Warna & Vektor
Horizontal
Nilai diatas merupakan nilai mean dan stándar deviasi dari setiap
atribut dari ekstraksi ciri warna dan rata-rata vektor horizontal atau
vertikal. Setiap satu baris nya merupakan nilai mean dan stándar deviasi
if idxLabel == i %jika idxlabel hsil prob sama dengan kelas
yg sdang di proses , mka nilai benar akan dijumlahkan nBenar=nBenar+1; end end end % proses menentukan index dta testing idx1=idx1+nTest; idx2=idx2+nTest; end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
% Implementasi algoritma naïve Bayes
[m,n]=size(stdTraining); bayesian=zeros(size(stdTraining(1,1:end))); for i=1:m for j=1:n bays1=1/(sqrt(2*pi)*stdTraining(i,j)); bays2=exp(-(((rerataTesting(1,j) -
rerataTraining(i,j))^2)/(2*((stdTraining(i,j))^2)))); bayesian(i,j)=bays1*bays2; end end menghitung likelihood [idxLabel,hasilProbabilitas]=cariProbabilitas(bayesian); function
likehood=zeros(mBayesian,1); likehoodTempt=1; for k=1:mBayesian for l=1:nBayesian
if (bayesian(k,l) ~= 0) && (~isnan(bayesian(k,l))) %
membatasi untuk supaya nilai 0 dan nan
likehoodTempt=likehoodTempt*bayesian(k,l); end end likehood(k)=likehoodTempt; likehoodTempt=1; end [mLikehood,~]=size(likehood); probabilitas=zeros(size(likehood)); for k=1:mLikehood probabilitas(k)=(likehood(k)/sum(likehood)); end [hasilProbabilitas,idxLabel]=max(probabilitas); end end
Data testing diambil dari setiap kelas sesuai dengan pembagian k-fold
seperti pada gambar dibawah ini:
Gambar 4. 14 Data Testing Dalam Setiap Cell
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Gambar 4. 15 Data Testing Dalam Satu Kelas
Data testing dimasukan dalam proses perhitungan mengunakan
Naive Bayes. Kemudian di cocokan dengan data training, untuk
mengetahui kelas dari citra kain data testing.
Gambar 4. 16 Hasil Probabilitas
Gambar 4. 17 Hasil IdxLabel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Idxlabel merupakan label kelas pada setiap data testing. Jika
Idxlabel dan hasil probabilitas sama dengan kelas yang sedang diproses,
maka hasil benar. Seperti pada matriks diatas, idxlabel bernilai 1, brarti
benar berada pada kelas 1.
4.1.6 Implementasi Akurasi
Dibawah ini merupakan implementasi dari proses akurasi:
akurasi=(nBenar/jmlData)*100; % mencari nilai akurasi
set(handles.txtAcc,'String',num2str(akurasi));
Hasil akurasi klasifikasi citra menggunakan Naive Bayes dengan 5-fold,
dan ekstraksi ciri warna dan vektor horizontal adalah sebagai berikut:
Gambar 4. 18 Hasil Akurasi menggunakan 5-fold
4.1.7 Implementasi Klasifikasi Dari Data User
Dibawah ini merupakan implementasi klasifikasi menggunakan
dataTemp=[]; class=1; for i=1:lv_size(:,1) if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end
if option1 == 1 || option1 == 3 if option2 == 1 for i=1:pixel*1 for k=1:m if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=pixel*1+1:pixel*2 for k=1:m if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=pixel*2+1:pixel*3 for k=1:m if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=pixel*3+1:pixel*4 for k=1:m if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=pixel*4+11:pixel*5 for k=1:m if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=pixel*5+1:pixel*6 for k=1:m if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=pixel*6+1:pixel*7 for k=1:m if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=pixel*7+1:pixel*8 for k=1:m
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
if (hsl(i,k)==obyek) sum8=sum8+1; end end end
elseif option2 == 2 for i=1:n for k=1:pixel*1 if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=1:n for k=pixel*1+1:pixel*2 if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=1:n for k=pixel*2+1:pixel*3 if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=1:n for k=pixel*3+1:pixel*4 if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=1:n for k=pixel*4+11:pixel*5 if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=1:n for k=pixel*5+1:pixel*6 if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=1:n for k=pixel*6+1:pixel*7 if (hsl(i,k)==obyek) sum7=sum7+1; end end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
end for i=1:n for k=pixel*7+1:pixel*8 if (hsl(i,k)==obyek) sum8=sum8+1; end end end end end
function [ idxLabel,hasilProbabilitas ] = bayesKu(
stdTraining,rerataTraining,testing ) %UNTITLED Summary of this function goes here % Detailed explanation goes here
[m,n]=size(stdTraining);% m = baris, n = kolom bayesian=zeros(size(stdTraining(1,1:end))); % menyiapkan matrix 0
untk menampung nilai bayes
for i=1:m % looping untuk menghitung bayes for j=1:n % looping untuk n sama dengan jumlah atribut bays1=1/(sqrt(2*pi)*stdTraining(i,j)); bays2=exp(-(((testing(1,j) -
rerataTraining(i,j))^2)/(2*((stdTraining(i,j))^2)))); bayesian(i,j)=bays1*bays2; %hasil dari perhitungan bayes end % bayesian(i,1:end)=zscore(bayesian(i,1:end)); end % assignin('base','bayesian',bayesian);
@KlasifikasiNaiveBayess_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT
% --- Executes just before KlasifikasiNaiveBayess is made visible. function KlasifikasiNaiveBayess_OpeningFcn(hObject, eventdata,
handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to KlasifikasiNaiveBayess (see
VARARGIN)
% Choose default command line output for KlasifikasiNaiveBayess handles.output = hObject;
% UIWAIT makes KlasifikasiNaiveBayess wait for user response (see
UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = KlasifikasiNaiveBayess_OutputFcn(hObject,
eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
% hObject handle to figure % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on button press in btnAmbildirektori. function btnAmbildirektori_Callback(hObject, eventdata, handles) % hObject handle to btnAmbildirektori (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
dirName = uigetdir('citra\','cari folder data gambar');
if dirName ~= 0 set(handles.edAlmtCitraTraining,'String',dirName); files = dir(fullfile(dirName,'*.jpg')); A = {files.name}; N = cellfun( @str2double, regexp(A, '\d+', 'match')); [~,I] = sort(N); set(handles.lbNmFileCitra,'String',A(I)); set(handles.txtJmlData,'String',num2str(size(A,2))); pengaturanComponent(handles,1); else pengaturanComponent(handles,0); end
% --- Executes on button press in btnEkstrakciri. function btnEkstrakciri_Callback(hObject, eventdata, handles)
% Penentuan arah vektor pixel=25; nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'String')
); kelas=str2double(get(handles.edJmlDaerah,'String')); jmlData=nCitraPerClass*kelas; % val = get(handles.ppmEdge,'Value'); % tepi=get(handles.ppmEdge,'String'); % handles.tepi=tepi{val}; option1=handles.optional; if option1 == 1 %warna dan vektor vektorH=get(handles.rbH,'Value'); % vektorV=get(handles.rbV,'Value') if vektorH==1 %vektor horisontal option2=1; %vektor horisontal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
else option2=2; %vektor vertikal end elseif option1 == 2 %warna option2=3; % bukan vertikal n horisontal elseif option1 == 3 %vektor vektorH=get(handles.rbH,'Value'); % vektorV=get(handles.rbV,'Value') if vektorH==1 %vektor horisontal option2=1; %vektor horisontal else option2=2; %vektor vertikal end end
% Mengambil MeanRGB dan VektorH untuk selanjutnya ditampilkan di
dalam % variabel data. lv = get(handles.lbNmFileCitra, 'String'); dirName = get(handles.edAlmtCitraTraining,'String'); lv_size = size(lv); %jumlah data ato jumlah file gambar data=zeros(lv_size(:,1), kelas); %membuat matriks kosong untuk
menampung data nilai 0 progresTemp=100/lv_size(:,1); progres=0; class=1; % for i=1:lv_size(:,1) for i=1:jmlData %looping baca file gambar, sejumlah data yang
[~,nData]=size(data); dataTemp=[];%matriks kosong class=1; % for i=1:lv_size(:,1) for i=1:jmlData %looping untuk memisahkan data per kelas dalam
masing2 cell if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end
assignin('base','data',dataCell); class=class-1; rerataTrain=zeros(class,class); %membuat matrix 0 untuk rata2
training stdTrain=zeros(class,class); %membuat matrix 0 untuk std training
idx1=1; %batasan untuk ambil data testing idx2=nTest; %batasan untuk ambil data testing sesuai dgn k-fold nBenar=0; % menampung jumlah benar utk akurasi nSalah=0; %menampung jumlah salah utk akurasi
for z=1:nCitraPerClass/nTest % looping trainng testing % Mencari std dan mean for i=1:class % dataCell{i}=zscore(dataCell{i}(:,1:12)); dataTest{i}=dataCell{i}(idx1:idx2,:); % mengambil data
testing
trainingTemp=dataCell(i); %mengambil data dari cell utk
training semuanya trainingTemp{:}(idx1:idx2,:)=[]; %data testing nya d hapus
dr trainingtemp ttaining=trainingTemp{:}; %data dr trainingtemp dimasukan
kdalam training rerataTrain(i,1:nData-1)=mean(ttaining(:,1:nData-1)); %
% Bayes % Akurasi %Tambahan untuk mengeluarkan hasil klasifikasi idxSemuaLabel=[]; %<<< hasilSemuaProb=[]; %<<< benarSalah=[]; %<<< for i=1:class %looping berdasarkan kelas for j=1:nTest %looping sejumlah data test testing=dataTest{i}(j,1:nData-1); % mengambil nilai
data test dari masing2 data testing % rerataTesting=mean(dataTest{i}(:,1:12)); stdTraining=stdTrain(:,1:nData-1); rerataTraining=rerataTrain(:,1:nData-1); [ idxLabel,hasilProbabilitas ] =
bayesKu(stdTraining,rerataTraining,testing); % masuk proses bayes idxSemuaLabel(i,j)=idxLabel; %<<< hasilSemuaProb(i,j)=hasilProbabilitas; %<<<
if idxLabel == i %jika idxlabel hsil prob sama dengan
kelas yg sdang di proses , mka nilai benar akan dijumlahkan nBenar=nBenar+1;% jumlah nilai benar benarSalah{i,j}='BENAR'; %<<< else benarSalah{i,j}='salah'; %<<< end end end % proses menentukan index dta testing idx1=idx1+nTest; idx2=idx2+nTest; end % assignin('base','dataTest',dataTest); assignin('base','idxSemuaLabel',idxSemuaLabel); assignin('base','hasilSemuaProb',hasilSemuaProb); assignin('base','benarSalah',benarSalah); % assignin('base','hasilProbabilitas',hasilProbabilitas); % assignin('base','nBenar',nBenar);
akurasi=(nBenar/jmlData)*100; % mencari nilai akurasi set(handles.txtAcc,'String',num2str(akurasi));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
% --- Executes on button press in btnTest. function btnTest_Callback(hObject, eventdata, handles) % hObject handle to btnTest (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA) clc; pixel=25; nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'String')
elseif option1 == 3 dataTest=[h1,h2,h3,h4,h5,h6,h7,h8]; end
[~,nDt]=size(dataTest); dataTest(:,nDt+1)=0;
[~,nData]=size(data); dataTemp=[]; class=1; for i=1:lv_size(:,1) if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end
function pengaturanComponent(handles,aktif) if aktif == 1 set(handles.ppupOptional,'Value',1); set(handles.ppupOptional,'Enable','on'); set(handles.rbH,'Enable','on'); set(handles.rbV,'Enable','on'); % set(handles.ppmEdge,'Enable','on'); set(handles.edJmlDaerah,'Enable','on'); set(handles.edJmlCitraPerKelas,'Enable','on'); set(handles.btnEkstrakciri,'Enable','on'); set(handles.btnTest,'Enable','on'); set(handles.lbNmFileCitra,'Value',1) set(handles.txtProses,'String','0 '); else set(handles.ppupOptional,'Enable','inactive'); set(handles.rbH,'Enable','inactive'); set(handles.rbV,'Enable','inactive'); % set(handles.ppmEdge,'Enable','inactive'); set(handles.edJmlDaerah,'Enable','inactive'); set(handles.edJmlCitraPerKelas,'Enable','inactive'); set(handles.btnEkstrakciri,'Enable','inactive'); set(handles.btnTest,'Enable','inactive'); set(handles.lbNmFileCitra,'String',{'Nama Citra'}); set(handles.lbNmFileCitra,'Value',1) set(handles.txtJmlData,'String','0 '); set(handles.txtProses,'String','0 '); end
% --- Executes on selection change in ppupOptional. function ppupOptional_Callback(hObject, eventdata, handles) % hObject handle to ppupOptional (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all
properties. function ppupOptional_CreateFcn(hObject, eventdata, handles) % hObject handle to ppupOptional (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: popupmenu controls usually have a white background on
Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on selection change in ppmKFold. function ppmKFold_Callback(hObject, eventdata, handles) % hObject handle to ppmKFold (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all
properties. function ppmKFold_CreateFcn(hObject, eventdata, handles) % hObject handle to ppmKFold (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: popupmenu controls usually have a white background on
Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes during object creation, after setting all
properties. function images_CreateFcn(hObject, eventdata, handles) % hObject handle to images (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: place code in OpeningFcn to populate images
function edDirTest_Callback(hObject, eventdata, handles) % hObject handle to edDirTest (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edDirTest as
text % str2double(get(hObject,'String')) returns contents of
edDirTest as a double
% --- Executes during object creation, after setting all
properties. function edDirTest_CreateFcn(hObject, eventdata, handles) % hObject handle to edDirTest (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edAlmtCitraTraining_Callback(hObject, eventdata, handles) % hObject handle to edAlmtCitraTraining (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of
edAlmtCitraTraining as text % str2double(get(hObject,'String')) returns contents of
edAlmtCitraTraining as a double
% --- Executes during object creation, after setting all
properties. function edAlmtCitraTraining_CreateFcn(hObject, eventdata,
handles) % hObject handle to edAlmtCitraTraining (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on selection change in lbNmFileCitra. function lbNmFileCitra_Callback(hObject, eventdata, handles) % hObject handle to lbNmFileCitra (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
lbNmFileCitra contents as cell array % contents{get(hObject,'Value')} returns selected item from
lbNmFileCitra
% --- Executes during object creation, after setting all
properties. function lbNmFileCitra_CreateFcn(hObject, eventdata, handles) % hObject handle to lbNmFileCitra (see GCBO)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
% eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: listbox controls usually have a white background on
Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edJmlDaerah_Callback(hObject, eventdata, handles) % hObject handle to edJmlDaerah (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edJmlDaerah as
text % str2double(get(hObject,'String')) returns contents of
edJmlDaerah as a double
% --- Executes during object creation, after setting all
properties. function edJmlDaerah_CreateFcn(hObject, eventdata, handles) % hObject handle to edJmlDaerah (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edJmlCitraPerKelas_Callback(hObject, eventdata, handles) % hObject handle to edJmlCitraPerKelas (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of
edJmlCitraPerKelas as text
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
98
% str2double(get(hObject,'String')) returns contents of
edJmlCitraPerKelas as a double
% --- Executes during object creation, after setting all
properties. function edJmlCitraPerKelas_CreateFcn(hObject, eventdata, handles) % hObject handle to edJmlCitraPerKelas (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on selection change in ppmEdge. function ppmEdge_Callback(hObject, eventdata, handles) % hObject handle to ppmEdge (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
contents as cell array % contents{get(hObject,'Value')} returns selected item from
ppmEdge
% --- Executes during object creation, after setting all
properties. function ppmEdge_CreateFcn(hObject, eventdata, handles) % hObject handle to ppmEdge (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all
CreateFcns called
% Hint: popupmenu controls usually have a white background on
Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end