54
5.1.4. Implementasi Struktur Data
Tahapan ini berisi tentang implementasi struktur data yang di gunakan sistem ini.
5.1.3.1 Implementasi Kelas Verteks.java
Kelas verteks merupakan kelas yang menyimpan setiap objek data ke dalam verteks. Dalam kelas ini terdapat 2 atribut untuk menyimpan data objek.
Atribut yang pertama adalah label. Atribut ini berfungsi untuk menyimpan label pada setiap objek. Atribut kedua adalah nilai, atribut ini berfungsi untuk
menyimpan nilai dari setiap objek.
5.1.3.2 Implementasi Kelas Divisive.java
Kelas divisive
merupakan kelas
yang digunakan
untuk mengimplementasikan algoritma divisive, yaitu dalam melakukan proses
clustering itu sendiri. Dalam kelas divisive terdapat edge yang berfungsi untuk menghubungkan verteks. Kelas divisive memiliki konstruktor sendiri yang
berfungsi sebagai ukuran maksimum dari verteks, method ini memiliki parameter masukan yaitu maxVerteks.
public Divisive int maxVertex { verteksList = new Verteks[maxVertex];
adjMat = new double[maxVertex][maxVertex]; for int i = 0; i adjMat.length; i++ {
for int j = 0; j adjMat.length; j++ { if i == j {
55 adjMat[i][j] = 0.0;
} else { adjMat[i][j] = inf;
} }
} }
Dalam konstruktor ini adjMat di definisikan sebagai edge yang akan menghubungkan vertex. Setelah membuat matriks, langah selanjutnya adalah
memasukan vertex ke dalam kedalam matriks menggunakan method addVerteks. Dalam method ini menggunakan dua parameter masukan yaitu label dan nilai.
Pada tahap ini setiap objek dimasukan kedalam vertex.
public void addVerteksString label, ListDouble nilai { verteksList[jumVertex++] = new Vertekslabel, nilai;
} Setelah membuat vertex, selanjutnya menggunakan method addEdge yang
berfungasi untuk memasukan nilai edge antar objek. Nilai edge merupakan jarak yang akan dihitung menggunakan rumus Euclidean Distance.
public void addEdgeint x, int y, Double nilai { adjMat[x][y] = adjMat[y][x] = nilai;
} PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56 Perhitungan jarak Euclidean menggunakan method cariJarakEuclidean.
Method ini memiliki parameter masukan indexAwal dan indexAkhir yang berfungsi untuk menandai dimulai dan diakhirinya indeks yang di hitung jaraknya.
public Double cariJarakEcludianint indexAwal, int indexTujuan { ListDouble a = new ArrayListDouble;
ListDouble b = new ArrayListDouble; a = verteksList[indexAwal].getNilai;
b = verteksList[indexTujuan].getNilai; double total = 0;
for int i = 0; i a.size; i++ { total += Math.powa.geti - b.geti, 2;
} double r = Math.sqrttotal;
int decp = 2; BigDecimal bd = new BigDecimalr;
bd = bd.setScaledecp, BigDecimal.ROUND_DOWN; r = bd.doubleValue;
return r; }
Atribut yang digunakan untuk proses clustering seperti dibawah ini.
public Verteks verteksList[]; public Verteks LabelMatriks[];
public Verteks LabelSplinter[]; PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57 public Verteks LabelMatriksAkhir[];
public Verteks LabelSplinterAkhir[]; public double adjMat[][];
public double DataMatriks[][]; public double DataSplinter[][];
public double DataMatriksAkhir[][]; public double DataSplinterAkhir[][];
ArrayListString MatrixList = new ArrayList; ArrayListString SplinterList = new ArrayList;
ArrayListString MatrixLisAkhir = new ArrayList; ArrayListString SplinterListAkhir = new ArrayList;
Atribut pertama adalah verteksList yang berfungsi untuk menyimpan nilai label obyek dalam verteks, atribut LabelMatriks yang berfungsi untuk menyimpan
nilai label matriks yang tersisa dalam verteks, atribut LabelSplinter yang berfungsi untuk menyimpan nilai label obyek yang sudah terpisah dari matriks ke dalam
verteks, atribut LabelMatriksAkhir dan LabelSplinterAkhir untuk menyimpan nilai label dari masing-masing obyek pada tahap akhir iterasi.
Atribut adjMat berfungsi untuk menyimpan nilai edge matriks jarak dalam array, atribut DataMatriks dan DataSplinter berfungsi untuk menampung nilai
matriks jarak
selama proses
iterasi, atribut
DataMatriksAkhir dan
DataSplinterAkhir digunakan untuk menyimpan nilai matriks diakhir proses iterasi. Atribut yang bertipe ArrayList digunakan untuk menyimpan nilai label
obyek pada setiap iterasi kedalam sebuah ArrayList. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
5.2. Analisis Hasil
Dalam penelitian ini pengelompokan digunakan dengan divisive clustering. Setelah data melewati tahap preprocessing selanjutanya data diproses
menggunakan algoritma divisive clustering. Data transakasi penjualan sebelumnya berjumlah 834 dengan aktribut 21 kemudian di seleksi menjadi 834 data dengan 7
atribut setelah di proses melalui proses preprocessing menjadi 159 jumlah data dan 3 atribut. Hasil data dari preprocessing tersebutlah yang akan diproses
menggunakan algoritma divisive. Untuk mengetahui sejauh mana pengelompokan yang dilakukan adalah baik maka dilakukan uji akurasi dari pembentukan
kelompok dengan menggunakan internal evaluation. Setiap pembentukan kelompok tersebut diuji dengan menggunakan metode sum of square error SSE.
Sistem yang dibuat menggunakan algoritma divisive clustering ini dimulai dari satu cluster besar yaitu matriks hasil dari perhitungan menggunakan jarak
euclidean. Hasil dari setiap pembentukan cluster ditampilkan dalam tabel-tabel, Jtree
sebagai visualisasi
clustering agar
tergambar proses
dari pengelompokannya. Sejalan proses clustering SSE akan dihitung. Hasil
perhitungan SSE pembentukan kelompok akan ditampilkan totalnya oleh sistem. Berdasarkan pada pembentukan kelompok yang memiliki nilai SSE terendah
dapat dikatakan bahwa kelompok tersebut baik. Hasil langkah percobaan disajikan pada Tabel 5.5 dan Gambar 5.10. Untuk mengetahui nilai SSE adalah statis,
dilakukan samapi dengan 5 kali pengulangan pembentukan cluster pada setiap percobaan. Hasil dari percobaan tersebuat dilampirkan pada lampiran 7.