BAB IV ANALISIS DAN HASIL
4.1.2 Implementasi Program
4.1.2.3 Implementasi Silhouette Index
Program 4.15 Menyiapkan Tempat dan Membuat Nilai Awalan
Bagian ini menjelaskan untuk menyiapkan tempat bagi daftar si dalam bentuk array dan membuat nilai awalan bagi banyak benar, banyak perbatasan dan banyak salah dimulai dari 0.
for penghitungcluster = 1 : banyakcluster penghitungcluster
appendText(strcat('Cluster
ke:',num2str(penghitungcluster)), handles);
cluster = clusters{penghitungcluster}
[bariscluster kolomcluster] = size(cluster);
appendText(strcat('Banyak anggota:',num2str(bariscluster)), handles);
if bariscluster > 0
appendText('Anggota:', handles);
for penghitungbaris = 1 : bariscluster appendText(strcat('-
',num2str(cluster{penghitungbaris})),handles);
end end
appendText('', handles);
end
daftarsi = [];
banyakbenar = 0;
banyakperbatasan = 0;
banyaksalah = 0;
baris
Program 4.16 Perulangan Perhitungan Baris
Kemudian lakukan perulangan untuk perhitungan baris, cluster asal yang diambil atau berisikan hasil clustering dan membuat tempat untuk daftar anggota serta daftar bukan anggota yang dalam bentuk array. Dimana ketika mendapatkan nilai dari cluster asal maka nilai yang masuk pada anggotanya akan masuk ke array daftar anggota dan bukan anggota akan masuk ke array daftar bukan anggota.
Program 4.17 Menghitung a
for penghitungbaris = 1 : baris disp('---');
penghitungbaris
clusterasal = hasilclustering(penghitungbaris, 2)
daftaranggota = [];
daftarbukananggota = [];
daftaranggota = clusters{clusterasal}
[banyakanggota kolomanggota] = size(daftaranggota) daftarjarakanggota = [];
jumlahjarakanggota = 0;
for penghitungbaris2 = 1 : banyakanggota
penghitungtujuan = daftaranggota{penghitungbaris2};
jarak = norm(data(penghitungbaris, :) - data(penghitungtujuan, :));
daftarjarakanggota = [daftarjarakanggota; jarak];
jumlahjarakanggota = jumlahjarakanggota + jarak;
end daftarjarakanggota
jumlahjarakanggota nilaia = 0;
if banyakanggota > 0
nilaia = jumlahjarakanggota / (banyakanggota - 1) end
Bagian ini untuk menghitung nilai a tiap cluster. Tetapi sebelum menghitung nilai a sendiri harus memunculkan daftar anggota dalam sebuah cluster lalu banyak anggota dan kolom anggota yang diambil dari daftaranggota, kemudian membuat tempat dalam bentuk array untuk daftar jarak anggota serta jumlah jarak anggota yang dimulai atau diawali dari 0. Setelah membuat semua itu masuk pada perulangan untuk mendapatkan daftar jarak anggota serta jumlah jarak anggota dimana pada daftar jarak anggota berisikan hasil dari jarak yang menggunakan fungsi norm untuk menghitung jarak antar titik kemudian hasil dari jarak tersebut di jumlahkan. Lalu munculkan nilai daftar jarak anggota serta jumlah jarak anggota di command windows, kemudian membuat nilai walan dari nilai a yaitu 0, lalu melalui proses pemeriksaan dimana ketika banyak anggota lebih dari 0 maka dia kana mengerjakan nilai a = jumlahjarakanggota / (banyakanggota -1 ) untuk mendapatkan nilai a.
Program 4. 18 Menghitung b
Bagian program diatas ini untuk menghitung nilai b. sebelum masuk ke dalam perhitungan dari nilai b dimana haris membuat tempat dalam bentuk array untuk daftar b cluster, selanjutnya membuat proses perulangan perhitungan cluster yang diambil dari cluster asal lalu memunculkannya didalam command windows.
Kemudian mengerjakan daftar bukan anggota dan banyak bukan anggota serta kolom bukan anggota lalu membuat tempat dalam bentuk array untuk daftar jarak bukan anggota. selanjutnya
daftarbcluster = [];
for penghitungcluster = 1 : banyakcluster if penghitungcluster ~= clusterasal
disp('...' );
penghitungcluster
daftarbukananggota = clusters{penghitungcluster}
[banyakbukananggota kolomabukannggota] = size(daftarbukananggota)
daftarjarakbukananggota = [];
for penghitungbaris2 = 1 : banyakbukananggota
penghitungtujuan = daftarbukananggota{penghitungbaris2};
jarak = norm(data(penghitungbaris, :) - data(penghitungtujuan,:));
daftarjarakbukananggota = [daftarjarakbukananggota;
jarak];
end
daftarjarakbukananggota nilaib = 0;
if banyakbukananggota > 0 nilaib = mean(daftarjarakbukananggota, 1) end
if nilaib > 0
daftarbcluster = [daftarbcluster; nilaib];
end end end
melakukan proses perulangan dengan menggunakan for untuk mendapatkan daftar jarak bukan anggota yang didapatkan dari jarak yang menggunakan norm untuk menghitung jarak antar titik dan memunculkannya di command windows setelah itu dimana membuat nilai awalan dari nilai b sendiri yaitu 0 dan melalui proses pengecekkan dimana ketika banyak bukan anggota lebih dari 0 maka mengerjakan nilaib = mean(daftarjarakbukananggota, 1) dan jika nilai b yang di dapatkan lebih dari 0 maka akan dimasukkan dalam daftar b cluster.
Program 4. 19 Melihat nilai minimal b dan Mengecek Nilai SI
Bagian ini menjelaskan bahwa setelah mendapatkan nilai b maka munculkan daftar nilai b cluster yang telah di dapat lalu melihat minimal dari nilai bi dengan menggunakan perintah
daftarbcluster
nilaibiminimal = min(daftarbcluster)
nilaisi = (nilaibiminimal - nilaia)/max(nilaia, nilaibiminimal)
daftarsi = [daftarsi; nilaisi];
if nilaisi >= 0.1
banyakbenar = banyakbenar + 1;
elseif nilaisi > -0.1
banyakperbatasan = banyakperbatasan + 1;
else
banyaksalah = banyaksalah + 1;
end end daftarsi
nilaibiminimal = min(daftarcluster kemudian menghitung nilai si nya, ketika nilai si nya udah di temukan masukan ke dalam daftar si. Setelah semua nilai si sudah masuk pada daftar si tadi maka tahap selanjunya dimana untuk melakukan proses pengecekaan apakah nilai si nya masuk pada banyak benar, banyak perbatasan atau masuk pada banyak salah. Ketentuan ketika nilai si lebih besar sama dengan 0.1 maka nilai si tersebut masuk pada banyak benar kemudian ketika nilai si nya lebih dari -0.1 maka dia masuk pada banyak perbatasan tetapi jika nilai si tersebut tidak masuk kedalam dua ketentuan tersebut maka nilai si tersebut masuk pada banyak salah. Diakhiri dengan end kemudian di bagian bawah end berisikan daftarsi yang akan di munculkan di command windows.
Program 4.20 hitung Reratasi dan akurasi
Bagian ini menjelaskan setelah memunculkan nilai daftar si maka mencari reratasi atau rata-rata nilai si denganmenggunakan fungsi mean, kemudian memunculkan banyak benar, banyak perbatasan serta banyak salah pada command windows kemudian menghitung akurasinya dengan menggunakan rumus akurasi = banyakbenar dibagi baris ( jumlah data ) * 100.
reratasi = mean(daftarsi, 2) reratasi = mean(reratasi)
banyakbenar banyakperbatasan banyaksalah
akurasi = banyakbenar / baris * 100
Program 4. 21 Menampilkan Hasil Dalam Gui
Dilihat pada program diatas untuk menampilkan nilai retata si, banyak benar, banyak di perbatasan, banyak salah serta akurasi di bagian hasil dalam gui .
Program 4. 22 Menyimpan Data
Bagian function pushbuttonSimpanData untuk menyimpan file dalam bentuk excel dimana file tersebut berisikan seluruh atribut serta hasil cluster yang ada pada gui bagian data.
function pushbuttonSimpanData_Callback(hObject, eventdata, handles)
[filename,pathname]=uiputfile([{'*.xlsx','XLSX Only'};{'* .xls','XLS Only'}],'Select Output Excel File');
fullpath = fullfile(pathname, filename);
if ~isequal(filename,0)
datax = get(handles.tableData, 'ColumnName' data = get(handles.tableData, 'Data');
xlswrite(fullpath, datax', 1, 'A1');
xlswrite(fullpath, data, 1, 'A2');
end
function pushbuttonSimpanHasil_Callback(hObject, eventdata, handles) [filename,pathname]=uiputfile([{'*.txt','TXT Only'}],'Select Output Text File');
fullpath = fullfile(pathname, filename);
if ~isequal(filename,0)
hasil = get(handles.editHasil,'String');
filehandle = fopen(fullpath, 'wb');
fprintf(filehandle, '%s\r\n', hasil{:});
fclose(filehandle); % fclose untuk menutup dan menyimpan file
end
Program 4.23 Menyimpan Hasil
Program ini dimana untuk menyimpan file dalam bentuk txt dimana file yang tersimpan berisikan hasil dari bagian hasil pada gui .