Implementasi Kelas Verteks.java Implementasi Kelas Divisive.java

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.