IMPLEMENTASI DATA MINING MENGGUNAKAN METODE

advertisement
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
IMPLEMENTASI DATA MINING MENGGUNAKAN METODE
CLUSTERING UNTUK PREDIKSI PENJUALAN DI PT. XYZ
HALAMAN JUDUL
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Disusun oleh :
Isidorus Cahyo Adi Prasetyo
( 115314009 )
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
IMPLEMENTATION DATA MINING USING CLUSTERING METHOD
FOR SELLING PREDICTION OF XYZ COMPANY
HALAMAN JUDUL (Bahasa Inggris)
A Thesis
Presented as Partial Fulfillment of The Requirements
To Obtain Sarjana Komputer Degree
In Informatics Engineering Study Program
Written by:
Isidorus Cahyo Adi Prasetyo
( 115314009 )
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2016
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSETUJUAN
HALAMAN PENGESAHAN
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
SKRIPSI
PERNYATAAN KEASLIAN KARYA
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSEMBAHAN
HALAMAN PERSEMBAHAN
Karya Skripsi ini Saya persembahan kepada :
1. Tuhan Yesus Kristus, yang selalu mendampingiku dalam menyelesaikan
karya skripsi ini.
2. Keluargaku, antara lain Bapak, Ibu, Kakek, Tante, dan Adikku yang selalu
mendukungku baik berupa doa dan materi.
3. Kekasih dan segenap
keluarganya
yang selalu mendoakan dan
memberikan semangat.
4. Para Dosen dan Teman-Teman Mahasiswa Teknik Informatika Universitas
Sanata Dharma yang menjadi relasi dan penolong selama Saya
menjalankan studi.
5. Keluarga besar Universitas Sanata Dharma yang telah memberikan segala
pengalaman berharga dalam hidup.
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN MOTTO
HALAMAN MOTTO
Manusia tidak merancang untuk gagal, mereka gagal untuk merancang.
( William J. Siegel )
“IF YOU CAN’T FLY THEN RUN,
IF YOU CAN’T RUN THEN WALK
IF YOU CAN’T WALK THEN CRAWL,
BUT WHATEVER YOU DO YOU HEVE
YOU KEEP MOVING FORWARD”
(Martin Luther King.Jr.)
Stay Hungry, Stay Foolish
( Steve Jobs)
Because I actualy learned that in life you can
Only trust, like, yourself, actualy.
Not in sense that you can’t trust people but,
Yeah, like I said: the one who will never let you down is yourself.
Benedict Hang Yong Lim “HyHy”
Dota’s pro gamer – 2011
"One way to forget about pain is to do something you will be in,
completely. So. computer games."
(Danil "Dendi" Ishutin)
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK
Seiring perkembangan jaman yang semakin maju, peranan teknologi
informasi dalam dunia bisnis masa kini mengalami perkembangan yang sangat
pesat. Teknologi Data Mining atau penambangan data ini dapat membantu sebuah
perusahaan untuk menemukan pengetahuan-pengetahuan baru, yang dapat
membantu dalam pengaturan strategi bisnis. Informasi yang diperoleh dari dari
proses penambangan data dapat membatu pelaku bisnis dalam meningkatkan
proses bisnis dan membuat keputusan bisnis.
Data penjualan produk helm pada PT. XYZ akan dimanfaatkan
menggunakan teknik analisis klaster. Analisis klaster merupakan sebuah analisis
pengelompokan data yang mengelompokan data berdasarkan informasi yang
ditentukan pada data. Tujuan dari pengelompokan data ini adalah agar obyekobyek di dalam suatu kelompok memiliki kemiripan satu sama lain sedangakan
obyek-obyek yang berbeda berada dalam kelompok yang memiliki perbedaan.
Berkaitan dengan proses pengelompokan data pada penelitian ini, akan
meggunakan metode hirarki divisive. Dalam metode divisive di setiap langkahnya
terjadi penambahan kelompok ke dalam nilai dua nilai terkecil sampai akhirnya
semua elemen bergabung. Metode ini merupakan proses pengklasteran yang
didasarkan pada persamaan nilai rata-rata antar objek. Jika sebuah objek memiliki
persamaan nilai rata-rata terbesar maka objek tersebut akan terpisah dan berubah
menjadi splinter group. Dilakukan 7 kali percobaan pembentukan kelompok dan
setiap percobaan dihitung pula nilai sum of square error (SSE)
Pada penelitian ini dibuat sebuah sistem yang mengimplementasikan
teknik analisis klaster menggunakan algoritma hirarki divisive. Data yang
digunakan adalah data penjualan. Hasil akhir dari proses pengolahan data
penjualan adalah terbentuknya 8 kelompok dengan nilai SSE terkeci dari beberapa
percobaan. Masing-masing kelompok akan dianalisa berdasarkan informasi yang
terkait. Hasil dari analisis klaster tersebut dapat menjadi strategi bagi pemilik
perusahaan dalam pengambilan keputusan hingga menyediakan serta memasarkan
produk dengan efektif untuk meningkatkan aktivitas penjualan.
Kata kunci: data mining, analisis klaster, hirarki divisive.
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT
ABSTRACT
Along with advanced current development, the role of information
technology in business world has been showing a great improvement. Data
Mining Technology can help a company to discover new comprehensions that are
very useful in setting business strategy. The information gathered from the data
mining will be able to help business people in escalating the business process and
making a business decision.
The product sales data at the XYZ Company will be used using cluster
analysis technique. Cluster analysis is an analysis for gathering the data based on
the information that has been chosen from the data. The aim from this data
clustering is to make the objects that have similarities of each other will be placed
in one group, while the different objects will be placed in one group that has
dissimilarity. Regarding with the clustering data process in this research, the
method that will be used is hierarchical divisive method. In the divisive method,
there will be group adding in every step into the value, the two smallest values
until finally all elements united. This method is a clustering process that is based
on the average value equation between the objects. If an object has the biggest
value equation, then the object will be separated and changed into splinter group.
There will be seven group formation experiments conducted and every experiment
will be counted the value of sum of square error (SSE).
This research creates a system that implements cluster analysis technique
using hierarchical divisive algorithm. The data used is the sales data. The final
result from processing the sales data is set-up of eight groups with the smallest
SSE value of several experiments. Each group will be analyzed based on
associated information. The outcome from the cluster analysis can be benefited as
a strategy to the company owner in making a decision to provide and market the
product effectively in order to increase sales activity.
Keyword: data mining, cluster analysis, hierarchical divisive.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR
KATA PENGANTAR
Puji dan syukur kepada Tuhan Yang Maha Esa, karena pada akhirnya
penulis dapat menyelesaikan penelitian tugas akhir ini yang berjudul
“IMPLEMENTASI
DATA
MINING
MENGGUNAKAN
METODE
CLUSTERING UNTUK PREDIKSI PENJUALAN DI PT. XYZ”.
Dalam seluruh proses penyusunan tugas akhir ini, penulis tak lepas dari
doa, bantuan, dukungan, dan motivasi dari banyak pihak. Oleh karena itu, penulis
ingin mengucapkan banyak terima kasih kepada:
1. Tuhan Yesus Kristus dan Bunda Maria yang selalu memberi anugerah,
rahmat, dan kekuatan sehingga penulis dapat menyelesaikan penelitian
dan penyusunan tugas akhir ini hingga selesai
2. Bapak Sudi Mungkasi, Ph.D. selaku Dekan Fakultas Sain dan Teknologi.
3. Ibu Rita selaku Ketua Program Studi Teknik Informatika.
4. Ibu Ridowati Gunawan, S. Kom., M.T. selaku Dosen Pembimbing Skripsi
yang telah baik, sabar memberikan waktu, bimbingan, dan motivasi
kepada peniulis.
5. Seluruh Dosen Teknik Informatika yang telah memberikan bekal ilmu dan
pengalaman selama penulis menempuh studi dan seluruh staff Sekretariat
Fakultas Sains dan Teknologi yang banyak membantu penulis dalam
urusan administrasi akademik terutama menjelang ujian tugas akhir dan
yudisium.
6. Kedua Orang Tua saya, F.X Suyatno dan Martha Sumini, terima kasih
untuk setiap cinta, kasih, sayang, dukungan moral dan moril untuk penulis,
dan doa demi kelancaran penyelesaian tugas akhir ini.
7. Margareta Desi Puspitasari seorang kekasih tercinta yang telah banyak
memberi semangat, kasih sayang, motivasi dan banyak membantu saat
suka dan duka.
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI
HALAMAN JUDUL................................................................................................ i
HALAMAN JUDUL (Bahasa Inggris) ................................................................... ii
HALAMAN PERSETUJUAN ............................................................................... iii
HALAMAN PENGESAHAN ................................................................................ iii
PERNYATAAN KEASLIAN KARYA ................................................................ iv
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI.................................. v
HALAMAN PERSEMBAHAN ........................................................................... vii
HALAMAN MOTTO .......................................................................................... viii
ABSTRAK ............................................................................................................. ix
ABSTRACT ............................................................................................................ x
KATA PENGANTAR ........................................................................................... xi
DAFTAR ISI ........................................................................................................ xiii
DAFTAR GAMBAR ........................................................................................... xvi
DAFTAR TABEL ............................................................................................... xvii
BAB I PENDAHULUAN ....................................................................................... 1
1.1.
Latar Belakang ......................................................................................... 1
1.2.
Rumusan Masalah .................................................................................... 3
1.3.
Tujuan ....................................................................................................... 3
1.4.
Batasan Masalah ....................................................................................... 3
1.5.
Sistematika Penulisan ............................................................................... 4
BAB II LANDASAN TEORI ................................................................................. 6
2.1.
Data Mining .............................................................................................. 6
2.2.
Tahapan Data Mining ............................................................................... 7
2.3.
Clustering ................................................................................................. 9
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.4.
Hierarchical Clustering ......................................................................... 11
2.5.
Definisi Metode Divisive ........................................................................ 13
2.6.
Algoritma Metode Divisive .................................................................... 13
2.7.
Uji Akurasi Data ..................................................................................... 19
BAB III METODOLOGI PENELITIAN.............................................................. 21
3.1.
Sumber data ............................................................................................ 21
3.2.
Teknik Analisis Data .............................................................................. 21
BAB IV ANALISIS DAN PERANCANGAN SISTEM ...................................... 29
4.1.
Identifikasi Sistem .................................................................................. 29
4.1.1.
Diagram Use Case........................................................................... 29
4.1.2.
Narasi Use Case .............................................................................. 29
4.2.
Perancangan Umum Sistem.................................................................... 29
4.2.1.
Masukan Sistem .............................................................................. 29
4.2.2.
Proses Sistem .................................................................................. 30
4.2.3.
Output Sistem .................................................................................. 30
4.3.
Perancangan Sistem ................................................................................ 30
4.3.1.
Diagram Aktivitas ........................................................................... 30
4.3.2.
Diagram kelas Analisis ................................................................... 31
4.3.3.
Diagram Sequence ........................................................................... 32
4.3.4.
Diagram Kelas Desain..................................................................... 33
4.3.5.
Rincian Algoritma Setiap Method pada Tiap Kelas ........................ 33
4.4.
Perancangan Stuktur Data ...................................................................... 33
4.4.1.
4.5.
Matriks Dua Dimensi ...................................................................... 34
Perancangan Antar Muka ....................................................................... 35
4.5.1.
Tampilan Halaman Utama .............................................................. 35
BAB V MPLEMENTASI DAN ANALISIS HASIL ........................................... 40
5.1.
Implementasi .......................................................................................... 40
5.1.1.
Pengolahan Data.............................................................................. 40
5.1.2.
Implementasi Antarmuka ................................................................ 46
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.1.3.
Impelentasi Kelas ............................................................................ 53
5.1.4.
Implementasi Struktur Data ............................................................ 54
5.2.
Analisis Hasil ......................................................................................... 58
BAB VI PENGUJIAN SISTEM ........................................................................... 67
6.1.
Rencana Pengujian ................................................................................. 67
6.1.1.
Hasil Pengujian Black-box .............................................................. 68
6.1.2.
Kesimpulan Hasil Pengujian Black-box .......................................... 71
6.2.
Kelebihan dan Kekurangan Sistem ........................................................ 71
6.2.1.
Kelebihan Sistem ............................................................................ 71
6.2.2.
Kekurangan Sistem ......................................................................... 71
BAB VII PENUTUP ............................................................................................. 73
7.1.
Kesimpulan ............................................................................................. 73
7.2.
Saran ....................................................................................................... 74
DAFTAR PUSTAKA ........................................................................................... 75
LAMPIRAN 1 ....................................................................................................... 76
LAMPIRAN 2 ....................................................................................................... 77
LAMPIRAN 3 ....................................................................................................... 82
LAMPIRAN 4 ....................................................................................................... 86
LAMPIRAN 5 ....................................................................................................... 89
LAMPIRAN 6 ....................................................................................................... 95
LAMPIRAN 7 ..................................................................................................... 125
LAMPIRAN 8 ..................................................................................................... 126
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR
Gambar 2.1. Data Mining Sebagai Tahapan Dalam Proses KDD .......................... 8
Gambar 2.2. Gambar Ilustrasi Algoritma Divisive ............................................... 18
Gambar 3.1. Block diagram proses program ........................................................ 21
Gambar 3.2. Jtree pembentukan Cluster ............................................................... 27
Gambar 4.1. Diagram kelas anaisis system ........................................................... 31
Gambar 4.2. Diagram kelas desain sistem ............................................................ 33
Gambar 4.3. Desain interface Halaman Utama tab Range Harga ......................... 35
Gambar 4.4. Desain interface Tab Range Harga................................................... 36
Gambar 4.5. Desain interface Halaman Utama Tab Preprosesing ........................ 38
Gambar 4.6. Desain interface Halaman Utama Tab Custering ............................. 39
Gambar 5.1. Contoh Sampel data transaksi .......................................................... 43
Gambar 5.2. Grafik SSE pembentukan Cluster .................................................... 46
Gambar 5.3. Implementasi Halaman Utama Sistem Tab Range harga ................. 47
Gambar 5.4. Implementasi Halaman Tentang....................................................... 48
Gambar 5.5. Implementasi Halaman Manual Sistem ........................................... 48
Gambar 5.6. Implementasi Input Range Harga..................................................... 49
Gambar 5.7. Implementasi Input Data .................................................................. 50
Gambar 5.8. Implementasi Informasi Tabel Data Preprocessing ......................... 51
Gambar 5.9. Implementasi Hasil Divisive Clustering dan Akurasi ...................... 52
Gambar 5.10. Analisis – Grafik Hasil SSE ........................................................... 59
Gambar 5.11. Karakter cluster .............................................................................. 63
Gambar 5.12. Data Baru........................................................................................ 65
Gambar 5.13. Hasil Cluster Ulang ........................................................................ 66
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL
Tabel 3.1. Data contoh perhitungan jarak ............................................................. 22
Tabel 3.2. Hasil euclidean distance .................................................................... 23
Tabel 3.3. Matrik jarak tahap 2 ............................................................................. 24
Tabel 3.4. Matrik jarak tahap 3 ............................................................................. 25
Tabel 3.5. Matrik jarak tahap 4 ............................................................................. 26
Tabel 3.6. Contoh pembentukan 3 cluster oleh sistem ......................................... 28
Tabel 4.1 Tabel penjelasan diagram kelas analisis ............................................... 31
Tabel 4.2. Contoh Matriks Dua Dimensi .............................................................. 34
Tabel 4.3. Contoh represntasi matriks dua dimensi .............................................. 34
Tabel 5.1. Atribut dalam tabel detail penjualan .................................................... 40
Tabel 5.2 Atribut hasil seleksi............................................................................... 42
Tabel 5.3. Hasil preprocessing data ...................................................................... 44
Tabel 5.4. Implementasi Kelas .............................................................................. 53
Tabel 5.5. Hasil Perhitungan Nilai SSE ................................................................ 59
Tabel 5.6. Hasil Clustering Divisive untuk 159 data ............................................ 59
Tabel 5.7 Nilai rata-rata variabel quantity pada percobaan ke-7 .......................... 61
Tabel 5.8. Hasil Clustering Divisive untuk penambahan data baru ...................... 65
Tabel 6.1. Rencana pengujian Blackbox ............................................................... 67
Tabel 6.2. Tabel Pengujian input range harga....................................................... 68
Tabel 6.3. Tabel Pengujian input Data .................................................................. 69
Tabel 6.4. Tabel Pengujian Clustering .................................................................. 70
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I
PENDAHULUAN
BAB I PENDAHULUAN
1.1. Latar Belakang
Seiring perkembangan jaman yang semakin maju, peranan teknologi
informasi dalam dunia bisnis masa kini mengalami perkembangan yang sangat
pesat
dimana
perkembangannya
tidak
dapat
dihindari.
Dampak
dari
perkembangan tersebut juga memiliki pengaruh lain terhadap dunia bisnis seperti
peningkatan efektifitas dan efisiensi kerja, peningkatan marketing melalui digital
marketing, atau peningkatan potensi bisnis untuk menjangkau berbagai macam
permintaan konsumen. Hal tersebut memicu persaingan antar perusahaan yang
lain oleh karena itu para pelakunya harus senantiasa memikirkan cara-cara untuk
terus bertahan dan jika mungkin mengembangkan sekala bisnis mereka.
Perusahaan XYZ merupakan salah satu perusahaan yang bergerak di
bidang distribusi helm. Permintaan akan produk yang ada merupakan bagian yang
sangat penting dalam rantai penyediaan produk. Masalah yang muncul dari
keadaan di atas adalah ketidaksiapan produsen dalam memenuhi jumlah setiap
permintaan pasar karena permintaan dapat terjadi secara tiba-tiba atau di luar
kendali perusahaan. Mengatasi hal tersebut pihak produsen diharapkan harus
dapat terus meningkatkan keuntungan, salah satu caranya dengan menyediakan
produk helm sesuai dengan permintaan pasar agar tidak terjadi kekurangan atau
kelebihan produk. Sehingga diperlukan sistem yang mampu memprediksi
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ketersedian jumlah helm yang akan dipasarkan sesuai dengan permintaan agar
kegiatan penjualan dapat berjalan secara optimal.
Dengan mengimplementasikan
data mining menggunakan metode
clustering merupakan cara yang efektif dalam melakukan peramalan, karena
metode ini akan mengelompokan barang penjualan kedalam beberapa klaster yang
terpisah sesuai dengan jumlah transaksi yang lakukan. Dari masing-masing klaster
yang terbentuk akan kelihatan barang mana saja yang memiliki tingkat pembelian
yang tinggi ataupun rendah. Dari data tersebut akan didapatkan data yang valid
tentang trend pembelian atau pola konsumsi konsumen.
Pembahasan dalam tugas akhir ini dititikberatkan hanya pada metode
divisive. Metode divisive merupakan kebalikan dari metode agglomeratif dalam
analisis klaster. Metode divisive clustering termasuk dalam analisis klaster
hierarchical. Pada setiap langkahnya, metode divisive terjadi penambahan
kelompok kedalam nilai dua nilai terkecil, sampai akhirnya semua elemen
terkelompokkan.
Alasan
mengapa
menggunakan
metode
divisive
untuk
pengelompokan penjualan karena tidak hanya menghasilkan jumlah cluster
sebanyak inputan cluster tetapi metode ini juga dapat menghasilkan jumlah
cluster dengan jumlah maksismal sama dengan jumlah sampel atau sesuai
kebutuhan. Dengan kata lain jika jumlah cluster lebih banyak berarti memberikan
banyak pilihan bagi produsen untuk mentukan strategi pasar berikutnya.
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.2. Rumusan Masalah
Dari latar belakang diatas dapat dirumuskan masalah dari penelitian ini
antara lain:
1. Bagaimanakah
langkah-langkah
penerapan
metode
divisive
dalam
pembentukan klaster pada data penjualan produk helm di PT. XYZ?
1.3. Tujuan
Tujuan dari penelitian ini adalah melakukan analisis terhadap data
penjualan untuk mengetahui prediksi pendistribusian produk helm di perusahaan
XYZ dengan bantuan data mining menggunakan algoritma divisive.
1.4. Batasan Masalah
Adapun batasan masalah dalam penelitian ini adalah sebagai berikut :
1. Data penjualan yang digunakan dalam proses data mining adalah tahun 2014.
2. Data yang digunakan sebagai atribut adalah data penjualan, yaitu berdasarkan
kelompok harga, harga jual, quantity, nama barang (merk, tipe, dan warna),
wilayah dari produk tersebut.
3. Berdasarkan input data penjualan produk helm di perusahaan XYZ tahun
2014, output yang dihasilkan program ini adalah berupa klaster produk
penjualan.
4. Pengguna sistem adalah bagian pemasaran produk helm di perusahaan XYZ.
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.5. Sistematika Penulisan
BAB I PENDAHULUAN
Pada bab ini berisi gambaran umum penelitian meliputi: latar belakang masalah,
batasan masalah, tujuan tugas akhir, rumusan masalah, dan sistematika penulisan.
BAB II LANDASAN TEORI
Pada bab ini berisi mengenai penjelasan dan uraian singkat mengenai teori-teori
yang berkaitan dengan topik dari tugas akhir ini.
BAB III METODOLOGI PENELITIAN
Pada bab ini akan dijelaskan mengenai metode yang digunakan dalam penelitian
ini.
BAB IV ANALISIS DAN PERANCANGAN
Pada bab ini berisi tentang analisis dan perancangan sistem yang akan dibuat
meliputi gambaran umum sistem, data yang dibutuhkan untuk penelitian,
percancangan struktur data, dan perancangan antar muka.
BAB V IMPLEMENTASI DAN ANALISIS HASIL
Bab ini menjelaskan mengenai implementasi dari analisis yang telah dibuat pada
tahap sebelumnya.
4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB VI PENGUJIAN SISTEM
Pada bab ini menjelaskan mengenai pengujian terhadap sistem yang telah dibuat
dan evaluasi sistem tersebut.
BAB VII PENUTUP
Bab ini berisi tentang kesimpulan dari penelitian yang telah dilakukan dan saran
dari sistem yang nantinya akan dikembangkan.
DAFTAR PUSTAKA
LAMPIRAN
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II
LANDASAN TEORI
BAB II LANDASAN TEORI
Pada bab ini akan menjelaskan landasan teori yang digunakan dalam
penelitian ini. Agar sebuah penelitian dapat berhasil maka diperlukan refrensi
sebagai landasan teorinya. Landasan teori tersebut berisi tentang pengertian data
mining, tahapan data mining atau tahapan dalam proses Knowledge Discovery In
Databases, hierarchical clustering sebagai algorima yang digunakan untuk
pengelompokan obyek data dari variabel yang telah dipilih dan bagian terakhir
dalam bab ini akan dipaparkan tentang uji akurasi data.
2.1. Data Mining
Data mining adalah serangkaian proses untuk menggali nilai tambah
berupa pengetahuan yang selama ini tidak diketahui secara manual. Data mining
adalah proses yang menggunakan teknik statistik, perhitungan, kecerdasan
buatan
dan machine
learning
untuk mengekstrasi
dan
mengidentifikasi
informasi yang bermanfaat dan pengetahuan yang terkait dari berbagai basis
data besar (Hanif, 2007).
Data mining sering juga disebut knowledge discovery in database (KDD),
adalah kegiatan yang meliputi pengumpulan, pemakaian data historis untuk
menemukan keteraturan, pola atau hubungan dalam set data berukuran besar.
Keluaran dari data mining ini bisa dipakai untuk memperbaiki pengambilan
keputusan di masa depan (Santosa, 2007). Data mining adalah kegiatan
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
menemukan pola yang menarik dari data dalam jumlah besar, data dapat disimpan
dalam database, data warehouse, atau penyimpanan informasi lainnya.
Berdasarkan beberapa pengertian tersebut dapat ditarik kesimpulan bahwa
data mining adalah suatu teknik menggali informasi berharga yang terpendam atau
tersembunyi pada suatu database yang sangat besar sehingga ditemukan suatu
pola yang menarik yang sebelumnya tidak diketahui. Beberapa metode yang
sering disebut-sebut dalam literatur data mining antara lain clustering,
classification, association rules mining, neural network, genetic algorithm dan
lain-lain (Pramudiono, 2006). Data mining sering digunakan untuk membangun
model prediksi/inferensi yang bertujuan untuk memprediksi tren masa depan atau
perilaku berdasarkan analisis data terstruktur.
2.2. Tahapan Data Mining
Data tidak dapat langsung diolah dengan menggunakan sistem data
mining. Data tersebut harus dipersiapkan terlebih dahulu agar hasil yang diperoleh
dapat lebih maksimal. Dan tahapan dalam proses Knowledge Discovery In
Databases (KDD) dapat dilihat pada Gambar 2.1 terdiri dari tahapan-tahapan
sebagai berikut (J. Han & Kamber, 2006):
7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 1
Gambar 2.1. Data Mining Sebagai Tahapan Dalam Proses KDD
(Sumber : J. Han & Kamber 2006)
1. Cleaning and Integration
Langkah pertama adalah dengan melakukan pembersihan terhadap data
dan penggabungan data. Proses data cleaning bertujuan untuk menghilangkan
noise dan data yang tidak konsisten dan proses data integration bertujuan untuk
menggabungkan sumber data dari berbagai tempat menjadi satu penyimpanan.
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Selection and Transformation
Pada tahap selection dan transformation, data dan atribut yang akan
digunakan diambil dari database untuk dianalisis. Selanjutnya data tersebut
diubah menjadi bentuk yang tepat untuk di-mining.
3. Data Mining
Data mining adalah proses mencari pola atau informasi menarik dalam
data terpilih dengan menggunakan teknik atau metode tertentu. Teknik, metode
atau algoritma dalam data mining sangat bervariasi. Pemilihan metode atau
algoritma yang tepat sangat bergantung pada tujuan dan proses KDD secara
keseluruhan
4. Evaluation and Presentation
Pada tahap ini, dilakukan identifikasi
menarik dari hasil
pola-pola
yang
benar-benar
data mining. Setelah didapatkan pola yang dihasilkan
dari proses data mining perlu divisualisasikan atau ditampilkan dalam bentuk
yang mudah dimengerti oleh pihak yang berkepentingan.
2.3. Clustering
Clustering atau klasterisasi adalah suatu alat bantu pada data mining yang
bertujuan untuk mengelompokan obyek-obyek ke dalam klaster-klaster. Klaster
adalah sekelompok atau sekumpulan obyek-obyek data yang similar satu sama
lain dalam kalaster yang sama dan dissimiliar terhadap obyek-obyek yang berbeda
klaster. Obyek akan dikelompokan ke dalam satu atau lebih klaster sehingga
obyek-obyek yang berbeda dalam satu klaster akan mempunyai kesamaan yang
tinggi antara satu dengan yang lainya. Obyek-obyek dikelompokan berdasarkan
9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
prinsip memaksimalkan kesamaan obyek pada klaster yang sama dan
meminimalkan ketidaksamaan pada klaster yang berbeda. Kesamaan obyek
bisanya diperoleh dari nilai-nilai atribut yang menjelaskan obyek data, sedangkan
obyek-obyek data biasanya direpresentasikan sebagai sebuah titik dalam ruang
multidimensi.
Dengan menggunakan klasterisasi, metode ini dapat mengidentifikasi
daerah yang padat, menemukan pola-pola distribusi secara keseluruhan, dan
menemukan keterkaitan yang menarik antar atribut-atribut data. Dalam data
mining, usaha difokuskan pada metode-metode penemuan untuk klaster pada
basisdata berukuran besar secara efektif dan efesien. Kebutuhan klasterisasi dalam
data mining meliputi skalabilitas, kemampuan untuk menangani tipe atribut yang
berbeda, mampu menagani dimensionalitas yang tinggi, menangani data yang
mempunyai noise, dan dapat diterjemahkan dengan mudah.
Secara garis besar, terdapat beberapa metode klasterisasi data. Pemilihan
metode klasterisasi tergantung pada tipe data dan tujuan klasterisasi itu sendiri.
Metode-metode berserta algoritmanya termasuk didalamnya meliputi:
1. Partitioning Method : Membuat berbagai partisi dan kemudian
mengevaluasi partidi tersebut dengan beberapa kriteria. Yang termasik ke
dalam metode ini meliputi algoritma K-Means, K-Medoid, PROCLUS,
CLARA, CLARANS, dana PAM
2. Hierarchical Method : Membuat suatu penguraian secara hierarikal dari
himpunan data dengan menggunakan beberapa kriteria. Metode ini terdiri
10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
atas dua macam, yaitu Agglomerative yang menggunakan stratedi bottomup dan Divisive yang menggunakan strategi top-down. Metode ini
meliputi
algoritma
BIRCH,
AGNES,
DIANA,
CURE,
dan
CHAMALEON.
3. Density-based Method : Metode ini berdasarkan konektivitas dan fungsi
densitas. Metode ini meliputi algoritma DBSCAN, OPTICS, dan
DENCLU.
4. Grid-base Method : Metode ini berdasarkan suatu struktur granularitas
multi-level.
Metode
klasterisasi
ini
meliputi
algoritma
STING,
WaveCluster, dan CLIQUE.
5. Model-base Method : Suatu model dihipotesiskan untuk masing-masing
klaster dan ide untuk mencari best fit dari model tersebut untuk masingmasing yang lain. Metode klasterisasi ini meliputi pendekatan statistic,
yaitu algoritma COBWEB dan jaringan syaraf tiruan, yaitu SOM.
2.4. Hierarchical Clustering
Metode hierarchical clustering mengelmpokan objek kedalam sebuah
pohon klaster.
Hierarchical
clustering
dapat
diklasifikasikan
sebagai
agglomerative atau divisive, tergantung pada komposisi hirarki yang di tampilkan
dalam pendekatan bottom-up atau top down (split). (Han & Kamber, 2006).
Pada umumya terdapat dua metode hierarchical clustering:
1. Agglomerative, metode ini dimulai dari menempatkan objek ke dalam satu
cluster dan selanjutnya digabungkan ke dalam cluster yang lebih besar
11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
hingga sebua objek terhubung dalam satu buah cluster atau hingga
mencapai jumlah cluster yang diinginkan.
2.
Divisive, kebalikan dari metode agglomerative. Metode ini dimulai dari
satu cluster dengan seluruh objek data di dalamnya, selanjutnya cluster
tersebut dipecah kedalam cluster yang lebih kecil hingga setiap cluster
memiliki dua atau satu buah objek atau hingga mencapai jumlah cluster
yang diinginkan.
Sebelum pembentukan sebuah cluster perlu dihitung jarak kemiripan
antara obyek data. Ada beberapa cara untuk mengetahui kemiripan data. Satu
di antara cara yang ada adalah similarity matrix dengan perhitungan euclidean
distance. Euclidean distance didefinisikan sebagai berikut:
(
)
√(|
|
|
|
|
|
|
| )
(2.1)
Atau dapat disingkat dengan:
(
)
√∑
Keterangan:


adalah jumlah atribut atau dimensi
dan
adalah data
12
(
)
(2.2)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.5. Definisi Metode Divisive
Teknik divisive clustering termasuk kedalam analisis hierarchical
clustering. Pada setiap langkahnya, metode divisive terjadi penambahan kelompok
kedalam dua nilai terkecil. Sampai akhirnya semua element terkelompokan.
Teknik divisive merupakan proses pengklasteran yang didasarkan pada
persamaan nilai rata-rata antar objek. Jika sebuah objek memiliki persamaan nilai
rata-rata terbesar maka objek tersebut akan terpisah dan berubah menjadi splinter
group. Pada teknik divisive ini perhitungan juga di lihat dari perbedaan atau
selisih anatara persamaan nilai rata-rata dengan nilai elemen matrik yang telah
menjadi splinter group. Jika selisih nilai antara persamaan nilai rata-rata dengan
nilai elemen matrik splinter group bernilai negatif, maka perhitungan terhenti
sehingga harus dibuat matrik baru untuk mendapatkan klaster yang lain.
Perhitungan ini terus dilakukan sedemikian sehingga semua objek terpisah.
2.6. Algoritma Metode Divisive
Misalkan diberikan data X matriks berukuran n x p (n = jumlah sampel
data, p = variabel setiap data). Xij= data sampel ke-j (j = 1, 2, …, n) dan variabel
ke-i (i = 1, 2, …, p).
1. Bentuk suatu matriks jarak dengan menggunakan jarak euclidean.
Rumusnya berikut :
√∑
(
13
)
(2.3)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Asumsikan setiap data dianggap sebagai klaster. Jika diberikan n data dan
c klaster maka n = c, maka diperoleh matriks jaraknya, yaitu:
( )
(2.4)
[
]
2. Hitung nilai rata-rata setiap obyek dengan obyek lainnya
3. Tentukan objek yang memiliki nilai rata-rata yang terbesar, objek yang
memiliki nilai rata-rata yang terbesar akan dipisah dan berubah menjadi
splinter group.
4. Hitung selisih nilai antara elemen matriks splinter group dengan nilai
rata-rata setiap objek yang tersisa.
5. Tentukan objek yang memiliki nilai selisih terbesar antara elemen matriks
splinter group dengan nilai rata-rata. Jika nilai selisih tersebut bernilai
positif, maka objek yang memiliki nilai selisih terbesar bergabung dengan
splinter group.
6. Ulangi langkah satu sampai lima sedemikian sehingga semua nilai selisih
antara nelemen matriks splinter group dengan nilai rata-rata bernilai
negatif dan klaster terbagi menjadi dua klaster baru.
14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
CONTOH ALGORITMA DIVISIVE :
Untuk memperjelas metode tersebut dapat diperhatikan contoh berikut.
Diketahui distance matriks D dengan 5 sample a, b, c, d, e seperti dibawah ini.
[
]
Data yang terdapat dalam matrik memiliki nilai yang berbeda antara objek
a, b, c, d, dan e. Dari matrik diatas kemudian akan dihitung nilai rata-rata setiap
obyek dengan obyek lainnya seperti dalam Tabel 2.1:
Tabel 2.1 Average dissimilarity to the other objects tahap 1
Objects
Average dissimilarity to the other objects
a
(2+6+10+9)/4=6.75
b
(2+5+9+8)/4=6.00
c
(6+5+4+5)/4=5.00
d
(10+9+4+3)/4=6.50
e
(9+8+5+3)/4=6.25
Dari tabel 2.1 objek a disebut splinter group. Sampai pada langkah ini
menghasilkan dua grup yaitu grup {a} dan grup {b,c,d,e}, tetapi perhitungan tidak
berhenti sampai disini. Untuk setiap objek dari group yang besar harus di hitung
average dissimilarity dengan objek yang tersisa, dan membandingkan itu dengan
average dissimilarity dengan objek dari splinter group. Pada Tabel 2.2
15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
menghitung selisih dari nilai rata-rata obyek yang tersisa dengan nilai rata-rata
dari splinter group:
Tabel 2.2 Difference tahap 1
Average dissimilarity
Average dissimilarity to
to the other objects
objects of splinter group
b
(5.0+9.0+8.0)/3 = 7.33
2.00
5.33
c
(5.0+4.0+5.0)/3 = 4.67
6.00
-1.33
d
(9.0+4.0+3.0)/3 = 5.33
10.00
-4.67
e
(8.0+5.0+3.0)/3 = 5.33
9.00
-3.67
Objects
Difference
Hasil perhitungan nilai selisih dalam Tabel 2.2 terlihat bahwa perbedaan
terbesar terdapat pada objek b. Oleh sebab itu, objek b berpindah bagian menjadi
splinter group. Jadi, splinter group yang satu {a,b} dan group sisanya {c,d,e}.
Pada Tabel 2.3 dilakukan perhitungan ulang masing-masing group dengan obyek
yang ada dan tersisa didalamnya, maka didapat:
Tabel 2.3 Difference tahap 2
Average dissimilarity
Average dissimilarity to
to the other objects
objects of splinter group
c
(5.0+4.0)/2 = 4.50
(5.0+3.0)/2 = 4.00
-1.00
d
(4.0+3.0)/2 = 3.50
(10.0+9.0)/2 = 9.50
-6.00
e
(5.0+3.0)/2 = 4.00
(9.0+8.0)/2 = 8.50
-6.00
Objects
Difference
Pada Tabel 2.3 terlihat, untuk semua difference bernilai negatif. Oleh sebab
itu tidak terjadi perpindahan. Proses dihentikan dan langkah divisive pertama
selesai. Dimana data dibagi dalam dua klaster, yaitu {a,b}, dan {c,d,e}.
16
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dalam langkah berikutnya akan dilakukan pembagian klaster. Pembagian
klaster dilakukan pada klaster yang memiliki rata-rata terbesar. Rata-rata dari
klaster {a,b} adalah 2, dan untuk klaster {c,d,e} adalah 5. Oleh sebab itu, akan
terjadi pembagian klaster {c,d,e}, dengan matrik sebagai berikut :
[
]
Tabel 2.4 Average dissimilarity to the other objects tahap 2
Objects
Average dissimilarity to the other objects
c
(4.0+5.0)/2 = 4.50
d
(4.0+3.0)/2 = 3.50
e
(5.0+3.0)/2 = 4.00
Pada Tabel 2.4 adalah hasil perhitungan nilai rata-rata dengan objek yang
tersisa. Ternyata objek c yang memiliki nilai positif terbesar, maka objek c masuk
dalam splinter group. Jadi, terdapat dua grup yaitu {c} dan {d,e}, selanjutnya
akan dihitung nilai selisih dari nilai rata-rata obyek yang tersisa dengan nilai ratarata dari splinter group seperti dalam Tabel 2.5:
Tabel 2.5 Difference tahap 3
Average dissimilarity
Average dissimilarity to
to the other objects
objects of splinter group
d
3.0
4.00
-1.00
e
3.0
5.00
-2.00
Objects
17
Difference
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dari Tabel 2.5 memperlihatkan proses pembentukan dihentikan karena semua
difference bernilai negatif. Karena itu, pembagian pada langkah dua {c,d,e}
adalah {c} dan {d,e}. Jadi, klaster yang didapat {a,b}, {c}, dan {d,e}. klaster {c}
disebut singleton karena hanya mengandung satu objek. Hasil dari hierarikal
digambarkan seperti pada Gambar 2.2 :
a
a,b
a,b,c,d,e
b
c,d,e
c
d,e
Gambar 2
Gambar 2.2. Gambar Ilustrasi Algoritma Divisive
18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.7. Uji Akurasi Data
Setelah didapatkan hasil olahan dengan divisive perlu diuji akurasinya
supaya diketahui validitas data tersebut. Ada beberapa teknik untuk uji akurasi
data tersebut. Karena metode yang digunakan adalah metode clustering maka
dapat digunakan dua jenis akurasi, yaitu Internal Evaluation
dan External
Evaluation (Prasetyo, 2014).
1. Internal Evaluation
Internal Evaluation merupakan pengujian data cluster demi validitasnya
tanpa informasi dari luar. Validasi ini contohnya adalah cohesion,
separation, silhouette coefficient, dan sum of square error(SSE).
2. External Evaluation
Dengan menggunakan external evaluation akan diketahui kedekatan antara
label cluster terbentuk dengan class yang disediakan. External evaluation
ini dapat dilakukan dengan confusion matrix, entropy, dan purity.
Pada penelitian ini yang akan digunakan untuk uji akurasi adalah internal
evaluation, secara khusus dengan menggunkan teknik sum of square error (SEE).
Pada setiap pembentukan cluster akan dihitung nilai SSE-nya. Semakin kecil nilai
SSE menunjuakan bahwa cluster yang dibentuk semakin baik pula. Berukut
formula SSE yang akan digunakan (Lior Rokach):
∑
∑
‖
19
‖
(2.5)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Keterangan

adalah jarak data x di indeks i

adalah rata-rata semua jarak data
di cluster k
Berikut adalah algoritma SSE:
1. Tentukan matriks K yang akan dihitung menggunakan SSE


adalah data set dari cluster k
Cluster k adalah anggota dari matriks K
2. Jika k=1
3. Hitung rata-rata cluster k (
)…a
4. Lakukan langkah 5 dan 7 untuk setiap data x
5. Kurangkan a dengan data x di indek i (‖
6. Hitung
…c
7. c dijumlahkan untuk setiap cluster k … d
8. Jumlahkan total d di matriks K
9. Selesai
20
‖) … b
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III
METODOLOGI PENELITIAN
BAB III METODOLOGI PENELITIAN
Berdasarkan pada landasan teori yang telah disampaikan pada bab kedua.
Pada bab ini akan dibahas mengenai metodologi yang digunakan dalam penelitian
ini. Bab ketiga ini akan dipaparkan tentang sumber data yang diperoleh dan teknik
analisis data.
3.1. Sumber data
Data yang digunakan adalah data penjualan tahun 2014 pada perusahaan
XYZ. Data yang digunakan merupakan hasil eksport dari database perusahaan
berjenis file csv. Total data transaksi penjualan bejumlah 933 record.
3.2. Teknik Analisis Data
Data yang telah diperoleh selanjutnya mulai dianalisis. Berkaitan dengan
tahap-tahap teknik analisis dan jalannya program digambarkan dengan block
diagram sebagai berikut
Data
Preprocessing
Perhitungan
Jarak
Divisive
Output
Jtree
Akurasi
Gambar 3
Gambar 3.1. Block diagram proses program
1. Data
Data yang digunakan dalam penelitian ini adalah data yang diperoleh dari
perusahaan XYZ. Data ini merupakan data transaksi penjualan produk helm. Data
penjualan ini bersifat penting karena mengandung informasi penjualan secara
21
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
detail. Data yag digunakan adalah data penjualan tahun 2014 selama kurun waktu
satu tahun.
2. Preprocessing
Data yang sudah didapat selanjutnya diolah dengan tahap preprocessing.
Pada tahap ini akan dilakukan data cleaning, data integration, data selection, dan
data transformation.
3. Perhitungan Jarak
Setalah melalui tahap preprocessing, tahap selanjutnya adalah mengukur
jarak setiap data. Perhitungan jarak menggunakan euclidean distance, seperti
yang telah dipaparkan pada bab kedua dalam penelitina ini. Dengan menggunakan
perhitungan euclidean distance akan didapatkan jarak antar obyek data dalam
sebuah matriks. Matriks tersebut nantinya akan digunakan untuk tahap
selanjutnya, yaitu clustering menggunakan metode divisive. Tabel 3.1 adalah
contoh data yang akan digunakan untuk perhitungan euclidean distance:
Tabel 1
Tabel 3.1. Data contoh perhitungan jarak
Data
x
y
a
87.0
89.0
b
84.0
76.0
c
83.0
70.0
d
80.0
74.0
e
82.0
83.0
f
81.0
92.0
22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dengan menggunakan rumus perhitungan euclidean distance, didapatkan
matriks jarak seperti pada Tabel 3.2:
Tabel 2
Tabel 3.2. Hasil euclidean distance
a
b
c
d
e
f
a
0.0
13.342
19.417
16.553
7.811
6.709
b
13.342
0.0
6.083
4.473
7.281
16.279
c
19.417
6.083
0.0
5.0
13.039
22.091
d
16.553
4.473
5.0
0.0
9.22
18.028
e
7.811
7.281
13.039
9.22
0.0
9.056
f
6.709
16.279
22.091
18.028
9.056
0.0
4. Divisive
Dalam tahap ini hasil dari matriks jarak akan digunakan untuk
pembentukan cluster. Masing-masing obyek data akan dikelompokan berdsarkan
jarak kemiripannya. Proses pengelompokan menggunakan perhitungan divisive.
Langkah-langkah perhitungannya seperti yang dapat dilihat dalam bab kedua
dalam penelitian ini. Berikut ini penerapan algoritma divisive:
Tahap 1

Langkah pertama: Dari matriks jarak pada Tabel 3.2 asumsikan setiap data
dianggap sebagai klaster.

Langkah kedua : Hitung nilai rata-rata setiap objek dengan objek lainnya.
 Rata-rata objek a = 10.63866667
 Rata-rata objek b = 7.909666667
 Rata-rata objek c = 10.93833333
 Rata-rata objek d = 8.879
23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
 Rata-rata objek e = 7.7345
 Rata-rata objek f = 12.02716667

Langkah ketiga: Tentukan objek yang memiliki nilai rata-rata yang terbesar,
objek yang memiliki nilai rata-rata yang terbesar akan terpisah dan berubah
menjadi splinter group. Diperoleh objek f memiliki rata-rata terbesar, maka
objek f keluar dan menjadi splinter group.
Tahap 2
Diperoleh matrik jarak yang baru, seperti pada Tabel 3.3:
Tabel 3

Tabel 3.3. Matrik jarak tahap 1
a
b
c
d
e
a
0.0
13.342
19.417
16.553
7.811
b
13.342
0.0
6.083
4.473
7.281
c
19.417
6.083
0.0
5.0
13.039
d
16.553
4.473
5.0
0.0
9.22
e
7.811
7.281
13.039
9.22
0.0
Ulangi langkah kedua : Dari matriks jarak yang baru, kemudian pilih rata-rata
antar antar objek dengan objek lainnya.
 Rata-rata objek a = 11.4246
 Rata-rata objek b = 6.2358
 Rata-rata objek c = 8.7078
 Rata-rata objek d = 7.0492
 Rata-rata objek e = 7.4702
24
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Kemudian selisihkan setiap nilai rata-rata tersebut dengan elemen matrik
splinter group.
 Rata-rata objek a = 11.4246 - 6.709 = 4.7156
 Rata-rata objek b = 6.2358 - 16.279 = -10.0432
 Rata-rata objek c = 8.7078 - 22.091 = -13.3832
 Rata-rata objek d = 7.0492 - 18.028 = -10.9788
 Rata-rata objek e = 7.4702 - 9.056 = -1.5858

Langkah ketiga : tentukan objek yang memiliki nilai selisih terbesar, objek
yang memiliki nilai selisih terbesar akan terpisah dan bergabung dengan
splinter group. Objek a memiliki nilai selisih terbesar, maka objek a
bergabung dengan objek f ke dalam splinter group.
Tahap 3
Diperoleh matrik jarak yang baru, , seperti pada Tabel 3.4:
4

Tabel 3.4. Matrik jarak tahap 3
b
c
d
e
b
0.0
6.083
4.473
7.281
c
6.083
0.0
5.0
13.039
d
4.473
5.0
0.0
9.22
e
7.281
13.039
9.22
0.0
Ulangi langkah kedua : Dari matriks jarak yang baru, kemudian pilih rata-rata
antar antar objek dengan objek lainnya.
 Rata-rata objek b = 4.45925
 Rata-rata objek c = 6.0305
25
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
 Rata-rata objek d = 4.67325
 Rata-rata objek e = 7.385
Kemudian selisihkan setiap nilai rata-rata tersebut dengan elemen matrik
splinter group.
 Rata-rata objek b = 4.45925 - 14.8105 = -10.35125
 Rata-rata objek c = 6.0305 - 20.754 = -14.7235
 Rata-rata objek d = 4.67325 - 17.2905 =-12.61725
 Rata-rata objek e = 7.385 - 8.4335 = -1.0485
Karena semua nilai selisih bernilai negatif, maka algoritma kembali ke
awal. Rata-rata objek terbesar pada matriks tersebut dimiliki oleh objek e,
maka objek e keluar dan membentuk klaster baru.
Tahap 4
Diperoleh matrik jarak yang baru, , seperti pada Tabel 3.5:
5

Tabel 3.5. Matrik jarak tahap 4
b
c
d
b
0.0
6.083
4.473
c
6.083
0.0
5.0
d
4.473
5.0
0.0
Ulangi langkah kedua : Dari matriks jarak yang baru, kemudian pilih rata-rata
antar antar objek dengan objek lainnya.
 Rata-rata objek b = 3.518666667
 Rata-rata objek c = 3.694333333
26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
 Rata-rata objek d = 3.157666667
Kemudian selisihkan setiap nilai rata-rata tersebut dengan elemen matrik
splinter group.
 Rata-rata objek b = 3.518666667 - 7.281 = -3.762333333
 Rata-rata objek c = 3.694333333 - 13.039 = -9.344666667
 Rata-rata objek d = 3.157666667 - 9.22 = -6.062333333
Karena semua nilai selisih bernilai negatif, maka algoritma berhenti
sampai disini. Maka objek b, c,dan d keluar dan membentuk klaster baru.
Dengan mengimplementasikan algoritma divisive menggunakan java, data
sampel yang digunakan pada Tabel 3.1 menghasilhan skruktur tree cluster seperti
pada Gambar 3.2:
Gambar 4
Gambar 3.2. Jtree pembentukan Cluster
27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5. Cluster
Proses Divisive menghasilkan jumlah cluster maksimum sesuai dengan
proses iterasi pada algoritma divisive. Hasil pembentukan cluster ditampilkan pula
kedalam struktur tree. Dari hasil Jtree tersubut juga dapat ditentukan cluster yang
diinginkan seperti pada Tabel 3.6.
Tabel 6
Tabel 3.6. Contoh pembentukan 3 cluster oleh sistem
Cluster 1
Cluster 2
Cluster 3
a
e
c
f
b
d
6. Perhitungan Akurasi
Pada penelitian ini akan dilakukan uji akurasi pada setiap pembentukan
cluster dan mengevaluasi pola yang ditemukan dari hasil pengelompokan.
Sebelum sistem menyimpan cluster yang sudah terbentuk, masing-masing cluster
akan di hitung menggunakan sum of square error (SSE). Setelah semua cluster
terbentuk akan ditotal jumlah SSE-nya. Dengan demikian ada sejumlah percobaan
pembentukan cluster yang akan dihitung SSE-nya. SSE dengan nilai terendah
mengindikasikan bahwa cluster yang tebentuk adalah yang paling baik. Pada
penelitian ini dilakukan 2 sampai 7 percobaan pembentukan cluster sesuai dengan
jumlah obyek data, namun tidak menutup kemungkinan jika percobaan yang
dilakukan bisa lebih atau kurang atau lebih dari 7. Hal ini tergantung jumlah
obyek data dan kebutuhan yang ada.
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV
ANALISIS DAN PERANCANGAN SISTEM
BAB IV ANALISI S DAN P ERANCANGAN SI STEM
Pada bab ini akan dijelaskan mengenai perancangan sistem yang akan
diimplementasikan. Meliputi identifikasi sistem, perancangnan umum sistem,
perancangan system, perancangan struktur data dan perancangan antar muka.
4.1. Identifikasi Sistem
4.1.1. Diagram Use Case
Diagram use case adalah sebuah gambaran fungsi/pekerjaan yang dapat
dilakukan oleh sistem tersebut. diagram use case yang digunakan dapat dilihat
pada bagian lampiran 1 untuk melihat definisi use case tersebut.
4.1.2. Narasi Use Case
Pada bagian ini setiap use case akan dirinci dalam sebuah narasi yang
merupakan diskripsi tekstual dari kejadian bisnis dan bagaimana pengguna
berinteraksi dengan sistem untuk menyelesaikan tugas tersebut. untuk mengetahui
secara keseluruhan narasi use case dapat dilihat pada lampiran 2.
4.2. Perancangan Umum Sistem
4.2.1. Masukan Sistem
Masukan yang digunakan dalam sistem ini berasal dari tabel database
yang kemudian di ekspor kedalam file jenis *.csv file. Ketentuan eksport juga
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
perlu diperhatikan. Pilihan untuk menyertakan nama kolom harus dipilih, pemisah
kolom mengunakan tanda koma, dan tidak boleh ada nilai null.
4.2.2. Proses Sistem
Proses dari sistem yang menghasilkan cluster yang berfungsi untuk
mempediksi ini terdiri dari beberapa langkah:
a. Memasukan nilai range harga kelompok, kelompok 1 sampai dengan 5.
b. Penginputan file data penjualan yang akan digunakan untuk proses data
mining.
c. Proses clustering untuk memprediksi dijalankan.
d. Uji akurasi dari cluster yang telah berhasil dibentuk dan menganalisa hasil
cluster.
4.2.3. Output Sistem
Sistem yang akan dirancang ini akan menampilkan hasil proses clustering
diantaranya, jumlah cluster yang terbentuk, anggota setiap cluster, dan struktur
tree pembentukan cluster.
4.3. Perancangan Sistem
4.3.1. Diagram Aktivitas
Diagram aktivitas berfungsi untuk menunjukan seluruh tahapan alur kerja
dari sistem yang dirancang.
1. Diagram aktivitas input range harga
2. Diagram aktivitas input data file
30
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Diagram Aktivitas clustering
4. Diagram Aktivitas Simpan Hasil Clustering
Penjelasan dari masing-masing diagram aktivitas akan di jelaskan pada
bagian lampiran 3
4.3.2. Diagram kelas Analisis
HalamanUtama
HalamanManual
User
HalamanTentang
KoneksiDB
ControlRangeHarga
Divisive
verteks
DataObyek
RangeHarga
Gambar 5
Tabel 7
Gambar 4.1. Diagram kelas anaisis system
Tabel 4.1 Tabel penjelasan diagram kelas analisis
No Nama kelas
Jenis
Keterangan
1
Controller
Kelas berisi query untuk menyimpan nilai range
controlRangeHarga
harga, mengupdate nilai range harga, menghapus dat
range harga, dan menampilkan nilai range harga
yang sudah ada dari database.
31
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
KoneksiDB
Controller
Kelas ini digunakan untuk menghubungkan sistem
dengan database yang di gunakan oleh sistem.
3
DataObyek
Model
Kelas ini digunakan untuk menyimpan hasil input
data penjualan
4
Divisive
Model
Kelas ini di gunakan untuk membentuk sebuah
matriks utama. Didalam kelas ini juga terdapat
method-method untuk perhitungan divisive.
5
RangeHarga
Model
Kelas ini digunakan untuk menyimpan nilai range
harga kelompok.
6
Verteks
Model
Kelas ini di gunakan untuk membentuk sebuah
vertex dalam matriks.
7
HalamanBantuan
View
Kelas ini digunakan untuk menampilkan halaman
manual yang berisis tentang petunjuk penggunaan
sistem
8
HalamanTentang
View
Kelas ini digunakan untuk menampilkan informasi
yang berkaitan dengan pembuatan sistem
9
HalamanUtama
View
Kelas ini digunakan untuk menampilkan fungsifungsi utama dari sistem. Mulai dari tahap input
range harga, tahap preprocessing, dan tahap
clustering divisive
4.3.3. Diagram Sequence
Berikut merupakan diagram sequence yang digunakan pada sistem ini
untuk lebih jelasnya terlampir pada bagian lampiran 4:
1. Diagram Sequence Input Nilai Range Harga
2. Diagram Sequence Input Data File
3. Diagram Sequence Proses Cluster
4. Diagram Sequence Simpan Hasil Cluster
32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.3.4. Diagram Kelas Desain
Diagram kelas desain digunakan untuk merujuk daftar setiap kelas yang
nantinya akan digunakan dalam pembuatan sistem Penjelasan masing-masing
kelas berserta dengan atribut dan method yang digunakan dijelasakan pada
lampiran 5.
<<view>>
HalamanUtama
1
memanggil
1
<<view>>
HalamanBantuan
memanggil
1
<<view>>
HalamanTentang
memiliki
1 *
<<entity>>
RangeHarga
1
memiliki
1 *
<<control>>
controlRangeHarga
memanggil
1
1
<<control>>
KoneksiDB
memanggil
1
memanggil
1
memanggil
1
<<entity>>
Divisive
1
memiliki
1 *
<<entity>>
Verteks
memanggil
1 *
<<entity>>
DataObyek
Gambar 6
Gambar 4.2. Diagram kelas desain sistem
4.3.5. Rincian Algoritma Setiap Method pada Tiap Kelas
Rincian algoritma setiap method pada tiap kelas ini akan dijelakan pada
lampiran 6.
4.4. Perancangan Stuktur Data
Stuktur data dalam pengembanganya memiliki peran penting untuk
menyimpan dan mengorganisir sebagai media penyimpanan sehingga data
33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tersebut dapat digunakan secara efisien. Perancangan struktur data yang
digunakan adalah matriks dua dimensi.
4.4.1. Matriks Dua Dimensi
Matrik dua dimensi merupakan kumpulan elemen-elemen yang bertipe
data sama dengan satu sama variabel, tetapi terdiri dari dua indeks. Untuk
membayangkan matriks dua dimensi, dapat menggunakan istilah baris (x) dan
kolom (y), seperti pada Tabel 4.2.
Tabel 8
Tabel 4.2. Contoh Matriks Dua Dimensi
0
1
2
3
0
[0,0]
[0,1]
[0,2]
[0,3]
1
[1,0]
[1,1]
[1,2]
[1,3]
2
[2,0]
[2,1]
[22]
[2,3]
Matriks dua dimensi direpresintasikan kedalam memori secara berurutan.
Dimulai perbaris dengan elemen pertama adalah data pada index [0,0]. Dari
contoh matriks dua dimensi pada tabel 4.2 reprensentasinya di dalam memori
yaitu [0,0] | [0,1] | [0,2] | [0,3] | [1,0] | [1,1] | [1,2] | [1,3] | [2,0] | [2,1] | [22] | [2,3].
Sebuah matriks dua dimensi dapat digunakan dalam berbagi keperluan. Misalkan
data jumlah popusali warga dalam wilayah tertentu, atau warna pixel di layar.
Selain itu, matiks dua dimensi juga dapat digunakan untuk menampilkan data
multidimensi, contoh data jumlah mahasiswa lulus di suatu universitas, seprti
pada Tabel 4.3.
Tabel 9
Tabel 4.3. Contoh represntasi matriks dua dimensi
Jurusan
2002
2003
34
2004
2005
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
TI
40
20
50
80
TM
60
55
70
4
TE
30
45
80
100
4.5. Perancangan Antar Muka
4.5.1. Tampilan Halaman Utama
Pada Gambar 4.3 ini merupakan interface pertama saat masuk sistem.
Dalam halaman ini, hanya terdapat 2 tombol menu yang bertuliskan „Keluar‟ dan
“Bantuan‟. Tombol “Bantuan‟memiliki 2 menu items yaitu menu item „Tentang‟,
dan „Manual‟. Menu „Keluar‟ untuk keluar dari sistem ini. Menu item Menu item
„Tentang‟ digunakan untuk masuk ke dalam bagian informasi sistem dan menu
item „Manual‟digunakan untuk masuk ke dalam bagian bantuan penggunaan
sistem.
Keluar
Bantuan
LOGO
Range Harga
SISTEM PREDIKSI PENJUALAN HELM
MENGGUNAKAN ALGORITMA HIERARCHICAL DIVISIVE
Preprosesing
Kelompok harga
Clustering
Batas bawah
Batas Atas
Kelompok – 1
Kelompok – 2
Kelompok – 3
Kelompok – 4
Kelompok - 5
Reset
Simpan
Delete isi
Gambar 7
Gambar 4.3. Desain interface Halaman Utama tab Range Harga
35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Halaman Utama merupakan halaman yang akan menampilkan keseluruhan
proses utama pada sistem. Pada halaman ini user dapat melakukan proses imput
batas harga kelompok, proses penginputan data untuk kemudian dilakukan proses
clustering-nya.
1. Input range harga
Pada Gambar 4.4 ini adalah tab „Range Harga‟ tangberfungsi untuk
menentukan batasan nilai kelompok harga. Pada tab ini pengguna harus
mengisikan batas-batas nilai kelompok harga. Nantinya batas kelompok
harga ini digunakan untuk menandai setiap obyek data. Untuk inputan
batasan kelompok mempunyai aturan bahwa harga batas atas tidak boleh
kurang dari batas bawah kelompok sebelumnya begitu pula sebaliknya.
Sebagai contoh pada kelompok 1 batas bawah 0 dan batas atasnya 20000.
Maka batas atas dan bawah kelompok 2 harus lebih atau sama dengan
batas atas kelompok 1. Misal batas bawah 20000 dan batas atas 30000.
Range Harga
Preprosesing
Kelompok harga
Clustering
Batas bawah
Batas Atas
Kelompok – 1
Kelompok – 2
Kelompok – 3
Kelompok – 4
Kelompok - 5
Reset
Simpan
Delete isi
Gambar 8
Gambar 4.4. Desain interface Tab Range Harga
36
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Input data dan Informasi Tabel Data
Pada tab kedua ’Preprosesing’ ini berfungsi untuk menginputkan
data dan melakukan proses pembentukan cluster. Bagian input program
yang diberi title input data terdapat tombol pilih file untuk menginputkan
data file. File yang digunakan harus bertipe file *.csv. Setelah file dipilih
sistem akan menampilkasn isi data secara utuh pada tabel data. Selain itu
terdapat tombol Submit Data untuk melakukan proses trasformasi data
dengan cara menyeleksi atribut yang diperlukan dalam proses clustering.
Setelah tombol Submit Data di pilih hasil dari proses transformasi akan di
tampilkan pada tabel trasformasi data yang di beri title trasnformasi data.
Untuk memulai proses preprocessing, pengguna harus memilih tombol
Preprocessing. Setelah itu hasil data dari proses preprocessing akan
ditampilkan pada tabel data preprocessing. Untuk memulai proses
pembentukan cluster, disediakn tombol proses. Gambar 4.5 adalah
rancangan Input data dan Informasi Tabel Data.
37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Range Harga
Preprosesing
Clustering
Data Preprocessing
Input data
Pilih File
Tabel data
Tabel data preprocessing
Submit Data
Trasformasi data
Tabel Transformasi data
Jumlah Data
Jumlah Data preprocessing
Preprocessing
Proses
Batal
Gambar 9
Gambar 4.5. Desain interface Halaman Utama Tab Preprosesing
3. Hasli Proses Clustring dan Akurasi
Setelah tombol proses dipilih sistem akan menampilkan hasli
pembentukan cluster dan hasil akurasi pada tab ketiga „Clustering‟ ke tabel
-tabel yang ada. Pada tab ini terdapat tabel-tabel, antara lain tabel jumlah
cluster dan tabel label anggota cluster. Untuk menyimpan hasil
pengelompokan, maka disediakan tombol Simpan. Di halama ini
menampilkan hasil visual dari proses pembentukan cluster melalui fungsi
Jtree.
38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Menu
LOGO
Range Harga
SISTEM PREDIKSI PENJUALAN HELM
MENGGUNAKAN ALGORITMA HIERARCHICAL DIVISIVE
Preprosesing
Clustering
Tabel jumlah clsuter
Tree
Tabel Label anggota clsuter
Waktu Pembantukan Cluster
simpan
Total SSE
Gambar 10
Gambar 4.6. Desain interface Halaman Utama Tab Custering
39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V
IMPLEMENTASI DAN ANALISIS HASIL
BAB V MPLEMENTA SI DAN ANALI SI S HA SI L
Pada bab ini akan dijelaskan mengenai implementasi sistem sesuai
rancangan sistem yang telah dijelaskan pada bab sebelumya. Implementasi sistem
ini menggunakan bahasa pemrograman Java dengan aplikasi pemrograman
NetBeans 7.2 pada komputer dengan spesifikasi processor intel i5 2.3 GHz,
memori 4GB, dan harddisk 1T.
5.1. Implementasi
5.1.1. Pengolahan Data
Data yang diperoleh merupakan hasil eksport dari database perusahaan
berjenis file csv. Total data transaksi penjualan bejumlah 933 record dengan 21
atribut. Data tersebut akan diproses melalui tahap preprocessing, clustering, dan
akhirnya perhitungan akurasi secara internal (Internal evaluation) dalam
clustering yang coba dibentuk. Pada Tabel 5.1 adalah atribut dari tabel data
penualan.
Tabel 10
Tabel 5.1. Atribut dalam tabel detail penjualan
No
Nama Atribut
Keterangan
1
noFaktur
Nomor nota transaksi penjualan
2
kodeBarang
Kode dari masing-masing nama barang
3
namaBarang
Nama dari produk helm
4
Satuan
Jenis satuan barang
40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
Size
Ukuran dari suatu produk helm
6
hargaJual
Harga dari produk helm
7
Quantity
Jumlah dari pembelian barang dalam suatu transaksi
8
disscount
Potongan harga dari suatu produk helm
9
discountReal
Potongan harga dari suatu produk helm
10
discount2
Potongan harga dari suatu produk helm
11
Total
Total harga pembelian suatu produk helm setelah
discount
12
Urut
Nomer urut dari setiap nota transaksi
13
Hpp
-
14
Hppdpp
-
15
hargaSatuan
Harga satuan suatu produk helm
16
sisaPesanan
-
17
statusReturOrder
Berisi status dari pengembalian pembelian
18
statusNoKedit
Berisi statis dari nota kredit
19
noUrut
Nomer urut setiap transaksi
20
kodeArea
Berisi kode are pemasaran wilayah
21
kelompokHarga
Berisi label range klompok harga
5.1.1.1 Preprocessing
1. Data Cleaning
Proses pembersihan data ini akan menghapus record yang mengandung
data-data yang tidak relevan, tidak konsisten, dan tidak digunakan pada penelitian.
41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Pada record penjualan detai tercatat beberapa transaksi dengan nama barang
„Helm Penjualan Lama‟, record data-data yang mengandung nama barang
tersebut akan dihapus karena tidak diperlukan dalam penelitian ini. Setelah
dilakukan pembersihan didapatkan 834 jumlah data yang diap untuk digunakan
dalam penelitian ini.
2. Data Integration
Setelah data penjualan melewati tahap data cleaning selanjutnya data di
diurutkan mulai dari harga jual terendah sampai harga jual tertinggi. Kemudian di
simpan dalam sebuah file tipe *.csv. kode barang menjadi identitas setiap sempel
obyek data.
3. Data Selection
Pada tahap ini dilakukan penyeleksian terhadap data-data yang akan
digunakan selama proses penelitian ini. Pada data penjualan detail terdapat 21
atribut yaitu noFaktur, kodeBarang, namaBarang, satuan, size, hargaJual, quantity,
discount, discountReal, discount2, total, urut, Hpp, hppdpp, hargasatuan,
sisapesan,
statusReturOrder,
statusNotaKredit,
nourut,
kodeCanvaser,
KelompokHarga. Bebrapa atribut data yang diseleksi adalah noFaktur, satuan,
size, discount, discountReal, discount2, urut, Hpp, hppdpp, hargasatuan,
sisapesan, statusReturOrder, statusNotaKredit, nourut. Setelah dilakukan seleksi
data, hanya ada 7 atribut yang digunakan dalam proses data mining seperti pada
Tabel 5.2.
Tabel 11
No
Nama Atribut
Tabel 5.2 Atribut hasil seleksi
Keterangan
42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
kodeBarang
Kode dari masing-masing nama barang
2
namaBarang
Nama dari produk helm
3
hargaJual
Harga dari produk helm
4
quantity
Jumlah dari pembelian barang dalam suatu transaksi
5
Total
Total harga pembelian suatu produk helm setelah discount
6
kodeArea
Berisi kode are pemasaran wilayah
7
kelompokHarga
Berisi label range klompok harga
4. Data Transformation
Pada tahap ini Transformasi yang dilakukan adalah memberi label
kelompok harga pada setiap record sesuai dengan yang di tentukan oleh pengguna
dan menggabungkan nama barang yang sama dan menjumlahkan total quantitynya pada setiap kelompok harganya masing-masing. Praktiknya, sebagai pada
Gambar 5.1 dari data berjumlah 24 transakasi:
Gambar 11
Gambar 5.1. Contoh Sampel data transaksi
43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Setelah data dalam Gambar 5.1 melalui tahap preprocessing data oleh
sistem akan menghasilkan 19 data seperti dalam Tabel 5.3:
Tabel 12
Tabel 5.3. Hasil preprocessing data
Nama Barang
GM EVO HELLO KITTY #4 WH
GM EVO HELLO KITTY #5 - SR PINK
GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED
GM EVO ANGRY BIRD #3 - SR WH/RED
GM EVO MICKEY MOUSE # 10 - WH
GM EVO ROSSI - SR BK
GM NEW IMPREZZA GENT - 2V RED/BK
GM NEW IMPREZZA GEN - 2V BL MET BK
GM NEW IMPREZZA GENT - 2V WH/BK
NHK PREDATOR 2 VISOR SOLID - 2V WH
NHK PREDATOR 2 VISOR SOLID - 2V PP
NHK PREDATOR 2 VISOR SOLID - 2V R. RED
GM AIRBORNE SOLID - 2V GUN MET
GM AIRBORNE SOLID - 2V WH
GM SUPERCROSS NEUTRON - NV WH/RED
GM SUPERCROSS NEUTRON - WH/PP
NHK TERMINATOR SOLID 2V - RED F
GM SUPERCROSS NEUTRON - NV WH/GREEN
GM SUPERCROSS NEUTRON - NV WH/GOLD
Kelompok
Harga
1
1
1
1
1
1
2
2
2
3
3
3
3
3
4
4
4
4
4
Total
quantity
2.0
4.0
3.0
2.0
1.0
1.0
2.0
1.0
1.0
1.0
1.0
2.0
1.0
1.0
1.0
1.0
2.0
1.0
1.0
5.1.1.2 Cluster dan Akurasi
Pengelompokan data yang mengelompokan data berdasarkan informasi
yang ditentukan pada data disebut analisis klaster. Hal ini dilakukan agar obyekobyek di dalam suatu kelompok memiliki kemiripan satu sama lain sedangakan
obyek-obyek yang berbeda berada dalam kelompok yang memiliki perbedaan.
Untuk mengetahui sejauh mana pengelompokan yang dilakukan adalah baik
44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dilakukan uji akurasi dari setiap proses pembentukan kelompok dengan internal
evaluation.
Dalam penelitian ini, pengelompokan menggunakan metode hierarchical
clustering divisive. Setelah data melalui tahap preprocessing selanjutnya data akan
di proses menggunakan hierarchical clustering divisive. Dari data penjualan
sejumlah 933 record kemudian setelah melalui tahap preprocessing menjadi 159
record dengan tiga atribut yang diproses dengan menggunakan hierarchical
clustering divisive sehingga terbentuk kelompok-kelompok. Pada setiap proses
pembentukan kelompok terebut diuji menggunakan sum of squares error (SSE).
System yang dibentuk melakukan proses hierarchical clustering divisive,
dengan menggunakan perhitungan euclidean distance sebahai metode untuk
menghitungjarak kedekatan atau kemiripan antar obyek. Hasil pengelompokan
ditampilkan dalam tabel-tabel informasi cluster dan Jtree sebagai visualisasi
pembentukan kelompok.
Seiring proses pembentukan cluster menggunakan metode divisive, SSE
akan dihitung. Berdasarkan Gambar grafik 5.2
dapat dilihat nilai SSE dari
masing-masing pembentukan kelompok. Pembentukan kelompok yang memiliki
nilai SSE rendah dapat dikatakan bahwa pengelompokan tersebut similaritas yang
tinggi.
45
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
350,000
300,000
250,000
200,000
150,000
100,000
50,000
0
2
Gambar 12
3
4
5
6
7
8
Gambar 5.2. Grafik SSE pembentukan Cluster
Dari hasil tujuh perbobaan pembentukan cluster menunjukkan bahwa SSE
terendah didapat pada percobaan ketujuh dengan nilai SSE 38092.636 yang
menghasilkan 8 buah cluster.
5.1.2. Implementasi Antarmuka
Pembuatan user interface sistem ini menggunakan NetBeans 7.3 dengan
bahasa pemrograman Java. Desain user interface yang dipaparkan pada baba
sebelumnya diimplementasikan dan digunakan sebagai sarana untuk menentukan
batas harga kelompok sampai untuk mengetahui akurasi dari pengelompokan data
dengan Hierarchical Divisive. Sistem ini dapat langsung menampilkan hasil
keseluruhan proses dengan melau 2 tahap, yang pertama menentukan batas
kelompok harga, preprocessing data lalu di proses clustering. User interface ini
tersimpan dalam file HalamanUtama.Java (lanjut lampiran 8 coding) berikut
tampilan keseluruhan sistem.
46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.1.3.1
Gambar 13
Implementasi Halaman Utama
Gambar 5.3. Implementasi Halaman Utama Sistem Tab Range harga
Dari Gambar 5.3 terdapat menu Keluar yang berfungsi untuk keluar dari
sistem. Unutk menutup sistem digunakan code dispose(). Selain itu terdapat menu
bantuan yang memiliki submenu Tentang dan Manual. Submenu Tentang
berfungsi untuk memberi informasi tentang sistem kepada pengguna. Seperti yang
tampak pada Gambar 5.4
47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 14
Gambar 5.4. Implementasi Halaman Tentang
Submenu Manual apabila diklik, maka akan menampilkan Halaman
Manual tentang cara penggunaan sistem. Tampak seperti Gambar 5.5.
Gambar 15
Gambar 5.5. Implementasi Halaman Manual Sistem
Selain menu tersebut pada setiap halaman Tentang dan Manual terdapat 1
tombol „Kembali‟ untuk kembali ke halaman utama sistem. Pada praktiknya,
ketika sistem dijalankan akan menampilkan secara bertahap dilalui. Tahap
48
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tampilan tersebut adalah input range harga, input data, informasi tabel data, dan
yang terakhir proses divisive clustering dan akurasi. Proses range harga dan
preprocessing dilakukan dalam file HalamanUtama.java. Untuk proses clustering,
dan SSE dilakukan dalam file bernama Divisive.java (lampiran 8)
1. Input Range Harga
Setelah sistem dijalankan, sistem akan menampilkan Halaman Utama Tab
Range harga sebagai tahap awal untuk memproses data. Pada tahap ini pengguna
harus menginputkan nilai range harga untuk setiap kelompok. Sebelumnya sistem
akan menampilkan nilai yang sudah tersimpan dalam database, jika nilai dalam
database sudah ada pengguna bisa mengupdatenya dengan mengisi nilai baru dan
mengklik tombol simpanm, dan jika nilai dalam database kosong pengguna harus
memasukan nilai range harga baru. Tombol Delete isi untuk menghapus nilai
range yang sudah ada sedangkan tombol Reset digunakan untuk mengset nilai 0.
Fungsi dari nilai batas range harga kelompok nantinya berguna untuk memberi
label pada setiap data obyek.
Gambar 16
Gambar 5.6. Implementasi Input Range Harga
49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Input Data dan Informasi Tabel Data
Setelah selesai mengisi nilai range harga, masuk ke tahap berikutnya yaitu
tahap input data Preprocessing. Tombol Pilih File berfungsi untuk menginputkan
data yang akan di proses. File yang dapat di proses oleh sistem hanyalah yang
bertipe file *.csv. setelah diinputkan sistem akan menampilkan data secara utuh
pada tabel data, setelah tombol Submit Data dipilih sistem akan melakukan proses
transformasi
data
dengan
menseleksi
atribut
data
inputan
kemudian
menampilkannya dalam tabel transformasi data. Tampilan dibawah ini adalah
tampilan dimana data berhasil dimasukan kedalam sistem dan berhasil melalui
proses transformasi.
Gambar 17
Gambar 5.7. Implementasi Input Data
50
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Pada bagian input disediakan tombol Submit Data, Preprocessing dan
Batal. Tombol Submit Data berfungsi untuk melakukan proses trasformasi.
Tombol Batal berfungsi untuk membatalkan proses input data. Setelah pengguna
mengklik tombol Preprocessing hasil data dari tahapan trasformasi akan masuk ke
tabel data preprocessing, seperti tampak pada Gambar dibawah ini.
Gambar 18
Gambar 5.8. Implementasi Informasi Tabel Data Preprocessing
Pada Gambar 5.8 Unutk memulai proses Clustering, disediakan tombol Cluster.
51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Hasil Proses Divisive Clustering dan Akurasi
User interface dari implementasi proses pengelompokan dan perhitungan
akurasi dapat dilihat pada Gambar 5.9.
Gambar 19
Gambar 5.9. Implementasi Hasil Divisive Clustering dan Akurasi
Penjelasan tentang Gambar 5.9:
a. Pada title Jumlah Cluster berisi Jumlah anggota tiap cluster.
b. Pada title Label Cluster adalah isi label anggota yang dimiliki cluster itu
sendiri.
c. Pada bagian paling kanan adalah visualisasi kelompok dalam jtree.
d. Bagian bawah terdapat informasi lama waktu pembentukan cluster dan
informasi hasil perhitungan SSE.
52
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.1.3. Impelentasi Kelas
Tahapan ini berisi tentang implementasi kelas yang digunakan dalam
pembuatan sistem. Method yang digunakan adalah method yang memiliki fungsi
utama dalam sistem. Tabel 5.4 metupakan table yang berisi impelmentasi setiap
kelas
Tabel 13
No.
Nama Kelas
Tabel 5.4. Implementasi Kelas
Nama File Fisik
Nama File Executable
1
DataObjek
DataObjek.java
DataObjek.class
2
Divisive
Divisive.java
Divisive. class
3
Koneksi
Koneksi.Java
Koneksi. class
4
RangeHarga
RangeHarga.java
RangeHarga. class
5
Verteks
Verteks.java
Verteks. class
6
controlRangeHarga
controlRangeHarga.java controlRangeHarga. Class
7
HalamanAwal
HalamanAwal.java
HalamanAwal.class
8
HalamanUtama
HalamanUtama.java
HalamanUtama.class
9
HalamanBantuan
HalamanBantuan.java
HalamanBantuan.class
10
HalamanTentang
HalamanTentang.java
HalamanTentang.class
Listing program dari tiap-tiap kelas akan dijelaskan pada lampiran 8.
53
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Kelas
Implementasi Kelas Divisive.java
divisive
merupakan
kelas
yang
mengimplementasikan algoritma divisive, yaitu dalam
digunakan
untuk
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) {
54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 addVerteks(String label, List<Double> nilai) {
verteksList[jumVertex++] = new Verteks(label, 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 addEdge(int x, int y, Double nilai) {
adjMat[x][y] = adjMat[y][x] = nilai;
}
55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 cariJarakEcludian(int indexAwal, int indexTujuan) {
List<Double> a = new ArrayList<Double>();
List<Double> b = new ArrayList<Double>();
a = verteksList[indexAwal].getNilai();
b = verteksList[indexTujuan].getNilai();
double total = 0;
for (int i = 0; i < a.size(); i++) {
total += Math.pow((a.get(i) - b.get(i)), 2);
}
double r = Math.sqrt(total);
int decp = 2;
BigDecimal bd = new BigDecimal(r);
bd = bd.setScale(decp, 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[];
56
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
public Verteks LabelMatriksAkhir[];
public Verteks LabelSplinterAkhir[];
public double adjMat[][];
public double DataMatriks[][];
public double DataSplinter[][];
public double DataMatriksAkhir[][];
public double DataSplinterAkhir[][];
ArrayList<String> MatrixList = new ArrayList<>();
ArrayList<String> SplinterList = new ArrayList<>();
ArrayList<String> MatrixLisAkhir = new ArrayList<>();
ArrayList<String> 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.
57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
58
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 14
Tabel 5.5. Hasil Perhitungan Nilai SSE
Percobaan
Cluster
SSE
1
2
328195.654
2
3
62465.727
3
4
47805.751
4
5
40875.609
5
6
38820.685
6
7
38255.563
7
8
38092.636
Dari Tabel 5.5 dapat diketahui bahwa nilai SSE terkecil ada pada
percobaan 7 yang memberikan nilai SSE 38092.636 dari hasil tersebut dapat
dikatakan pembentukan 8 cluster adalah yang terbaik. Dalam bentuk grafik,
deretan nilai hasil SSE dari metode divisive clustering dapat dilihat pada Gambar
5.10.
350,000
300,000
250,000
200,000
150,000
100,000
50,000
0
2
Gambar 20
3
4
5
6
7
8
Gambar 5.10. Analisis – Grafik Hasil SSE
Jumlah obyek data untuk pembentukan 8 kelompok dengan divisive
clustering dapat dilihat dalam Tabel 5.6.
T
59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
abel 15
Cluster
Tabel 5.6. Hasil Clustering Divisive untuk 159 data
Jumlah
Label Anggota
anggota
GM EVO SOLID - SR BK; GM EVO SOLID - SR PP; GM EVO SOLID - SR RYL RED; GM TEEN BATMAN #2 - SR
WH; GM TEEN HELLO KITTY #1 - SR WH; GM TEEN HELLO KITTY #2 - SR WH; MAZ VISTRO SOLID 2V -
Cluster 1
19
BK; MAZ VISTRO SOLID 2V - RYL RED; MAZ VISTRO SOLID 2V - WH; VOG XTREAM - CL BK; VOG
XTREAM - CL BK/DF; VOG XTREAM - CL GUN MET; VOG XTREAM - CL ICE BL; VOG XTREAM - CL PINK
CT; VOG XTREAM - CL PP; VOG XTREAM - CL R. RED; VOG XTREAM - CL WH; GM FIGHTER SOLID - SR
BK; GM FIGHTER SOLID - SR WH
ASCA ASTRO SOLID BK; ASCA ASTRO SOLID GUN; ASCA ASTRO SOLID RYL RED; ASCA PREMIER SOLID
- 2V BK; ASCA PREMIER SOLID - 2V GUN; ASCA PREMIER SOLID - 2V WH; GM EVO SOLID - SR BL; GM
EVO SOLID - SR DGM; GM EVO SOLID - SR GUN M; GM EVO SOLID - SR WH; GM TEEN ANGRY BIRD #1 SR WH/RED; GM TEEN ANGRY BIRD #1 - SR WH/YL; GM TEEN HELLO KITTY #3 - SR WH; MAZ VISTRO
SOLID 2V - RED; MAZ VISTRO SOLID - PINK; VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL; VOG
XTREAM 2 VSR SOLID/MEKANIK - 2V WH; VOG XTREAM - CL RED F; GM FIGHTER SOLID - SR DGM; GM
Cluster 2
37
FIGHTER SOLID - SR RYL RED; GM INTERCEPTOR SOLID - 2V WH; GM NEW IMPREZZA SOLID - 2V BK;
GM NEW IMPREZZA SOLID - 2V GUN; GM NEW IMPREZZA SOLID - 2V RYL RED; GM NEW IMPREZZA
SOLID - 2V WH; NHK GLADIATOR SOLID - 2V GUN; VOG NAVIGATOR PICLET - 2V BK/BL; VOG
NAVIGATOR PICLET - 2V BK/RED; VOG NAVIGATOR PICLET - 2V BK/SIL; VOG NAVIGATOR SOLID - 2V
BK; VOG NAVIGATOR SOLID - 2V GUN M; VOG NAVIGATOR SOLID - 2V PP; VOG NAVIGATOR SOLID - 2V
WH; GM SUPERCROSS NEUTRON - NV WH/GOLD; GM SUPERCROSS NEUTRON - NV WH/GREEN; GM
SUPERCROSS NEUTRON - NV WH/RED; GM SUPERCROSS NEUTRON - WH/PP
ASCA PREMIER SOLID - 2V PP; GM EVO SOLID - SR PINK CUTE; MAZ PRIUSS * SOLID R - 2V GUN; VOG
XTRAIL SOLID - CL GUN M; VOG XTRAIL SOLID - CL WH; VOG XTREAM 2VSR SOLID/MEKANIK-2V BK;
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK; GM INTERCEPTOR SOLID - 2V BK; GM INTERCEPTOR
SOLID - 2V GUN M; NHK GLADIATOR SOLID - 2V BK; NHK GLADIATOR SOLID - 2V PP; NHK PREDATOR
Cluster 3
23
SOLID - CL BK; NHK PREDATOR SOLID - CL GUN M; NHK PREDATOR SOLID - CL RYL RED; NHK R6
LOTUSS - ORG/FLO; NHK R-6 ROSSI - CL GR/FLO; VOG NAVIGATOR PICLET - 2V WH/BL; VOG
NAVIGATOR PICLET - 2V WH/SIL; VOG NAVIGATOR SOLID - 2V BK/DOF; VOG NAVIGATOR SOLID - 2V
RYL RED; NHK GP 1000 SOLID - 2V WH; NHK GODZILLA SOLID - 2V BK; NHK TERMINATOR LOTUS 2V WH
GM AIRBORNE SOLID - 2V GUN MET; GM AIRBORNE SOLID - 2V WH; NHK GP 1000 SOLID - 2V PP; NHK
PREDATOR 2 VISOR SOLID - 2V FLT/BK; NHK PREDATOR 2 VISOR SOLID - 2V PP; NHK PREDATOR 2
Cluster 4
14
VISOR SOLID - 2V R. RED; NHK PREDATOR 2 VISOR SOLID - 2V WH; GM SUPERCROSS NEUTRON - NV
WH/SIL; NHK GODZILLA SOLID - 2V GUN; NHK GODZILLA SOLID - 2V RYL RED; NHK GODZILLA SOLID 2V WH; NHK TERMINATOR RX 805 - 2V WH/SIL; NHK TERMINATOR SOLID 2V - RED F; NHK TERMINATOR
STARBASE - 2V WH
ASCA ASTRO SOLID WH; GM EVO HELLO KITTY #5 - SR PINK; GM EVO LOLA BUNNY & BUGS BUNNY #1
WH/RED; MAZ PRIUSS*SOLID R -2V RY RED; VOG TURBO SOLID - CL BK; VOG TURBO SOLID - CL WH;
Cluster 5
20
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN; VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP; VOG
XTREAM 2 VSR SOLID/MEKANIK - 2V RYL RED; GM FIGHTER SOLID - RED F; GM INTERCEPTOR SOLID 2V BK/DOF; GM INTERCEPTOR SOLID - 2V RYL RED; NHK GLADIATOR SOLID - 2V WH; NHK PREDATOR
SOLID - CL FLAT BK; NHK R-6 BEYOND WH/GR; NHK R6 RALLY - BK/SIL; NHK R-6 RALLY - CL WH/SIL;
60
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
NHK REVENTOR SOLID 2V - BK; NHK X-2 SOLID - 2V GUN; VOG NAVIGATOR SOLID - 2V ICE BL
GM CITYLIGHT SOLID - 2 V - RED F; GM NEW IMPREZZA GEN - 2V BL MET BK; GM NEW IMPREZZA GENT
- 2V RED/BK; GM NEW IMPREZZA GENT - 2V WH/BK; GM NEW IMPREZZA SOLID - 2V BK/DOF; GM NEW
Cluster 6
IMPREZZA SOLID - 2V BL; GM STARTECH SOLID BK; GM STARTECH SOLID GUN; NHK PREDATOR SOLID
19
- CL WH; NHK R6 BEYOND - WH/RED; NHK R-6 LOTUS - CL WH; NHK R6 RALLY - CL BK/BL; NHK R-6
RALLY - CL WH/BL; NHK R-6 SOLID - CL RYL RE; NHK R-6 SOLID - CL WH; NHK R-6 X-807 - CL YL FLO/BK;
NHK REVENTOR SOLID WH; NHK X-2 SOLID - 2V RYL RED; VOG NAVIGATOR SOLID - 2V RED F
Cluster 7
ASCA MOTIF PROTECH - 2V WH/YL; GM EVO MICKEY MOUSE # 10 - WH; VOG FREEWAY SOLID - 2V ICE
5
BL; VOG TURBO SOLID - CL GUN M; VOG XTRAIL SOLID - CL RED F
ASCA MOTIF X-3 - 2V WH/GR; ASCA PREMIER SOLID - 2V RED F; GM EVO ANGRY BIRD #3 - SR WH/RED;
GM EVO HELLO KITTY # 3 - WH; GM EVO HELLO KITTY #4 WH; GM EVO ROSSI - SR BK; GM TEEN SNOW
WHITE #2 - SR WH; MAZ PRIUSS * SOLID R - 2V BK; MAZ PRIUSS * SOLID R - 2V WH; MAZ TREVIA ANGRY
Cluster 8
BIRD # 1 SR - WH/RED; MAZ TREVIA HELLO KITTY #3 WH; MIX SPORTY SOLID - 2V BK; MIX SPORTY
22
SOLID - 2V RYL RED; VOG FREEWAY SOLID - 2V PP; VOG FREEWAY SOLID - 2V RYL RED; VOG FREEWAY
SOLID - 2V WH; VOG TURBO SOLID - CL BK/DOF; VOG TURBO SOLID - CL PP; VOG XTRAIL SOLID - CL
BK; VOG XTREAM 2 VSR SOLID/MEKANIK - 2V BLUE; VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F;
VOG XTREAM - CL PINK
Pada Tabel 5.7 adalah hasil perhitungan nilai rata-rata quantity obyek data
dari masing-masing cluster.
Tabel 16
Tabel 5.7 Nilai rata-rata variabel quantity pada percobaan ke-7
Cluster
̅ Quantity
1
29,526
2
11,595
3
5,870
4
2,429
5
3,550
6
1,632
7
1,000
8
1,898
61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 5.11 dibawah ini adalah anggota berserta ciri karakternya yang
diambil berdasarkan informasi data yang terkait dari masing-masing cluster:
Cluster
Cluster
Cluster1
Cluster
Cluster 1
Cluster 1
Cluster 11
Cluster
Cluster 1
Cluster 11
Cluster
Cluster
1
Cluster 1
Cluster 11
Cluster
Cluster 1
Cluster
11
Cluster
Cluster 1
Cluster
1
Cluster
Cluster 11
Cluster
1
Cluster
Cluster 11
Cluster 1
Cluster 1
Cluster 1
Cluster 11
Cluster
Cluster 1
Cluster 1
Cluster
Cluster 11
Cluster 11
Cluster
Cluster
1
Cluster 1
Cluster 11
Cluster
Cluster 1
Cluster
Cluster 11
Cluster 1
Cluster
1
Cluster
Cluster 11
Cluster
1
Cluster
Cluster 11
Cluster 1
Cluster 1
Cluster 1
Cluster 11
Cluster
Cluster
1
Cluster 11
Cluster
Kelompok
Harga
Kelompok
1
Kelompok
Harga
Harga
1
1
1
11
1
11
1
11
1
11
1
11
1
11
1
1
1
1
11
1
1
11
1
11
1
11
1
11
1
11
1
Total
Quantity
Total
30
Total
Quantity
Quantity
24
30
30
50
24
24
46
50
50
22
46
46
22
34
22
34
43
34
43
24
43
24
21
24
21
21
35
35
35
41
41
41
19
19
19
20
20
20
21
21
21
34
34
34
Harga
Jual
Harga
114000
Harga
Jual
Jual
114000
114000
114000
114000
114000
114000
145000
114000
114000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
145000
157750
157750
157750
157750
157750
157750
157750
157750
157750
167500
167500
167500
11
1
1
1
2
2
22
22
22
22
22
26
26
22
22
22
27
27
27
Kelompok Total
Cluster Kelompok Total
Cluster Kelompok
Harga Quantity
Total
Harga Quantity
Cluster
Cluster 2 Harga
1
15
Quantity
Cluster 2
1
15
Cluster
11
15
Cluster222
15
Cluster
1
15
Cluster 2
1
13
Cluster 2
1
15
13
Cluster 2
1
17
17
Cluster 2
1
13
Cluster 2
1
11
Cluster 22
1
11
Cluster
17
Cluster
2
11
16
Cluster 22
1
16
Cluster
11
Cluster
2
11
10
Cluster 2
1
10
Cluster 22
16
Cluster
11
8
Cluster 2
1
8
Cluster
11
11
Cluster 22
10
Cluster 2
1
11
Cluster
2
11
17
Cluster
8
Cluster 22
1
17
Cluster
2
11
8
Cluster
11
Cluster 22
1
8
Cluster 2
1
9
Cluster 2
1
17
9
Cluster 2
1
9
Cluster 2
1
89
Cluster 2
1
8
Cluster 22
1
Cluster
98
Cluster
2
11
17
Cluster 22
1
17
Cluster
9
Cluster
2
11
13
Cluster 2
13
Cluster
2
11
8
Cluster 2
1
13
13
Cluster 2
1
17
Cluster
2
11
13
Cluster
13
Cluster 22
1
13
Cluster 2
2
12
Cluster
2
2
12
Cluster 22
13
Cluster
21
14
Cluster 2
2
14
Cluster 2
2
13
Cluster 2
12
13
Cluster 2
2
10
Cluster 22
2
10
Cluster
12
Cluster
2
22
11
Cluster 22
2
11
Cluster
14
Cluster
2
22
8
Cluster 2
2
8
Cluster
13
Cluster
22
22
12
Cluster 2
2
12
Cluster 22
10
Cluster
22
11
Cluster 2
2
11
Cluster
2
22
12
Cluster
11
Cluster 22
2
12
Cluster
22
22
88
Cluster
Cluster 2
2
8
Cluster
22
8
Cluster 22
12
8
Cluster 2
2
8
8
Cluster 2
2
11
Cluster 2
2
9
Cluster 22
2
9
Cluster
12
Cluster
2
22
9
Cluster
2
2
9
Cluster 22
Cluster
22
98
Cluster 2
2
9
Cluster
2
2
8
Cluster 2
4
9
Cluster 2
4
9
Cluster 22
8
Cluster
42
17
Cluster 2
4
17
Cluster
2
4
17
Cluster
24
9
Cluster 22
17
Cluster
2
42
99
Cluster
Cluster 22
4
9
Nama Barang
Wilayah
Cluster
KUL
Wilayah
Wilayah
YOG
KUL
KUL
YOG
YOG
YOG
SLM
YOG
YOG
YOG
SLM
SLM
YOG
SLM
YOG
SLM
SLM
SLM
SLM
GKD
SLM
GKD
SLM
GKD
SLM
SLM
KUL
KUL
KUL
SLM
SLM
SLM
GKD
GKD
GKD
GKD
GKD
GKD
GKD
GKD
GKD
SLM
SLM
SLM
SLM
SLM
SLM
KUL
KUL
SLM
SLM
SLM
SLM
SLM
SLM
Cluster
Cluster4
Cluster
Cluster 4
Cluster 4
Cluster 44
Cluster
Cluster 4
Cluster 44
Cluster
Cluster
4
Cluster 4
Cluster 44
Cluster
Cluster 4
Cluster
44
Cluster
Cluster 4
Cluster
4
Cluster
Cluster 44
Cluster
4
Cluster
Cluster 44
Cluster 4
Cluster 4
Cluster 4
Cluster 44
Cluster
Cluster 4
Cluster 4
Cluster
Cluster 44
Cluster 44
Cluster
Cluster
4
Cluster 4
Cluster 44
Cluster
Cluster 4
Cluster
Cluster 44
Cluster 4
167500
167500
167500
167500
167500
204000
204000
204000
204000
204000
204000
GM TEEN BATMANNama
#2 - SR
WH
Barang
Nama Barang
GM TEEN HELLO KITTY #1 - SR WH
GM TEEN BATMAN #2 - SR WH
GM TEEN
TEEN HELLO
BATMAN
#2 - #2
SR WH
GM
KITTY
SR WH
WH
GM
TEEN HELLO
KITTY
#1 -- SR
GM TEEN
HELLO
KITTY
#1 - SR WH
VOG
XTREAM
- CLKITTY
BK #2
GM
TEEN
HELLO
- SR WH
GM TEEN HELLO KITTY #2 - SR WH
VOG XTREAM
XTREAM -- CL
CL BK
BK/DF
VOG
VOG XTREAM - CL BK
VOG
XTREAM
VOG
XTREAM -- CL
CL BK/DF
GUN MET
VOG XTREAM - CL BK/DF
VOG
XTREAM -- CL
GUNBL
MET
VOG
VOG XTREAM
XTREAM - CL
CL ICE
GUN MET
VOG
XTREAM -- CL
ICE BLCT
VOG
VOG XTREAM
XTREAM - CL
CL PINK
ICE BL
VOG XTREAM - CL PINK CT
VOG XTREAM - CL PP
PINK CT
VOG XTREAM - CL PP
VOG XTREAM
XTREAM -- CL
CL R.
PPRED
VOG
VOG XTREAM - CL R. RED
VOG
XTREAM
CL
R. RED
VOG
XTREAM
CL
WH
VOG XTREAM - CL WH
VOGVISTRO
XTREAMSOLID
- CL WH
MAZ
2V -- BK
BK
MAZ
VISTRO SOLID
2V
MAZ VISTRO SOLID 2V - BK
MAZ VISTRO
VISTRO SOLID
SOLID 2V
2V -- RYL
RYL RED
RED
MAZ
MAZ VISTRO SOLID 2V - RYL RED
MAZ
MAZ VISTRO
VISTRO SOLID
SOLID 2V
2V -- WH
WH
MAZ VISTRO SOLID 2V - WH
GM
EVO SOLID
- SR BK
GM
GM EVO
EVO SOLID
SOLID -- SR
SR BK
BK
GM
EVO
SOLID
- SR PP
GM
GM EVO
EVO SOLID
SOLID -- SR
SR PP
PP
GM EVO SOLID - SR RYL RED
GM EVO SOLID - SR RYL RED
GM FIGHTER SOLID - SR BK
GM FIGHTER
FIGHTER SOLID
SOLID -- SR
SR BK
BK
GM
GM
FIGHTER SOLID
- SR WH
GM FIGHTER
FIGHTER SOLID
SOLID -- SR
SR WH
WH
GM
Harga
Harga
Jual
Harga
Jual
101500
Jual
101500
103500
101500
103500
103500
103500
114000
114000
103500
114000
114000
114000
114000
114000
114000
131500
131500
114000
131500
131500
133750
131500
133750
145000
131500
145000
155250
133750
155250
156250
145000
156250
157750
157750
155250
158500
158500
156250
167500
167500
157750
167500
167500
158500
167500
167500
167500
167500
167500
204000
204000
167500
206750
206750
206750
206750
167500
207000
207000
204000
209750
209750
206750
209750
209750
206750
222750
222750
207000
222750
222750
222750
209750
222750
241250
209750
241250
270250
222750
270250
272000
272000
222750
272000
272000
222750
272000
272000
241250
272000
272000
270250
414000
414000
272000
414000
414000
414000
272000
414000
414000
272000
414000
Nama Barang
Nama Barang
Nama Barang
ASCA ASTRO SOLID RYL RED
ASCA ASTRO SOLID RYL RED
ASCA ASTRO
SOLID
BK SOLID RYL RED
ASCA
ASTRO
ASCA ASTRO
SOLID
BK
ASCA ASTRO SOLID GUN
ASCA ASTRO SOLID BK
GUN
GM TEEN ANGRY BIRD #1 - SR WH/RED
GM TEEN
ANGRY
BIRD
#1 - SR WH/RED
ASCA
ASTRO
SOLID
GUN
GM TEEN ANGRY BIRD #1 - SR WH/YL
GM TEEN
TEEN ANGRY
ANGRY BIRD
BIRD #1 -- SR
SR WH/YL
GM
GM
TEEN HELLO
KITTY #1
#3 - SR WH/RED
WH
GM TEEN
TEEN ANGRY
HELLO KITTY
#3 -- SR
SR WH
GM
BIRD -#1
ASCA
PREMIER SOLID
2V BK WH/YL
ASCA PREMIER SOLID - 2V BK
GM
TEEN
HELLO
KITTY
#3
SR
ASCA PREMIER SOLID - 2V WH WH
ASCA PREMIER SOLID - 2V WH
ASCA
ASCA PREMIER
PREMIER SOLID
SOLID -- 2V
2V GUN
BK
ASCA PREMIER SOLID - 2V GUN
VOG
XTREAM
- CL
RED -F2V WH
ASCA
PREMIER
SOLID
VOG XTREAM
- CL
RED F
VOG
XTREAM
2 VSR
SOLID/MEKANIK
- 2V WH
ASCA
PREMIER
SOLID
- 2V GUN
VOG XTREAM
2 VSR
SOLID/MEKANIK
- 2V WH
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL
VOG XTREAM -2CL
RED
F
VSR
SOLID/MEKANIK
- 2V ICE BL
MAZ VISTRO SOLID 2V - RED
MAZ VISTRO
- RED
VOG
XTREAMSOLID
2 VSR2V
SOLID/MEKANIK
- 2V WH
MAZ VISTRO SOLID - PINK
MAZ VISTRO
SOLID - SOLID/MEKANIK
PINK
VOG
XTREAM
- 2V ICE BL
GM
EVO
SOLID2 -VSR
SR BL
GM EVO
SOLID
- SR BL- RED
MAZ
VISTRO
SOLID
GM
EVO
SOLID
- SR2V
DGM
GM EVO SOLID - SR DGM
MAZ VISTRO SOLID - PINK
GM EVO SOLID - SR GUN M
GUN M
GM EVO SOLID - SR BL
GM
EVO SOLID
- SR WH
GM
GM EVO
EVO SOLID
SOLID -- SR
SR DGM
WH
GM FIGHTER SOLID - SR DGM
GM EVO
FIGHTER
SOLID
-GUN
SR DGM
GM
SOLID
- SR
VOG
NAVIGATOR
SOLID
-M
2V BK
VOG NAVIGATOR SOLID - 2V BK
VOG NAVIGATOR SOLID - 2V GUN M
VOGEVO
NAVIGATOR
SOLID
GM
SOLID - SR
WH - 2V GUN M
GM FIGHTER SOLID - SR RYL RED
GM FIGHTER
FIGHTER SOLID
SOLID -- SR
SR DGM
RYL RED
GM
VOG
NAVIGATOR SOLID
- 2V PP
VOG NAVIGATOR
NAVIGATOR SOLID
SOLID -- 2V
2V BK
PP
VOG
VOG
NAVIGATOR SOLID
- 2V WH
VOG NAVIGATOR SOLID - 2V WH
VOG
NAVIGATOR PICLET
SOLID - -2V
M
VOG
NAVIGATOR
2VGUN
BK/BL
VOG NAVIGATOR PICLET - 2V BK/BL
GM FIGHTER
SOLID
- SR RYL
VOG
NAVIGATOR
PICLET
- 2V RED
BK/RED
VOG NAVIGATOR PICLET - 2V BK/RED
VOG
NAVIGATOR PICLET
- 2V BK/SIL
VOG
VOG NAVIGATOR
NAVIGATOR SOLID
PICLET- -2V2VPP
BK/SIL
GM
INTERCEPTOR
SOLID- -2V
2V WH
VOG
NAVIGATOR SOLID
GM INTERCEPTOR
SOLID - 2VWH
WH
NHK
GLADIATOR
SOLID
- 2V
GUN
VOG
NAVIGATOR
PICLET
2V
BK/BL
NHK GLADIATOR SOLID - 2V GUN
GM NEW IMPREZZA SOLID - 2V BK
GM NEW
IMPREZZA
SOLID
- 2VBK/RED
BK
VOG
NAVIGATOR
PICLET
- 2V
GM NEW IMPREZZA SOLID - 2V GUN
GM NEW
IMPREZZA
SOLID - 2VBK/SIL
GUN
VOG
NAVIGATOR
PICLET
GM
NEW
IMPREZZA
SOLID- 2V
- 2V RYL RED
GM
NEW
IMPREZZA
SOLID
2V
RYL RED
GM NEW
INTERCEPTOR
GM
IMPREZZASOLID
SOLID- 2V
- 2VWH
WH
GM NEW IMPREZZA SOLID - 2V WH
NHK
GLADIATOR
SOLID
2V
GUN
GM SUPERCROSS NEUTRON - NV WH/GOLD
GM SUPERCROSS NEUTRON - NV WH/GOLD
GM SUPERCROSS
NEW IMPREZZANEUTRON
SOLID - 2V- NV
BKWH/GREEN
GM
GM SUPERCROSS NEUTRON - NV WH/GREEN
GM
SUPERCROSS
WH/RED
GM
IMPREZZANEUTRON
SOLID - 2V-- NV
GUN
GM NEW
SUPERCROSS
NEUTRON
NV
WH/RED
GM
SUPERCROSS
GM
IMPREZZANEUTRON
SOLID - 2V-- WH/PP
RYL RED
GM NEW
SUPERCROSS
NEUTRON
WH/PP
Wilayah
Wilayah
Wilayah
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
YOG
YOG
KUL
GKD
GKD
YOG
GKD
GKD
GKD
GKD
GKD
SLM
GKD
SLM
YOG
GKD
YOG
SLM
SLM
GKD
GKD
YOG
GKD
GKD
SLM
YOG
YOG
GKD
SLM
SLM
GKD
SLM
SLM
YOG
YOG
SLM
YOG
SLM
SLM
SLM
GKD
GKD
GKD
GKD
YOG
KUL
KUL
SLM
SLM
SLM
GKD
GKD
GKD
GKD
KUL
KUL
KUL
YOG
YOG
YOG
SLM
YOG
YOG
GKD
YOG
SLM
KUL
SLM
SLM
SLM
YOG
SLM
SLM
YOG
KUL
KUL
YOG
SLM
SLM
SLM
YOG
YOG
SLM
SLM
SLM
SLM
SLM
SLM
GKD
KUL
GKD
Cluster 2
2
9
272000 GM NEW IMPREZZA SOLID - 2V WH
Cluster 2
4
9
414000 GM SUPERCROSS NEUTRON - NV WH/GOLD
Kelompok Total
Harga
Total
Harga GM SUPERCROSSNama
Cluster2 Kelompok
Barang
Cluster
4
17
414000
NEUTRON
- NV WH/GREEN
Cluster
Nama
Barang
Harga Quantity Jual
Harga
Quantity
Jual GM SUPERCROSS NEUTRON - NV WH/RED
Cluster
17
414000
Cluster23
14
6
133750
ASCA PREMIER SOLID - 2V PP
Cluster 3
1
6
133750 ASCA PREMIER SOLID - 2V PP
Cluster
414000
GM SUPERCROSS
Cluster23
14
59
155000
VOG
XTRAIL SOLID NEUTRON
- CL GUN M- WH/PP
Cluster 3
1
5
Cluster 3
1
5
Cluster 3
1
5
Cluster 3
1
7
Cluster 3
1
7
Cluster 3 Kelompok
1
6
Total
Cluster
1
6
Cluster3
Quantity
Cluster 3 Harga
1
6
Cluster 3
1
6
Cluster 3
1
6
Cluster 3
1
6
Cluster 33
1
6
Cluster
1
5
Cluster 3
2
6
Cluster 33
2
6
Cluster
Cluster
3
21
65
Cluster 3
2
6
Cluster
Cluster
33
21
57
Cluster 3
2
5
Cluster 33
Cluster
21
66
Cluster 3
2
6
Cluster 3
2
7
Cluster 33
2
7
Cluster
Cluster
3
21
56
Cluster 3
2
5
Cluster
21
76
Cluster 33
2
7
Cluster 3
2
7
Cluster 3
2
67
155000
155000
155000
155250
155250
157750
Harga
157750
Jual
167500
167500
133750
180250
180250
155000
206750
206750
155000
209750
209750
155250
225750
225750
157750
225750
225750
241250
241250
167500
241250
241250
270250
180250
270250
270250
270250
206750
VOG XTRAIL SOLID - CL GUN M
VOG XTRAIL SOLID - CL WH
VOG XTRAIL SOLID - CL WH
VOG XTREAM 2VSR SOLID/MEKANIK-2V BK
VOG XTREAM 2VSR SOLID/MEKANIK-2V BK
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK
VOG XTREAM 2 VSR
SOLID/MEKANIK
- 2V PINK
Nama
Barang
GM EVO SOLID - SR PINK CUTE
GM EVO SOLID - SR PINK CUTE
ASCA PREMIER SOLID - 2V PP
MAZ PRIUSS * SOLID R - 2V GUN
MAZ PRIUSS
* SOLID
R -GUN
2V GUN
VOG
XTRAIL SOLID
- CL
M
VOG NAVIGATOR SOLID - 2V RYL RED
VOG XTRAIL
NAVIGATOR
SOLID
- 2V RYL RED
VOG
SOLIDSOLID
- CL WH
VOG
NAVIGATOR
- 2V BK/DOF
VOG NAVIGATOR SOLID - 2V BK/DOF
VOG
XTREAM 2VSR
SOLID/MEKANIK-2V
VOG
NAVIGATOR
PICLET
- 2V WH/BL BK
VOG NAVIGATOR PICLET - 2V WH/BL
VOG NAVIGATOR
XTREAM 2 VSR
SOLID/MEKANIK
VOG
PICLET
- 2V WH/SIL - 2V PINK
VOG NAVIGATOR PICLET - 2V WH/SIL
GM INTERCEPTOR SOLID - 2V BK
GM EVO
INTERCEPTOR
SOLID
- 2V BK
GM
SOLID
SR
PINK
GM INTERCEPTOR SOLID -CUTE
2V GUN M
GM INTERCEPTOR SOLID - 2V GUN M
NHK
GLADIATOR
SOLID
2V GUN
BK
MAZ
* SOLID
R ---2V
NHK PRIUSS
GLADIATOR
SOLID
2V BK
NHK GLADIATOR SOLID - 2V PP
NHK GLADIATOR
VOG
NAVIGATOR SOLID
SOLID -- 2V
2V PP
RYL RED
SLM
YOG
Wilayah
SLM
Wilayah
SLM
KUL
KUL
GKD
GKD
GKD
GKD
GKD
KUL
KUL
GKD
GKD
Wilayah
SLM
SLM
KUL
GKD
GKD
GKD
GKD
GKD
GKD
GKD
GKD
KUL
YOG
YOG
GKD
YOG
YOG
KUL
KUL
SLM
YOG
YOG
SLM
GKD
SLM
SLM
SLM
GKD
Kelompok Total
Harga
Nama Barang
Harga Quantity Jual
Kelompok Total
Harga
3
2
314750
Kelompok
Total
Harga NHK PREDATOR 2 VISOR
Nama SOLID
Barang- 2V PP
Nama Barang
Harga Quantity Jual
Harga
Quantity
Jual NHK PREDATOR 2 VISOR SOLID - 2V R. RED
3
4
314750
3
2
314750 NHK PREDATOR 2 VISOR SOLID - 2V PP
3
2
314750 NHK
NHK PREDATOR
PREDATOR 22 VISOR
VISOR SOLID
SOLID -- 2V
2V WH
PP
314750
33
44
314750
NHK PREDATOR
2 VISOR SOLID
- 2V R.
RED
3
4
314750 NHK
NHK PREDATOR
PREDATOR 22 VISOR
VISOR SOLID
SOLID -- 2V
2V FLT/BK
R. RED
318750
33
42
314750
NHK PREDATOR
2 VISOR SOLID
- 2V WH
3
4
314750 NHK PREDATOR 2 VISOR SOLID - 2V WH
350000 NHK
NHK PREDATOR
GP 1000 SOLID
- 2V PP
33
22
318750
2 VISOR
SOLID - 2V FLT/BK
3
2
318750 NHK PREDATOR 2 VISOR SOLID - 2V FLT/BK
33
22
350000
NHK
GP 1000 SOLID
371000
GM AIRBORNE
SOLID- 2V
- 2VPPGUN MET
3
2
350000 NHK GP 1000 SOLID - 2V PP
33
23
371000
GM AIRBORNE
SOLID -- 2V
GUN MET
371000
3
2
371000 GM
GM AIRBORNE
AIRBORNE SOLID
SOLID - 2V
2V WH
GUN MET
34
32
371000
GM AIRBORNE
SOLID
- 2V2V
WH- RED F
403500
TERMINATOR
SOLID
3
3
371000 NHK
GM AIRBORNE
SOLID
- 2V WH
4
2
403500 NHK TERMINATOR SOLID 2V - RED F
4
2
417000
NHK
GODZILLA
SOLID
2V
GUN
403500
TERMINATOR SOLID 2V - RED F
4
2
417000 NHK GODZILLA SOLID - 2V GUN
417000 NHK
NHK GODZILLA
GODZILLA SOLID
SOLID -- 2V
2V WH
GUN
44
22
417000
4
2
417000 NHK GODZILLA SOLID - 2V WH
4
2
417000
NHK
GODZILLA SOLID
- 2V WH- NV WH/SIL
44
33
418750
GM
SUPERCROSS
NEUTRON
418750 GM SUPERCROSS NEUTRON - NV WH/SIL
4
3
418750 NHK
GM SUPERCROSS
NEUTRON
NV WH/SIL
420500
TERMINATOR RX
RX
805 -- 2V
2V -WH/SIL
WH/SIL
44
33
420500
NHK TERMINATOR
805
4
3
420500 NHK TERMINATOR RX 805 - 2V WH/SIL
422000 NHK
NHK GODZILLA
GODZILLA SOLID
SOLID -- 2V
2V RYL
RYL RED
RED
44
22
422000
4
2
422000 NHK GODZILLA SOLID - 2V RYL RED
44
11
425500
425500 NHK
NHK TERMINATOR
TERMINATOR STARBASE
STARBASE -- 2V
2V WH
WH
4
1
425500 NHK TERMINATOR STARBASE - 2V WH
Kelompok
Total
Kelompok
Kelompok Total
Total
Cluster
Cluster
Cluster
Harga Quantity
Harga Quantity
Cluster 5
1
4
Cluster 5
1
4
Cluster 5
1
4
Cluster 55
1
4
Cluster
1
Cluster 5
1
44
Cluster 55
1
4
Cluster
Cluster
5
11
44
Cluster 5
1
4
Cluster 5
1
4
Cluster 5
1
4
Cluster 5
1
4
Cluster 5
1
4
Cluster 5
1
3
Cluster 5
1
3
Cluster
5
11
33
Cluster
Cluster 55
1
3
Cluster 5
1
4
Cluster 5
1
34
Cluster 5
1
3
Cluster 5
1
43
Cluster 5
2
4
Cluster 55
2
4
Cluster
Cluster
5
21
33
Cluster 55
2
3
Cluster
Cluster
5
22
34
Cluster 5
2
3
Cluster 55
Cluster
22
33
Cluster 5
2
3
Cluster
22
33
Cluster 55
Cluster 5
2
3
Cluster
5
22
43
Cluster
Cluster 55
2
4
Cluster
5
22
43
Cluster
Cluster 55
2
4
Cluster 5
2
4
Cluster 5
2
4
Cluster 5
2
4
Cluster 5
2
4
Cluster 5
2
3
Cluster 55
2
3
Cluster
Cluster
5
22
34
Cluster 55
Cluster
22
43
Harga
Harga
Harga
Jual
Jual
103500
103500
156250
156250
156250
156250
156250
156250
157750
157750
157750
170250
170250
170250
170250
170250
180250
170250
180250
190500
180250
190500
190500
190500
204000
204000
190500
209750
209750
204000
237500
237500
209750
237500
237500
237500
237500
237500
241250
237500
241250
244500
237500
244500
252750
241250
252750
270250
270250
244500
272000
272000
252750
286250
286250
270250
Nama
Barang
Nama
Nama Barang
Barang
ASCA ASTRO SOLID WH
ASCA ASTRO SOLID WH
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN
VOG XTREAM
XTREAM 2 VSR
VSR SOLID/MEKANIK
SOLID/MEKANIK - 2V
2V GUN
GUN
VOG
VOG
XTREAM 22 VSR
SOLID/MEKANIK -- 2V
RYL RED
VOG XTREAM
XTREAM 2 VSR
VSR SOLID/MEKANIK
SOLID/MEKANIK - 2V
2V RYL
RYL RED
VOG
VOG
XTREAM 22 VSR
SOLID/MEKANIK -- 2V
PP RED
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP
VOG TURBO SOLID - CL BK
VOG TURBO SOLID - CL BK
VOG TURBO SOLID - CL BK
VOG TURBO SOLID - CL WH
VOG TURBO SOLID - CL WH
MAZ
PRIUSS*SOLID
RY RED
VOG
TURBO SOLID -RRCL-2V
WH
MAZ PRIUSS*SOLID
-2V
RY RED
GM EVO HELLO KITTY #5 - SR PINK
MAZ
PRIUSS*SOLID
R -2V
GM EVO
HELLO KITTY
#5 -RY
SRRED
PINK
GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED
LOLA BUNNY
& BUGS
BUNNY #1 WH/RED
GM EVO HELLO
KITTY #5
- SR PINK
GM FIGHTER SOLID - RED F
GM EVO
FIGHTER
- RED F BUNNY #1 WH/RED
GM
LOLASOLID
BUNNY
VOG
NAVIGATOR
SOLID& -BUGS
2V ICE BL
VOGFIGHTER
NAVIGATOR
GM
SOLIDSOLID
- RED- 2V
F ICE BL
NHK
R-6 BEYOND
WH/GR
NHK R-6 BEYOND WH/GR
VOG R6
NAVIGATOR
SOLID - 2V ICE BL
NHK
RALLY - BK/SIL
NHK R6 RALLY - BK/SIL
NHK
- CLWH/GR
WH/SIL
NHK R-6
R-6 RALLY
BEYOND
NHK R-6 RALLY - CL WH/SIL
GM
INTERCEPTOR
SOLID - 2V RYL RED
NHK
R6 RALLY - BK/SIL
GM INTERCEPTOR
SOLID - 2V RYL RED
GM
INTERCEPTOR
- 2V BK/DOF
NHK
R-6 RALLY - CLSOLID
WH/SIL
GM INTERCEPTOR
SOLID
- 2V BK/DOF
NHK X-2 SOLID - 2V GUN
GM
NHKINTERCEPTOR
X-2 SOLID - 2VSOLID
GUN - 2V RYL RED
NHK GLADIATOR SOLID - 2V WH
NHKINTERCEPTOR
GLADIATOR SOLID
GM
SOLID- 2V
- 2VWH
BK/DOF
NHK PREDATOR SOLID - CL FLAT BK
NHK X-2
PREDATOR
SOLID
- CL FLAT BK
NHK
SOLID - 2V
GUN2V
NHK
REVENTOR
SOLID
- BK
NHK GLADIATOR
REVENTOR SOLID
NHK
SOLID 2V
- 2V- BK
WH
Cluster 5 Kelompok
2
3
272000
Total
Harga NHK PREDATOR SOLID - CL FLAT BK
Harga
Cluster Kelompok Total
Nama Barang
Cluster5
Nama
Harga
Quantity
Jual NHK REVENTOR SOLID
Cluster
2
3
286250
2V Barang
- BK
Cluster 6
Cluster 6
Cluster 6
Cluster
Cluster66
Cluster
Cluster 6
Cluster 6
Cluster 6
Cluster 6
Cluster 66
Cluster
Cluster
6
Cluster 66
Cluster
Cluster
6
Cluster 6
Cluster 66
Cluster
Cluster 6
Cluster 66
Cluster
Cluster 6
Cluster
6
Cluster
Cluster 66
Cluster
6
Cluster
Cluster 66
Cluster
Cluster 66
Cluster 6
Cluster 6
Cluster 6
Cluster 66
Cluster
Cluster
6
Cluster 66
Cluster
Cluster
6
Cluster 6
Cluster
Cluster 66
Cluster 6
Cluster 66
Cluster
Cluster 6
Cluster
6
Cluster
Cluster 66
Harga Quantity Jual
2
2
209750 VOG NAVIGATOR SOLID - 2V RED F
2
2
209750 VOG NAVIGATOR SOLID - 2V RED F
2
2
213500
GM CITYLIGHT SOLID - 2 V - RED F
Kelompok
Total
Harga
2
2
213500 GM CITYLIGHT SOLID
- 2 V - RED F
2
1
221000
R-6 SOLID - CL Nama
WH Barang
Harga
Quantity
Jual NHK
2
1
221000
NHK R-6 SOLID - CL WH
2
2
224000 NHK R-6 SOLID - CL RYL RE
224000 VOG
NHK R-6
SOLID - CL
RYL -RE
2
2
209750
NAVIGATOR
SOLID
2V RED F
2
2
237500 NHK R-6 LOTUS - CL WH
2
2
237500 GM
NHK R-6 LOTUSSOLID
- CL WH
213500
- 2 V - RED F
22
12
240750
NHKCITYLIGHT
R6 BEYOND - WH/RED
2
1
240750 NHK
NHK R-6
R6 BEYOND
- WH/RED
221000
SOLID -- CL
CL
WH
22
21
240750
NHK R6
RALLY
BK/BL
2
2
240750 NHK R6 RALLY - CL BK/BL
224000
NHK R-6
R-6 RALLY
SOLID -- CL
RE
22
12
240750
NHK
CL RYL
WH/BL
2
1
240750 NHK R-6 RALLY - CL WH/BL
NHK X-2
237500 NHK
R-6 SOLID
LOTUS- -2V
CLRYL
WHRED
22
22
252750
2
2
252750 NHK X-2 SOLID - 2V RYL RED
22
11
264250
GM STARTECH
SOLID
BK
240750
R6 BEYOND
- WH/RED
2
1
264250 NHK
GM STARTECH
SOLID
BK
22
12
264250
GM STARTECH
GUN
240750
R6 RALLY -SOLID
CL BK/BL
2
1
264250 NHK
GM STARTECH
SOLID
GUN
22
21
272000
GM
NEW
IMPREZZA
SOLID
- 2V BK/DOF
240750
NHK
R-6
RALLY
CL
WH/BL
2
272000 GM NEW IMPREZZA SOLID - 2V BK/DOF
2
1
272000 NHK PREDATOR SOLID - CL WH
272000 NHK X-2
PREDATOR
SOLID
CL WH
2
21
252750
SOLID - 2V
RYL -RED
2
1
275500 GM NEW IMPREZZA SOLID - 2V BL
2
1
275500 GM
GM NEW IMPREZZA
SOLID
264250
BK - 2V BL
22
21
281500
NHKSTARTECH
R-6 X-807 - SOLID
CL YL FLO/BK
281500 GM
NHK R-6 X-807 -SOLID
CL YL FLO/BK
222
122
264250
286250
NHKSTARTECH
REVENTOR SOLIDGUN
WH
2
2
286250 NHK REVENTOR SOLID WH
272000 GM
GM NEW
NEW IMPREZZA
IMPREZZA GEN
SOLID- 2V
- 2VBLBK/DOF
22
22
294750
MET BK
2
2
294750 GM NEW IMPREZZA GEN - 2V BL MET BK
272000 GM
NHKNEW
PREDATOR
SOLID
- CL- 2V
WHRED/BK
22
21
294750
IMPREZZA
GENT
2
2
294750 GM NEW IMPREZZA GENT - 2V RED/BK
22
21
294750
GM
NEW
IMPREZZA
GENT
2V
WH/BK
275500
2V WH/BK
BL
2
2
294750 GM
GM NEW
NEW IMPREZZA
IMPREZZA SOLID
GENT -- 2V
Cluster 6
2
2
281500 NHK R-6 X-807 - CL YL FLO/BK
Kelompok
Total
Harga NHK REVENTOR SOLID WH
Cluster
2
2
286250
Total
Harga
Cluster6 Kelompok
Nama Barang
Cluster
Nama Barang
Harga Quantity Jual
Harga
Quantity
Jual GM NEW IMPREZZA GEN - 2V BL MET BK
Cluster 6
2
2
294750
Cluster
76
12
12
145000
ASCA
MOTIF
PROTECH
- 2V- 2V
WH/YL
Cluster
294750
GM
NEW
IMPREZZA
GENT
RED/BK
Cluster 7
1
1
145000 ASCA MOTIF PROTECH
- 2V WH/YL
Cluster 76
294750 VOG
GM NEW
IMPREZZA
- 2V
Cluster
12
12
155000
XTRAIL
SOLID - GENT
CL RED
F WH/BK
Cluster 7
1
1
155000 VOG XTRAIL SOLID - CL RED F
Cluster 7
1
1
170250 VOG TURBO SOLID - CL GUN M
Cluster 7
1
1
170250 VOG TURBO SOLID - CL GUN M
Total
Harga VOG FREEWAY SOLID - 2V ICE BL
Cluster 7 Kelompok
1
1
180500
Cluster
1
1
180500 VOG FREEWAY SOLID
- 2VBarang
ICE BL
Cluster7
Nama
Cluster 7
1
1
190500
EVO MICKEY MOUSE # 10 - WH
Harga
Quantity
Jual GM
Cluster 7
1
1
190500
GM EVO MICKEY MOUSE # 10 - WH
Cluster 7 Kelompok
1
1
145000
Total
Harga
Harga
Cluster Kelompok Total
Cluster
Harga Quantity Jual
Harga
Quantity
Jual
Cluster 7
1
1
155000
Cluster 8
1
2
116000
Cluster 78
116000
Cluster
11
12
170250
Cluster 8
1
2
133750
Cluster 78
1
2
133750
Cluster
180500
Cluster
8
11
21
145000
Cluster 8
1
2
145000
Cluster
190500
Cluster
87
11
21
147250
Cluster 8
1
2
147250
Cluster 8
1
2
151250
Cluster 8
1
2
151250
Cluster 8 Kelompok
1
2
153750
Total
Harga
Cluster
1
2
153750
Cluster88
Cluster
1
2
155000
Harga
Quantity
Jual
Cluster 8
1
2
155000
Cluster
11
22
156250
Cluster 88
116000
156250
Cluster 8
1
2
157750
157750
Cluster 8
1
2
133750
62
ASCA MOTIF PROTECH - 2V WH/YL
Nama Barang
Nama Barang
VOG XTRAIL SOLID - CL RED F
GM TEEN SNOW WHITE #2 - SR WH
GM TEEN
SNOW
WHITE
#2 - SR
VOG
TURBO
SOLID
CL GUN
M WH
ASCA PREMIER SOLID - 2V RED F
ASCAFREEWAY
PREMIER SOLID -- 2V
2V RED F
VOG
ASCA
MOTIF X-3 SOLID
- 2V WH/GRICE BL
ASCA MOTIF X-3 - 2V WH/GR
GM
EVO
MICKEY
VOG
XTREAM
- CLMOUSE
PINK # 10 - WH
VOG XTREAM - CL PINK
MAZ TREVIA HELLO KITTY #3 WH
MAZ TREVIA HELLO KITTY #3 WH
MAZ TREVIA ANGRY BIRD # 1 SR - WH/RED
MAZ TREVIA ANGRY BIRDBarang
# 1 SR - WH/RED
VOG XTRAIL SOLID -Nama
CL BK
VOG XTRAIL SOLID - CL BK
VOG
XTREAM
2 VSR
SOLID/MEKANIK
BLUE
GM
SNOW
WHITE
#2 - SR WH -- 2V
VOGTEEN
XTREAM
2 VSR
SOLID/MEKANIK
2V BLUE
VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F
VOG XTREAM
ASCA
PREMIER2 VSR
SOLIDSOLID/MEKANIK
- 2V RED F - 2V RED F
Wilayah
SLM
Wilayah
Wilayah
SLM
SLM
SLM
SLM
SLM
SLM
YOG
SLM
SLM
SLM
YOG
YOG
SLM
SLM
SLM
SLM
YOG
SLM
YOG
SLM
YOG
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
GKD
GKD
GKD
Wilayah
Wilayah
Wilayah
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
KUL
SLM
SLM
SLM
SLM
SLM
GKD
SLM
GKD
YOG
GKD
YOG
KUL
KUL
YOG
SLM
SLM
KUL
SLM
SLM
SLM
SLM
SLM
SLM
YOG
YOG
SLM
SLM
SLM
KUL
YOG
KUL
KUL
SLM
KUL
SLM
KUL
SLM
SLM
SLM
KUL
YOG
YOG
SLM
SLM
SLM
SLM
YOG
Wilayah
Wilayah
SLM
GKD
GKD
SLM
SLM
Wilayah
GKD
GKD
GKD
GKD
SLM
SLM
SLM
SLM
SLM
GKD
KUL
KUL
GKD
SLM
SLM
SLM
SLM
SLM
SLM
SLM
SLM
KUL
KUL
KUL
KUL
SLM
KUL
YOG
YOG
SLM
YOG
YOG
SLM
KUL
KUL
KUL
SLM
SLM
KUL
GKD
GKD
YOG
KUL
KUL
GKD
YOG
GKD
KUL
SLM
Wilayah
Wilayah
GKD
YOG
KUL
YOG
GKD
GKD
GKD
SLM
SLM
SLM
SLM
Wilayah
SLM
SLM
YOG
Wilayah
Wilayah
GKD
GKD
GKD
SLM
KUL
KUL
SLM
KUL
KUL
SLM
GKD
GKD
KUL
KUL
YOG
YOG
Wilayah
GKD
GKD
GKD
GKD
KUL
KUL
Cluster 2
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster2 2
Cluster
Cluster 2
Cluster 2
2
22
22
22
22
22
22
22
42
42
44
44
4
4
11
1212
811
812
88
98
98
99
99
179
179
917
17
9
222750
222750
222750
222750
241250
222750
270250
241250
272000
270250
272000
272000
272000
272000
272000
272000
414000
272000
414000
414000
414000
414000
414000
414000
414000
VOG NAVIGATOR PICLET - 2V BK/RED
VOGNAVIGATOR
NAVIGATORPICLET
PICLET- -2V2VBK/SIL
BK/BL
VOG
VOG
NAVIGATOR SOLID
PICLET- -2V
2VWH
BK/RED
GM
INTERCEPTOR
VOGGLADIATOR
NAVIGATORSOLID
PICLET
BK/SIL
NHK
- 2V- 2V
GUN
GMNEW
INTERCEPTOR
GM
IMPREZZA SOLID
SOLID -- 2V
2V WH
BK
NHK
GLADIATOR
- 2V
GM
NEW
IMPREZZASOLID
SOLID
- 2VGUN
GUN
GM
NEW
IMPREZZA
SOLID
2V
BK RED
GM NEW IMPREZZA SOLID - 2V RYL
GM
NEW
IMPREZZA
SOLID
2V
GUN
GM NEW IMPREZZA SOLID - 2V WH
GMSUPERCROSS
NEW IMPREZZA
SOLID - 2V
RED
GM
NEUTRON
- NVRYL
WH/GOLD
GMSUPERCROSS
NEW IMPREZZA
SOLID - 2V
GM
NEUTRON
- NVWH
WH/GREEN
GMSUPERCROSS
SUPERCROSSNEUTRON
NEUTRON- -NV
NVWH/RED
WH/GOLD
GM
GMSUPERCROSS
SUPERCROSSNEUTRON
NEUTRON- -WH/PP
NV WH/GREEN
GM
GM SUPERCROSS NEUTRON - NV WH/RED
GM SUPERCROSS NEUTRON - WH/PP
YOG
Cluster 6
YOG
YOG
SLM
YOG
SLM
SLM
SLM
SLM
KUL
SLM
SLM
KUL
YOG
SLM
SLM
YOG
SLM
SLM
GKD
SLM
GKD
Cluster 6
2
1
264250
Cluster66
264250
Cluster
22
21
272000
Cluster
6
2
1
264250
Cluster 6
2
1
272000
Cluster66
272000
Cluster
22
12
275500
Cluster66
272000
Cluster
22
21
281500
Cluster66
275500
Cluster
22
21
286250
Cluster66
281500
Cluster
22
22
294750
Cluster66
286250
Cluster
22
22
294750
Cluster66
294750
Cluster
22
22
294750
Cluster 6
2
2
294750
Cluster 6 Kelompok
2
2
294750
Total
Harga
Cluster
Harga Quantity Jual
Kelompok Total
Total
Harga
Kelompok
Harga
Cluster
Cluster
Cluster
7
1
1
145000
Harga
Quantity
Jual
Harga
Quantity
Jual
GM STARTECH SOLID GUN
GMNEW
STARTECH
SOLID
BK - 2V BK/DOF
GM
IMPREZZA
SOLID
GM PREDATOR
STARTECH SOLID
NHK
SOLID GUN
- CL WH
GMNEW
NEWIMPREZZA
IMPREZZASOLID
SOLID- -2V
2VBL
BK/DOF
GM
NHK
PREDATOR
SOLID
- CL WH
NHK R-6 X-807 - CL YL FLO/BK
GM REVENTOR
NEW IMPREZZA
SOLID
NHK
SOLID
WH - 2V BL
NHK
R-6 IMPREZZA
X-807 - CL YL
FLO/BK
GM
NEW
GEN
- 2V BL MET BK
NHK
REVENTOR
SOLID
WH
GM
NEW
IMPREZZA
GENT
- 2V RED/BK
GM
NEW
IMPREZZA
GEN
2V WH/BK
BL MET BK
GM NEW IMPREZZA GENT -- 2V
GM NEW IMPREZZA GENT - 2V RED/BK
GM NEW IMPREZZA GENT - 2V WH/BK
Nama Barang
Cluster
111
11 155000
Cluster777
145000
Cluster
145000
Cluster 7
1
1
170250
Cluster
77
11
1
155000
Cluster
155000
Cluster 7
1
1
180500
Cluster
1
1
170250
Cluster777
170250
Cluster
11
11 190500
Cluster
11
11
180500
Cluster77
180500
Cluster
7
1
1
190500
Cluster 7 Kelompok
1
1
190500
Total
Harga
Cluster
Harga Quantity Jual
Kelompok
Total
Harga
Cluster
8
1
2
116000
Cluster
Harga
Quantity
Jual
Cluster 8
1
2
133750
Cluster88
116000
Cluster
11
22
145000
Cluster88
133750
Cluster
11
22
147250
Cluster88
145000
Cluster
11
22
151250
Cluster88
147250
Cluster
11
22
153750
Cluster88
151250
Cluster
11
22
155000
Cluster88
153750
Cluster
11
22
156250
Cluster88
155000
Cluster
11
22
157750
Cluster88
156250
Cluster
11
22
170250
Cluster88
157750
Cluster
11
22
171250
Cluster88
170250
Cluster
11
22
172250
Cluster88
171250
Cluster
11
22
173750
Cluster88
172250
Cluster
11
22
180250
Cluster88
173750
Cluster
11
22
180250
Cluster88
180250
Cluster
11
22
180500
Cluster88
180250
Cluster
11
22
180500
Cluster88
180500
Cluster
11
22
180500
Cluster88
180500
Cluster
11
22
187750
Cluster88
180500
Cluster
11
22
187750
Cluster88
187750
Cluster
11
22
187750
Cluster88
187750
Cluster
11
22
190500
Cluster 8
1
2
187750
Cluster 8
1
2
190500
VOG
XTRAIL
SOLID
- CL RED
ASCA
MOTIF
PROTECH
- -2V
ASCA
MOTIF
PROTECH
2VFWH/YL
WH/YL
VOG TURBO SOLID - CL GUN M
VOG XTRAIL
XTRAILSOLID
SOLID- -CL
CLRED
REDFF
VOG
VOG FREEWAY SOLID - 2V ICE BL
VOG TURBO
TURBOSOLID
SOLID- -CL
CL GUNMM
VOG
GM
EVO MICKEY
MOUSEGUN
# 10 - WH
VOG FREEWAY
FREEWAYSOLID
SOLID- -2V
2VICE
ICEBL
BL
VOG
GM
EVO
MICKEY
MOUSE
WH
GM EVO MICKEY MOUSE ##1010- -WH
Nama Barang
Kelompok Total
Harga Quantity
Total
Cluster
3 Kelompok
1
6
Cluster
Harga
Quantity
Cluster 3
1
5
Cluster
3
1
Cluster 3
1
56
Cluster
3
1
Cluster 3
1
75
Cluster3 3
Cluster
11
65
Cluster 3
1
7
Cluster
11
66
Cluster3 3
Harga
Jual
Harga
133750
Jual
155000
133750
155000
155000
155250
155000
157750
155250
167500
157750
ASCA PREMIER SOLID
- 2VBarang
PP
Nama
VOG XTRAIL SOLID - CL GUN M
ASCA
PREMIER
SOLID
2V
VOG XTRAIL SOLID - CL WH PP
VOGXTREAM
XTRAIL SOLID
- CL GUN M
VOG
2VSR SOLID/MEKANIK-2V
BK
VOGXTREAM
XTRAIL SOLID
CL WH
VOG
2 VSR -SOLID/MEKANIK
- 2V PINK
VOG XTREAM 2VSR SOLID/MEKANIK-2V BK
GM
EVO
SOLID 2- SR
CUTE
VOG
XTREAM
VSRPINK
SOLID/MEKANIK
- 2V PINK
KUL
Wilayah
GKD
KUL
GKD
GKD
KUL
GKD
GKD
KUL
SLM
GKD
Cluster
Cluster3 3
Cluster 3
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster3 3
Cluster
Cluster 3
Cluster 3
180250
167500
206750
180250
209750
206750
225750
209750
225750
225750
241250
225750
241250
241250
270250
241250
270250
270250
272000
270250
272000
272000
272000
272000
277750
272000
277750
277750
350000
277750
417000
350000
425500
417000
425500
MAZ
* SOLID
- 2VCUTE
GUN
GM PRIUSS
EVO SOLID
- SR RPINK
VOG NAVIGATOR SOLID - 2V RYL RED
MAZ
PRIUSS
*
SOLID
R
2V
GUN
VOG NAVIGATOR SOLID - 2V BK/DOF
VOGNAVIGATOR
NAVIGATORPICLET
SOLID -- 2V
2V WH/BL
RYL RED
VOG
VOGNAVIGATOR
NAVIGATORPICLET
SOLID -- 2V
2V WH/SIL
BK/DOF
VOG
VOG
NAVIGATOR SOLID
PICLET- -2V
2VBK
WH/BL
GM
INTERCEPTOR
VOG
NAVIGATOR SOLID
PICLET- -2V
2VGUN
WH/SIL
GM
INTERCEPTOR
M
GM GLADIATOR
INTERCEPTOR
SOLID
NHK
SOLID
- 2V- 2V
BK BK
GM
INTERCEPTOR
SOLID
2V
GUN
M
NHK GLADIATOR SOLID - 2V PP
NHKPREDATOR
GLADIATORSOLID
SOLID- CL
- 2VBKBK
NHK
NHKPREDATOR
GLADIATORSOLID
SOLID- CL
- 2VGUN
PP M
NHK
NHKPREDATOR
PREDATORSOLID
SOLID- -CL
CLRYL
BK RED
NHK
NHKR6
PREDATOR
- CL GUN M
NHK
LOTUSS - SOLID
ORG/FLO
NHKR-6
PREDATOR
SOLID
- CL RYL RED
NHK
ROSSI - CL
GR/FLO
NHKGP
R61000
LOTUSS
- ORG/FLO
NHK
SOLID
- 2V WH
NHKGODZILLA
R-6 ROSSISOLID
- CL GR/FLO
NHK
- 2V BK
NHKTERMINATOR
GP 1000 SOLID
- 2V WH
NHK
LOTUS
2V - WH
NHK GODZILLA SOLID - 2V BK
NHK TERMINATOR LOTUS 2V - WH
GKD
SLM
GKD
GKD
GKD
GKD
YOG
GKD
YOG
YOG
KUL
YOG
YOG
KUL
SLM
YOG
SLM
SLM
YOG
SLM
YOG
YOG
YOG
YOG
SLM
YOG
SLM
SLM
YOG
SLM
SLM
YOG
YOG
SLM
YOG
Cluster
11
2
21
22
22
22
22
22
22
22
22
22
22
22
32
42
43
4
4
66
6
66
56
66
75
56
77
75
67
67
56
66
55
56
75
55
7
5
2
2
252750 NHK X-2 SOLID - 2V RYL RED
KUL
Cluster66
240750 GM
NHK
R-6 RALLYSOLID
- CL WH/BL
YOG
Cluster
22
11
264250
STARTECH
BK
PLAGIAT MERUPAKAN
TINDAKAN
TIDAK
TERPUJI
YOG
Cluster 6
2
2
252750 NHK X-2 SOLID - 2V RYL RED
Nama Barang
Wilayah
Gambar 21
Nama
Nama
Barang
ASCA MOTIF PROTECH
- 2VBarang
WH/YL
GM TEEN SNOW WHITE
#2 Barang
- SR WH
Nama
ASCA PREMIER SOLID - 2V RED F
GM
TEEN
SNOW
WHITE
#2
ASCA MOTIF X-3 - 2V WH/GR- SR WH
ASCA
PREMIER
VOG
XTREAM
- CLSOLID
PINK - 2V RED F
ASCA
MOTIFHELLO
X-3 - 2V
WH/GR
MAZ
TREVIA
KITTY
#3 WH
VOGTREVIA
XTREAM
- CL PINK
MAZ
ANGRY
BIRD # 1 SR - WH/RED
MAZ
TREVIA
HELLO
KITTY
VOG XTRAIL SOLID - CL BK #3 WH
MAZXTREAM
TREVIA ANGRY
BIRD # 1 SR - WH/RED
VOG
2 VSR SOLID/MEKANIK
- 2V BLUE
VOGXTREAM
XTRAIL SOLID
CL BK
VOG
2 VSR -SOLID/MEKANIK
- 2V RED F
VOG
XTREAM
2
VSR
SOLID/MEKANIK
- 2V BLUE
VOG TURBO SOLID - CL PP
VOG
XTREAM
2
VSR
SOLID/MEKANIK
- 2V RED F
MIX SPORTY SOLID - 2V BK
VOGTURBO
TURBOSOLID
SOLID- -CL
CLBK/DOF
PP
VOG
MIXSPORTY
SPORTYSOLID
SOLID- -2V
2VRYL
BK RED
MIX
VOGPRIUSS
TURBO*SOLID
BK/DOF
MAZ
SOLID-RCL- 2V
BK
MIX PRIUSS
SPORTY* SOLID
RYL
RED
MAZ
SOLID -R2V- 2V
WH
MAZ
PRIUSS
*
SOLID
R
2V
BK
VOG FREEWAY SOLID - 2V PP
MAZFREEWAY
PRIUSS * SOLID
- 2VRYL
WHRED
VOG
SOLIDR- 2V
VOGFREEWAY
FREEWAYSOLID
SOLID- -2V
2VWH
PP
VOG
VOG
FREEWAY
SOLID#3- -2V
RED
GM
EVO
ANGRY BIRD
SRRYL
WH/RED
VOG
FREEWAY
SOLID# -32V
WH
GM
EVO
HELLO KITTY
- WH
GMEVO
EVOROSSI
ANGRY
BIRD
GM
- SR
BK#3 - SR WH/RED
GMEVO
EVOHELLO
HELLOKITTY
KITTY#4# WH
3 - WH
GM
GM EVO ROSSI - SR BK
GM EVO HELLO KITTY #4 WH
Gambar 5.11. Karakter cluster
Untuk penamaan masing-masing cluster yang telah terbentuk dapat
berdasarkan karateristik dari masing-masing cluster, dalam penelitian ini dapat
menggunakan statistik rata-rata. Cluster satu dan dua dapat dinamakan kelompok
total pembelian sangat tinggi, karena kedua kelompok ini memiliki nilai rata-rata
terbesar terhadap total quantitynya dan jenis produk yang dipasarkan dominan
berada di wilayah Sleman. Cluster tiga dapat dinamakan kelompok total
pembelian tinggi, karena kelompok ini memiliki nilai rata-rata tinggi terhadap
total quantitynya setelah cluster satu dan dua dan produk yang dipasarkan
dominan di wilayah Yogyakarta. Cluster empat dan lima dapat dinamakan
kelompok total pembelian sedang, karena kedua kelompok ini memiliki nilai ratarata sedang terhadap total quantitynya setelah cluster tiga dan dua dan wilayah
pemasaran dari cluster ini berada di wilayah Sleman dan Kulonprogo. Cluster
63
SLM
SLM
SLM
SLM
KUL
SLM
KUL
KUL
YOG
KUL
YOG
YOG
KUL
YOG
SLM
KUL
GKD
SLM
KUL
GKD
GKD
KUL
GKD
Wilayah
Wilayah
Wilayah
YOG
GKD
YOG
YOG
SLM
GKD
GKD
SLM
GKD
SLM
SLM
GKD
SLM
SLM
SLM
Wilayah
GKD
Wilayah
KUL
GKD
KUL
KUL
GKD
KUL
KUL
GKD
YOG
KUL
GKD
YOG
GKD
GKD
KUL
GKD
SLM
KUL
GKD
SLM
GKD
GKD
KUL
GKD
GKD
KUL
GKD
GKD
SLM
GKD
KUL
SLM
KUL
KUL
GKD
KUL
YOG
GKD
KUL
YOG
KUL
KUL
KUL
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
enam dapat dinamakan kelompok total pembelian rendah, karena kelompok ini
memiliki nilai rata-rata rendah terhadap total quantitynya dan wilayah pemasaran
produk dari cluster ini berada di wilayah Kulonprogo. Cluster tujuh dan delapan
dapat dinamakan kelompok total pembelian sangat rendah, karena kelompok ini
memiliki nilai rata-rata paling rendah terhadap total quantitynya diantara cluster
lainya dan produk yang dipasarkan dominan di wilayah Gunungkidul. Dari
analisis diatas Dapat disimpulkan untuk wilayah pemasarannya diantaralain,
cluster satu, dua dan empat di kota Sleman, cluster tiga di kota Yogyakarta,
cluster lima dan enam di kota Kulonprogo, dan cluster tujuh dan delapan di kota
Gunungkidul
Untuk
mengetahui
ketepatan
sistem
dalam
melakukan
proses
pengelompokan, sebelumnya telah dilakukan pengelompokan terhadap 159 data
dan menghasilkan 8 cluster, selanjutnya akan dilakukan percobaan pembentukan
cluster ulang dengan menambahkan 20 data baru, percobaan ini dilakukan untuk
mengetahui apakah data baru tersebut masuk di dalam cluster yang tepat atau
tidak. Berikut ini adalah daftar 20 data baru.
64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
noFaktur kodeBarang
namaBarang
MC1150123007
0201006047ASCA ASTRO SOLID RYL RED
MC1150114007
0609707311GM TEEN HELLO KITTY #2 - SR WH
MC1150130001
0503328154VOG XTREAM - CL ICE BL
MC1150115003
0502604106VOG XTRAIL SOLID - CL GUN M
MC1150108001
0605707227GM EVO SOLID - SR WH
MC1150302002
0605730219GM EVO SOLID - SR DGM
MC1150113003
0502307090VOG FREEWAY SOLID - 2V WH
MC1150107001
0604501199GM FIGHTER SOLID - SR BK
MC1150122003
0502828122VOG NAVIGATOR SOLID - 2V ICE BL
MC1150119003
0503212143VOG NAVIGATOR PICLET - 2V BK/SIL
MC1150121001
0604004181GM INTERCEPTOR SOLID - 2V GUN M
MC1150120001
0609217298GM STARTECH SOLID GUN
MC1150107004
0604106193GM NEW IMPREZZA SOLID - 2V RYL RED
MC1150114006
0603866495GM NEW IMPREZZA GEN - 2V BL MET BK
MC1150109004
0713207407NHK PREDATOR 2 VISOR SOLID - 2V WH
MC1150107005
0713207407NHK PREDATOR 2 VISOR SOLID - 2V WH
MC1150119004
0712107360NHK GP 1000 SOLID - 2V WH
MC1150113004
0608913287GM SUPERCROSS NEUTRON - NV WH/RED
MC1150112001
0713822423NHK TERMINATOR RX 805 - 2V WH/SIL
MC1150123004
0717007476NHK TERMINATOR LOTUS 2V - WH
satuan
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
pcs
size
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
hargaJualquantity
101500 1
116000 2
147250 2
155000 2
167500 1
170000 2
180500 2
204000 2
209750 1
225750 2
241250 1
264250 1
275500 1
294750 1
314750 1
318750 1
350000 1
418750 1
420500 1
425500 2
Gambar 22
discount
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
discountReal
discount2 total
0
0
101500
0
0
232000
0
0
294500
0
0
310000
0
0
167500
0
0
340000
0
0
361000
0
0
408000
0
0
209750
0
0
451500
0
0
241250
0
0
264250
0
0
275500
0
0
294750
0
0
314750
0
0
318750
0
0
350000
0
0
418750
0
0
420500
0
0
851000
urut
2
2
1
5
2
8
10
4
15
4
3
8
11
7
4
12
1
4
12
7
hpp
92000
208000
265000
277000
153500
307000
325000
374000
189500
409000
221500
240000
250000
267500
290000
290000
317000
380500
386000
772000
hppdpp
92000
208000
265000
277000
153500
307000
325000
374000
189500
409000
221500
240000
250000
267500
290000
290000
317000
380500
386000
772000
hargasatuan
sisapesan statusReturOrder
statusNotaKredit
nourut
101500 0
N
N
980
116000 0
N
N
800
147250 0
N
N
432
155000 0
N
N
272
167500 0
N
N
624
170000 0
N
N
830
180500 0
N
N
220
204000 0
N
N
157
209750 0
N
N
975
225750 0
N
N
900
241250 0
N
N
919
264250 0
N
N
304
275500 0
N
N
602
294750 0
N
N
786
314750 0
N
N
700
318750 0
N
N
621
350000 0
N
N
902
418750 0
N
N
745
420500 0
N
N
191
425500 0
N
N
373
Gambar 5.12. Data Baru
Dari data baru pada Gambar 5.12 menghasilkan pengelompokan baru
seperti pada Tabel 5.8:
Tabel 17
Tabel 5.8. Hasil Clustering Divisive untuk penambahan data baru
Cluster
Cluster 1
Cluster 2
Cluster 3
Cluster 4
Cluster 5
Cluster 6
Cluster 7
Cluster 8
Jumlah anggota
20
29
31
13
22
18
5
21
Pada Tabel 5.8 adalah hasil yang diperoleh dari proses pengelompokan
ulang, selanjutanya akan dicek apakah ke-20 data tersebut sudah masuk kedalam
cluster yang sama dengan percobaan sebelumnya. Pada Gambar 5.13 adalah hasil
pengelompokannya:
65
kodeCanvaser
KelompokHar
KUL
0
YOG
0
SLM
0
GKD
0
SLM
0
SLM
0
KUL
0
SLM
0
SLM
0
YOG
0
YOG
0
KUL
0
KUL
0
GKD
0
SLM
0
SLM
0
YOG
0
SLM
0
SLM
0
YOG
0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Cluster Lama
ASCA ASTRO SOLID RYL RED
GM TEEN HELLO KITTY #2 - SR WH
VOG XTREAM - CL ICE BL
VOG XTRAIL SOLID - CL GUN M
GM EVO SOLID - SR WH
GM EVO SOLID - SR DGM
GM FIGHTER SOLID - SR BK
VOG NAVIGATOR PICLET - 2V BK/SIL
GM NEW IMPREZZA SOLID - 2V RYL RED
VOG NAVIGATOR SOLID - 2V ICE BL
GM INTERCEPTOR SOLID - 2V GUN M
GM STARTECH SOLID GUN
NHK GP 1000 SOLID - 2V WH
NHK TERMINATOR RX 805 - 2V WH/SIL
NHK TERMINATOR LOTUS 2V - WH
Gambar 23
Cluster Cluster
Cluster 2
Cluster 1
Cluster 1
Cluster 3
Cluster 2
Cluster 2
Cluster 1
Cluster 2
Cluster 2
Cluster 5
Cluster 3
Cluster 6
Cluster 3
Cluster 4
Cluster 3
Cluster 2
Cluster 1
Cluster 1
Cluster 3
Cluster 2
Cluster 2
Cluster 1
Cluster 2
Cluster 2
Cluster 5
Cluster 3
Cluster 6
Cluster 3
Cluster 4
Cluster 3
Cluster baru
ASCA ASTRO SOLID RYL RED
GM TEEN HELLO KITTY #2 - SR WH
VOG XTREAM - CL ICE BL
VOG XTRAIL SOLID - CL GUN M
GM EVO SOLID - SR WH
GM EVO SOLID - SR DGM
GM FIGHTER SOLID - SR BK
VOG NAVIGATOR PICLET - 2V BK/SIL
GM NEW IMPREZZA SOLID - 2V RYL RED
VOG NAVIGATOR SOLID - 2V ICE BL
GM INTERCEPTOR SOLID - 2V GUN M
GM STARTECH SOLID GUN
NHK GP 1000 SOLID - 2V WH
NHK TERMINATOR RX 805 - 2V WH/SIL
NHK TERMINATOR LOTUS 2V - WH
Gambar 5.13. Hasil Cluster Ulang
Hasilnya 15 dari 20 data baru yang di cluster ulang masuk ke dalam
cluster yang sama dan 5 data lainnya masuk ke dalam cluster yang berbeda.
Percobaan ini bertujuan untuk mengetahui seberapa akuratnya sistem dalam
membentuk sebuah cluster.
66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB VI
PENGUJIAN SISTEM
BAB VI PENGUJIAN SISTEM
Pada bab ini akan dijelaskan mengenai pengujian yang dilakukan, berikut
tahapa-tahapan yang dilakukan dalam pengujian sistem:
6.1. Rencana Pengujian
Hanya akan dilakukan satu jenis pengujian dalam sistem ini, yaitu
pengujian menggunakan blackbox. Pengujian menggunakan metode blackbox
berkaitan dengan pengujian terhadap antarmuka sistem. Mencangkup pengujian
apakah semua fungsi-fungsi sistem berjalan dengan sesuai dengan kebutuhan
fungsional yang telah di definisikan.
Berikut ini merupakan tabel rencana pengujian blackbox yang akan di
lakukan pada masing-masing kelas dalam sistem ini.
Tabel 18
No.
1
Tabel 6.1. Rencana pengujian Blackbox
Kelas Uji
HalamanUtama
Butir Uji
Melakukan
input
range
Jenis Pengujian
batas
Blackbox
Menampilkan data dari file yang
Blackbox
kelompok harga
berekstensi .csv
Melakukan clustering
Blackbox
Menampilkan hasil clustering
Blackbox
Menjalankan fungsi simpan hasil
Blackbox
pengelompokan
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6.1.1. Hasil Pengujian Black-box
1. Pengujian Input Range Harga
Berikut ini merupakan data pengujian untuk Input Range Harga pada kelas
HalamanUtama.
Tabel 19
Tabel 6.2. Tabel Pengujian input range harga
Kasus dan Hasil Uji (Data Benar)
No
1
Aktifitas yang
Keluaran yang
Hasil yang
dilakukan
diharapkan
diharapkan
Input nilai batas Data berhasil di Data berhasil
atas
dan
batas simpan kedalam di
Diterima
simpan
bawah mulai dari tabel
kedalam tabel
kelompok
kategori_nilai
1 kategori_nilai
Kesimpulan
sampai kelompok
5
Kasus dan Hasil Uji (Data Salah)
1
Input nilai batas Menampilkan
atas
dan
bawah
Pesan
batas pesan
error kesalahan
pada bahwa
nilai berhasil
masing-masing
range
kelompok
mengandung
Diterima
harga ditampilkan
mengandung sifat gabungan
gabungan
2
Input nilai batas Menampilkan
atas
bawah
dan
Pesan
batas pesan
error kesalahan
pada bahwa
nilai berhasil
setiap kelompok range
harga ditampilkan
ada yang kosong
boleh
tidak
kosong
68
Diterima
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Pengujian Input Data
Berikut ini merupakan data pengujian untuk Input Data pada kelas
HalamanUtama.
Tabel 20
Tabel 6.3. Tabel Pengujian input Data
Kasus dan Hasil Uji (Data Benar)
No
1
Aktifitas yang
Keluaran yang
Hasil yang
dilakukan
diharapkan
diharapkan
Memasukan data Data berhasil di Data
dari
file
yang seleksi
berekstensi .csv
Kesimpulan
Diterima
dan ditampilkan
ditampilkan
dalam tabel
dalam tabel
Kasus dan Hasil Uji (Data Salah)
1
Memasukan data Menampilkan
dari
file
yang pesan
Pesan
error kesalahan
berekstensi selain bahwa file yang berhasil
.csv
dimaksukan
tidak
sesuai
dengan format
69
ditampilkan
Diterima
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Pengujian Simpan Hasil Pengelompokan
Berikut ini merupakan data pengujian untuk Simpan Hasil Pengelompokan
pada kelas HalamanUtama.
Tabel 21
Tabel 6.4. Tabel Pengujian Clustering
Kasus dan Hasil Uji (Data Benar)
No
1
Aktifitas yang
Keluaran yang
Hasil yang
dilakukan
diharapkan
diharapkan
Menekan button directory
yang File
simpan
pilih tersimpan
dan telah
melakukan
oleh
penyimpanan
user
file
di
Diterima
dengan ekstensi
berhasil .doc
dengan tersimpan
ekstensi .doc
berhasil
Kesimpulan
file
dengan ekstensi
.doc
Menekan button directory
yang File
simpan
pilih tersimpan
dan telah
melakukan
oleh
penyimpanan
user
file
di
Diterima
dengan ekstensi
berhasil .xls
dengan tersimpan
ekstensi .xls
berhasil
file
dengan ekstensi
.xls
Kasus dan Hasil Uji (Data Salah)
1
-
-
70
-
-
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6.1.2. Kesimpulan Hasil Pengujian Black-box
Berdasarkan hasil pengujian yang telah dikakukan dapat disimpulkan
bahwa sistem ini dapat menangani error ketika fungsi yang dijalankan salah atau
tidak seseuai dengan aturan pemakaiannya, sedangakan secara fungsional sistem
ini dapat berjalan dengan baik dan menghasilkan keluaran yang sesuai dengan
yang diharapkan
6.2.Kelebihan dan Kekurangan Sistem
6.2.1. Kelebihan Sistem
Kelebihan dari sistem prediksi penjualan helm menggunakan algoritma
hierarchical divisive ini adalah:
1. Sistem dapat menyeleksi atribut secara otomatis.
2. Sistem menampilkan hasil clustering yang mudah dipahami oleh user.
3. Sistem mampu menampilkan waktu lama pembentukan cluster.
4. Sistem ini dapat mentimpan hasil sesuai pada tabel informasi cluster denga
hasil penyimpanan berupa file bertipe .xls, .doc, .txt.
6.2.2. Kekurangan Sistem
Kekurangan dari sistem prediksi penjualan helm menggunakan algoritma
hierarchical divisive ini adalah:
1. Sistem tidak dapat menambahkan jumlah kategori kelompok harga.
2. Sistem hanya dapat menerima masukan file bertipe .csv.
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Sistem tidak dapat menerima masukan dari tabel di database MySql
ataupun Oracle.
4. File csv harus merupakan hasil ekspor dari database MySQl tabel
detailpenjualancanvaser diharuskan baris pertama adalah nama kolom dan
baris seterusnya adalah datanya, dengan ketentuan ekspor Escaped by „\‟,
Lines Terminated by „\r\n‟ dan Fields terminated by ‟,‟.
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB VII
PENUTUP
BAB VII PENUTUP
7.1. Kesimpulan
Hasil penelitian sistem prediksi penjualan helm menggunakan algoritma
hierarchical divisive ini menghaslikan kesimpulan sebagai berikut:
1. Sistem ini digunakan untuk melakukan pengelompokan produk dengan
menggunakan
metode
divisive
clustering
yang
digunakan
untuk
memrediksi pendistribusian produk helm.
2. Algoritma divisive yang yang diterapkan dapat mengelompokan data untuk
memprediksi penjualan helm dengan menunjukkan nilai sum of square
error terendah dalam percobaan pengelompokannya. Pembentukan
kelompok menghasilkan 8 buah cluster.
3. Nilai dari SSE bergantung pada jumlah data dan jumlah cluster yang
dihasilkan, semakin maksimal jumlah cluster yang dihasilkan maka nilai
SSE semakin kecil.
4. Semakin banyak jumlah cluster yang dihasilkan dari proses divisive
clustering akan memberikan lebih banyak pula pisihan untuk menentukan
strategi pasar untuk kedepannya.
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7.2. Saran
Berdasarkan hasil pengujian dan analisa pada tugas akhir ini, penulis
memberikan saran untuk pengembangan penilitian secara lebih lanjut, antara lain:
1. Sistem ini diharapkan dapat dikembangkan agar mampu menerima inputan
file selain tipe csv atau dapat langsung mengambil sumber data dari
database yang terkait.
2. Hasil clustering dapat divisualkan jauh lebih baik dan lengkap sehingga
lebih interaktif dan lebih mudah dipahami(misal dendogram atau report
karakter cluster).
3. Algoritma yang dibuat pada sistem ini terbatas dalam pengolahan cluster
dalam jumlah data yang besar. Kedepannya diharapkan pengembangan
algoritma divisive dapat di buat lebih akurat, cepat, detail, dan efektif dalam
mengolah data yang besar.
4. Penyimpanan hasil clustering dapat dibuat dengan yang lebih relevan
sesuai dengan kebutuhan.
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA
Al
Fatta,
Hanif.
2007.
Analisa
dan Perancangan
Sistem
Informasi.
Yogyakarta, Andi.
Budi Santosa. Data Mining : Teknik Pemanfaatan Data Untuk Keperluan Bisnis.
Graha Ilmu, Yogyakarta, 2007.
Han & Kamber. 2006. Data Mining Concepts and Techniques Edisi ke-2.
San Fransisco : Morgan Kaufmann publisher.
Larose , Daniel T, 2005, Discovering Knowledge in Data: An Introduction to Data
Mining, John Willey & Sons. Inc.
Lior Rokach, “Data Mining And Knowledge Discovery Handbook, Chapter 15:
Methods”.
Clustering
Available
http://www.ise.bgu.ac.il/faculty/liorr/hbchap15.pdf
at:
[Diakses
tanggal
25
Januari 2015]
Munir, Rinaldi. 2004. Matematika Diskrit.
Pramudiono,
I.,
2006,
Apa
itu
data
mining?,
http://datamining.japati.net/cgibin/indodm.cgi?bacaarsip&1155527614&artik
el, tanggal terakhir akses 16 Januari 2007.
Prasetyo, E. (2014). Data Mining: Pengolahan Data Menjadi Informasi
Menggunakan Matlab.Yogyakarta: Andi
Veronika S. Moertini. Data mining sebagai solusi bisnis. In INTEGRAL, volume
7, April 2002.
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN 1
DIAGRAM USE CASE
Input kelompo Harga
Input data
User
Proses Clustering
Simpan hasilClustering
Definisi Aktor
No
Aktor Deskripsi
1
User
Aktor ini dapat range kelompok harga jual, melakukan proses input data,
melakukan proses klaster dan simpan hasil pengelompokan.
Definisi Use Case
Nomor Use Case Nama Use Case
001
Deskripsi
Input kelompok Use case ini menentukan range kelompok harga
harga
untuk mengeset kelompok harga data penjualan
nantinya.
002
Input data
Use case mengingputkan data penjualan yang sudah
di ekspor dari database yang berformat csv.
003
Proses clustering Use case menggambarkan proses dimana user
melakukan proses cluster terhadap data penjualan
yang ada.
004
Simpan
hasil Use case ini menggambarkan user melakukan
cluster
simpan hasil pola cluster yang telah dilakukan
76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN 2
NARASI USE CASE
Nama Use Case
Input kelompok harga
Nomor Use Case
001
Actor
User
Deskripsi Use Case
Use case ini menggambarkan penentuan kelompok range harga.
Kondisi Awal
Tampil halaman home
Kondisi Akhir
Sistem menyimpan data kelompok range harga.
Langkah Umum
Actor
Sistem
Langkah
1:
sistem
menampilkan halaman utama.
Langkah 2: User menginputkan
range batas kelompok harga.
Langkah 3: User menginputkan
batas bawah kelompok satu dan
batas atas harga kelompok 1.
Langkah 4: User menginputkan
batas bawah kelompok satu dan
batas atas harga kelompok 2.
Langkah 5: User menginputkan
batas bawah kelompok satu dan
batas atas harga kelompok 3.
Langkah 6: User menginputkan
batas bawah kelompok satu dan
batas atas harga kelompok 4.
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Langkah 7: User menginputkan
batas bawah kelompok satu dan
batas atas harga kelompok 5.
Langkah 8: User mengklik
tombol “Simpan”.
Langkah
9:
menyimpan
kelompok
sistem
akan
range
harga
ke
table
kategori_nilai.
Langkah
10:
sistem
akan
pindah ke tab preprosesing.
Langkah Alternatif
Alt-Lagkah 2: jika user tidak benar menginputkan jumlah harga
sistem akan menempilkan peringatan jika user salah memasukan
harga.
Alt-Lagkah 3- Alt-Lagkah 7: jika user menginputkan jumlah
harga lebih kecil dari batas harga kelompok sebelumnya sistem
akan menampikan peringatan jika range harga
sistem akan
menempilkan peringatan jika batas harga tidak sesuai.
Kesimpulan
Use case ini akan berhenti apabila user telah menginputkan batas
harga yang sesuai. Use case ini tidak akan menyimpan batas nilai
kelompok harga jika batas nilai kelompok selanjutnya lebih kecil
dari batas nilai kelompok sebelum-sebelumnya.
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Nama Use Case
Input data
Nomor Use Case
002
Actor
User
Deskripsi Use Case
Use case ini melakukan proses input data berupa file csv hasil
eksport dari table detail penjualan.
Kondisi Awal
Nilai-nilai batas kelompok harga berhasil di simpan dan Tampil
halaman home tab preprosesing.
Kondisi Akhir
Sistem melakukan proses sleksi atribut, pelabelan kelompok harga
dan pegelompokan data berdasarkan nama barang.
Langkah Umum
Actor
Sistem
Langkah 1: Manager mengklik
“Pilih File”.
Langkah
2:
menampilkan
Sistem
file
chooser
untuk memasukan file.
Langkah
3:
User
sistem
melakukan pencarian file yang
akan digunakan.
Langkah
4:
menampilkan
Sistem
data
yang
dimasukan kedalam tabel data
Langkah 5: User mengklik
tombol “Submit”.
Langkah 6: Sistem mensleksi
atribut
yang
diperlukan
terhadap penelitian, lalu sistem
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
memberi label pada kelompok
harga sesuai dengan batas nilai
kelompok
yang
sudah
ditentukan,
lalu
sistem
menampilkan data pada table
sleksi sesuai dengan isi file
yang telah dipilih.
Langkah 7: User mengklik
tombol “Preprocessing”.
Langkah
6:
Sistem
melakukan
akan
proses
pengelompokan nama barang
yang sama dan menjumlahkan
quantity-nya
Berdasarkan
tiap
kelompoknya.
Langkah
7:
menampilkah
Sistem
akan
hasil
data
sistem
akan
preprosesing.
Langkah 8: User mengklik
tombol “Cluster”
Langkah
9:
melakukan proses clustering
Langkah Alternatif
Alt-Lagkah 3: jika user menginputkan file selain file yang
bertipe .CSV sistem akan error dan memberi peringatanberupa file
inputan harus bertipe csv.
Alt-Lagkah 5: jika user mengklik tombol “BATAL” sistem akan
80
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
membatalkan proses input data.
Kesimpulan
Use Case ini memulai proses input data, memberi label kelompok
untuk digunakan pada proses preprosesing data.
Nama Use Case
Proses Clustering
Nomor Use Case
003
Actor
User
Deskripsi Use Case
Use case ini melakukan proses preprocessing
Kondisi Awal
Data hasil preprocessing siap digunakan untu proses clustering
Kondisi Akhir
Hasil dari data penjualan yang diproses oleh sistem berhasil
membentuk cluster
Langkah Umum
Actor
Sistem
Langkah 1: Sistem akan melakukan
proses
pengclusteran,
sistem
menampilkan hasil cluster pada table
cluster, serta menampilkan label dan
jumlah cluster pada masing-masing
tabelnya.
Langkah Alternatif
-
Kesimpulan
Use Case ini adalah proses dari data mining menggunakan
algoritma hierarki divisive.
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN 3
DIAGRAM AKTIVITAS
1. Diagram aktivitas input range harga
user menginputkan nilai batas atah dan
batas bawah harga tiap kelompok
T
Y
Mengecek nilai inputan
masing-masing kelompok
Sistem menyimpan
nilai kelompok
harga di database
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Diagram aktivitas input data file
Menklik timbol
"Pilih file"
menampilkan file chooser
untuk memasukkan file
mencari file yang
digunakan
menyeleksi atribut lalu
menampilkan data pada tabel
data sesuai dengan isi file
mengklik tombol
"Submit"
melakukan treanformasi data
lalu menampilkan hasil
preprosesing pada tabel di tab
Clustering
mengklik tombol
"proses"
melakukan proses
clustering
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Diagram Aktivitas clustering
melakukan proses cluster
menampilkan hasli
cluster pada tabel
84
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4. Diagram Aktivitas Simpan Hasil Deteksi Outlier
mengklik tombol
"SIMPAN"
menampilkan dialog
pemilihan direktori
penyimpanan
menentukan lokasi
penyimpanan
mengisikan nama file
menyimpan hasil cluster kedalam file
dalam direktori yang terpilih
memilih ekstensi
penyimpanan file
85
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN 4

Diagram Sequence Input nilai Range harga
<<Controller>>
controlRangeHar
ga
<<Entity>>
RangeHarga
<<view>>
HalamanUtama
User
1. Menampilkan HalamanUtama
Tab Range Harga
6. prosesInsertRange(RangeHarga range)
2. HalamanUtama.lihatRangeHarga()
3. mengisi semua nilainilai batas kelompok
4. cekInputRangeHarga()
5. cekIsiData()
7. prosesUpdateRange(RangeHarga range)

Diagram Sequence Input Data File
<<view>
HalamanUtama
User
1. Menekan tombol "Pilih File"
2. Menampilkan kotak dialog File chooser
3. Memilih file bertipe .csv
4. pilihFileB utton Ac tion Per
fo rmed(java.awt.event.ActionEven t evt)
5. Menapilkan data inputan di tabel data
6. Menekan tombol "Submite"
7.Inpu tPrepro
sesData(tabelInputData);
8. Menapilkan data Seleksi di tabel seleksi
9. Menekan tombol "Preprocessing"
10.SubmitPreprosesing();
11. Menapilkan data preprocessing
di tabel preprocessing
86
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Diagram Sequence Proses Cluster
<<view>>
HalamanUtama
User
<<Control>>
ControlRangeHarga
<<Entity>>
Graph
1. Menekan tombol "Cluster"
2. crlharga.deletePreproses();
3. graph.inputDa
ta(dataKelompokHargaTable);
5. LostClustering2(int iterasi)
4. graph.LostClustering();
6. SimpanCluster(
ArrayList<String> list, int Iter,
Double Data, double sse)
7. SimpanSubCluster(
ArrayList<String> list, int
Iter, Double Data, double sse)
9. SimpanCluster(
ArrayList<String> list, int Iter,
Double Data, double sse)
11. TampilLabel();
10. SimpanSubCluster(
ArrayList<String> list, int
Iter, Double Data, double sse)
12. TampilJML();
13. TampilSSE();
14. pop_tree();
87
8. LostClustering3(int iterasi)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Diagram Sequence Simpan Hasil Cluster
<<view>>
HalamanUtama
User
1. Menekan tombol "Simpan"
2. Menampilkan kotak dialog penyimpanan
3. Memilih direktori penyimpanan
4. Mengisi nama file hasil penyimpanan
5. Memilih tipe file hasil penyimpanan
jButtonSimpanActionPer
formed(java.awt.event.ActionEvent evt)
7. Menampilkan pesan berhasil di simpan
88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN 5
DIAGRAM KELAS DESAIN
89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
93
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
94
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN 6
1.
Rincian algoritma pada setiap method pada kelas KoneksiDB
Nama Method
Fungsi
Algoritma
KoneksiDB()
Method ini digunakan
1. Mengambil parameter url, userid, dan
untuk
mengkoneksikan
bukaKoneksi()
password untuk membuat koneksi.
2. Jika benar, sistem akan mengembalikan nikai
sistem ke
koneksi dan berhasil terkoneksi dengan database
database MySql
MySql .
Method ini digunakan
1. Mengambil parameter url, userid, dan
untuk membuka
koneksi baru.
password untuk membuat koneksi.
2. Jika benar, sistem akan mengembalikan nikai
koneksi dan berhasil terkoneksi dengan database
MySql.
lihatData(String sql)
Method ini digunakan
1. Mengambil parameter inputan yang berupa
untuk mengeksekusi
sebuah query
query.
2. Jika benar, Sistem akan menampilkan query
tersebut.
2.
Rincian algoritma pada setiap method pada kelas graph
Nama Method
Fungsi
Algoritma
addVerteks(String,
Method ini digunakan
1. Membaca inputan parameter label dan nilai.
List)
untuk membuat
2. Mendeklarasikan sebuah vertex baru dengan
sebuah vertex untuk
memasukan nilai label dan nilai kedalam vertex.
membentuk graph
addEdge(int, int,
Method ini digunakan
1. Membaca inputan nilai parameter x, y, dan nilai.
Double)
untuk mengisi setiap
2. memasukan nilai-nilai dari parameter tersebut
nilai edge pada vertex
kedalam variabel adjMatt untuk mengisi nilai
edge.
cariJarakEcludian(int, Method ini digunakan
int)
1. Membaca parameter indexAwal dan
untuk mencari nilai
kemiripan obyek
indexTujuan.
2. Membuat obyek a dan obyek b untuk
95
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
menggunakan
menampung nilai dari indexAwal dan
perhitungan euclidean
1.Membaca parameter indexAwal dan
distance
indexTujuan.
3. Mengeset nilai sum = 0.0.
4. Selama nilai i kurang dari jumlah data a, maka
akan di lakukan perhitungan sum = sum +
Math.pow((x.get(i) - y.get(i)), 2.0).
5. Mengembalikan nilai sum.
6. Membulatkan hasil sum menjadi 2 angka di
belakang koma.
tampilJarakEuclidean
Method ini digunakan
()
untuk menampilkan
maka akan ditampilkan
graph hasil
label dari vertex tersebut.
perhitungan euclidean
1. Selama nilai i kurang dari panjang vertexList,
2. Selama nilai i kurang dari panjang adjMat, maka
distance
akan di tampilkan perhitungan jarak
Euclidian Distance.
inputData(JTable )
Method ini digunakan
1. Membaca inputan parameter tabel.
untuk menginputkan
2. Selama i kurang dari
data dari Jtabel ke
jumlah baris pada tabel, maka di buat obyek
dalam matriks dan
listNilai bertipe ArrayList.
kedalam graph
3. Mulai dari j samadengan 1, selama j kurang dari
jumlah kolom pada tabel. Set label nilai label
pada indeks ke-0 pada tabel.
4. Memanggil method addVertex untuk membuat
verteks.
5. Selama i kurang dari jumlah baris pada tabel dan
selama j= i+1 kurang dari jumlah baris pada
kolom, dan selam i tidak sama dengan j maka
akan memanggil method
addEdge untuk mengisi nilai edge dengan jarak
96
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
EcluidianDistance pada method
cariJarakEcludian.
LostClustering ()
Method ini berisi
1. Membersihkan obyek mapClsuter.
algoritma divisive
2. Memanggil method SpDelete().
yang digunakan untuk
3. Membuat obyek iterasi bertipe int mengset nilai
tahapan pertama
iterasi menjadi 1.
proses
4. Memanggil method getadjMat.
pengelompokan data.
5. Memanggil method getVerteksList.
6. Memanggil method Averagematrix.
7. Memanggil method CariObjekTerbesar.
8. Untuk i sama dengan 0 selama i kurang dari
panjang data LabelCluster.
9. Jika i tidak sama dengan splinter maka ambil
nilai LabelCluster masukkan ke MatrixList.
10. Jika i sama dengan splinter maka ambil nilai
LabelCluster masukkan ke SplinterList.
11. Memanggil method UpdateMatriks.
12. Memanggil method getDataMatriks.
13. Memanggil method getLabelMatriks.
14. Memanggil method getDataSplinter.
15. Memanggil method Averagematrix.
16. Memanggil method AverageSplinter.
17. Memanggil method HitungSelisih.
18. Memanggil method AmbilIndexSelisih tampung
nilai kembali ke obyek indexSplinter.
19. Membuta obyek posCount bertipe int. mengeset
nilai posCount menjadi 0.
20. Untuk semua nilai j diisikan dengan obyek
HasilSelisih.
21. Jika j lebih besar dari 0 maka, jumlahkan nilai
posCount.
97
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22. Jika posCount sama dengan 0 maka lakukan
langkah berikut:
a.
23. Jika tidak maka lakukan langkah 1 s.d 9:
1. Bersihkan MatrixList.
2. Untuk I sama dengan 0 selama I kurang dari
panjang LabelClusterUpdate.
3. Jika indexSplinter tidak mengandung
elemen i.
4. Ambil nilai dari LabelClusterUpdate
kemudian diisikan ke obyek MatrixList.
5. Jika indexSplinter mengandung elemen i.
6. Ambil nilai dari LabelClusterUpdate
kemudian diisikan ke obyek SplinterList.
7. Memanggil method UpdateMatriks.
8. Memanggil method UpdateMatriksAkhir.
9. Memanggil method LostClustering2.
LostClustering2 ()
Method ini berisi
1. Membaca inputan parameter iterasi.
algoritma divisive
2. Memanggil method getadjMat
yang digunakan untuk
3. Memanggil method getDataMatriks
tahapan kedua proses
4. Memanggil method getDataSplinter
pengelompokan data
5. Memanggil method getVerteksList
jika kemolpok splinter
6. Memanggil method getLabelMatriks
masih memiliki nilai
7. Memanggil method Averagematrix
positif.
8. Memanggil method AverageSplinter
9. Memanggil method HitungSelisih
10. Memanggil method AmbilIndexSelisih tampung
nilai kembali ke obyek indexSplinter
11. Membuat obyek posCount bertipe int. mengeset
nilai posCount menjadi 0
12. Untuk semua nilai j diisikan dengan obyek
98
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HasilSelisih
13. Jika j lebih besar dari 0 maka, jumlahkan nilai
posCount
14. Jika posCount sama dengan 0 maka lakukan
langkah 1 s.d 17:
15. Memanggil method MaxCluster
16. Memanggil method akurasi
17. Membuat obyek ArrayList tempC bertipe string
18. Isi element tempC dengan obyek arraylist
SplinterListAkhir
19. Memanggil method SimpanCluster
20. Isi Isi element mapClsuter dengan obyek
arraylist tempC
21. Jumlahkan nilai iter
22. Membersihkan elemen MatrixList
23. Membersihkan element SplinterList
24. Untuk I sama dengan 0 selama I kurang dari
panjang LabelClusterUpdate
25. Jika indexSplinter tidak mengandung elemen i
26. Ambil nilai dari LabelClusterUpdate kemudian
diisikan ke obyek MatrixList
27. Jika indexSplinter mengandung elemen i
28. Ambil nilai dari LabelClusterUpdate kemudian
diisikan ke obyek SplinterList
29. Memanggil method UpdateMatriks
30. Memanggil method UpdateMatriksAkhir
31. Memanggil method LostClustering3
32. Jika tidak maka lakukan langkah 1 s.d 9 :
33. Membersihkan elemen MatrixList
34. Untuk I sama dengan 0 selama I kurang dari
panjang LabelClusterUpdate
99
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35. Jika indexSplinter tidak mengandung elemen i
36. Ambil nilai dari LabelClusterUpdate kemudian
diisikan ke obyek MatrixList
37. Jika indexSplinter mengandung elemen i
38. Ambil nilai dari LabelClusterUpdate kemudian
diisikan ke obyek SplinterList
39. Memanggil method UpdateMatriks
40. Memanggil method UpdateMatriksAkhir
41. Memanggil method LostClustering2
LostClustering3()
Method ini berisi
1. Membaca inputan parameter iterasi.
algoritma divisive
2. Memanggil method getadjMat
yang digunakan untuk
3. Memanggil method getDataSplinter
tahapan kedua proses
4. Memanggil method getDataMatriks
pengelompokan data
5. Memanggil method getVerteksList
jika kemolpok splinter
6. Memanggil method getLabelMatriks
masih memiliki nilai
7. Memanggil method Averagematrix
negatif.
8. Memanggil method AverageSplinter
9. Memanggil method HitungSelisih
10. Memanggil method AmbilIndexSelisih tampung
nilai kembali ke obyek indexSplinter
11. Membuat obyek posCount bertipe int. mengeset
nilai posCount menjadi 0
12. Untuk semua nilai j diisikan dengan obyek
HasilSelisih
13. Jika j lebih besar dari 0 maka, jumlahkan nilai
posCount
14. Jika posCount sama dengan 0 maka lakukan
langkah 1 s.d 15:
15. Memanggil method UpdateMatriks
16. Memanggil method UpdateMatriks
17. Memanggil method MaxCluster
100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18. Memanggil method akurasi
19. Memanggil method MaxCluster
20. Memanggil method akurasi
21. Membuat obyek ArrayList TempSplinterBaru
bertipe string
22. Membuat obyek ArrayList TempSplinter bertipe
string
23. Isi element TempSplinterBaru dengan obyek
arraylist MatrixLisAkhir
24. Isi element TempSplinter dengan obyek arraylist
SplinterListAkhir
25. Isi Isi element mapClsuter dengan obyek
arraylist TempSplinter
26. Memanggil method SimpanCluster
27. Jumlahkan nilai iter
28. Isi Isi element mapClsuter dengan obyek
arraylist TempSplinterBaru
29. Memanggil method SimpanCluster
30. Jika tidak maka lakukan langkah 1 s.d 9 :
31. Membersihkan elemen MatrixList
32. Untuk I sama dengan 0 selama I kurang dari
panjang LabelClusterUpdate
33. Jika indexSplinter tidak mengandung elemen i
34. Ambil nilai dari LabelClusterUpdate kemudian
diisikan ke obyek MatrixList
35. Jika indexSplinter mengandung elemen i
36. Ambil nilai dari LabelClusterUpdate kemudian
diisikan ke obyek SplinterList
37. Memanggil method UpdateMatriks
38. Memanggil method UpdateMatriksAkhir
39. Memanggil method LostClustering2
101
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
UpdateMatriks(Array
Method ini digunakan
List, ArrayList,
untuk mengupdate isi
double[][],
array DataMatriks dan
Verteks[])
adSplinter yang
nantinya digunakan
1. Membaca inputan parameter MatrixUtama,
MatrixSplit, data dan list.
2. Membuat obyek m bertipe int. mengeset nilai m
menjadi 0.
3. Membuat obyek m1 bertipe int. mengeset nilai
untuk proses
clustering slanjutnya
m1 menjadi 0.
4. Membuat obyek countMatrix bertipe ArrayList.
5. Membuat obyek countSplit bertipe ArrayList.
6. Membuat obyek LabelSpliter bertipe Verteks.
7. Membuat obyek LabelCluster bertipe Verteks.
8. Membuat obyek dataMatriks bertipe array.
9. Membuat obyek dataSplit array.
10. Untuk i sama dengan 0, selama i kurang dari
ukuran MatrixUtama.
11. Membuat obyek count bertipe int, memanggil
method Search.
12. Isi element countMatrix dengan count.
13. Untuk i sama dengan 0, selama i kurang dari
ukuran MatrixSplit.
14. Membuat obyek count bertipe int, memanggil
method Search.
15. Isi element countSplit dengan count.
16. Set nilai m sama dengan 0.
17. Set nilai m1 sama dengan 0.
18. Selama j kurang dari panjang data list.
19. Jika elemen countMatrix mengandung j.
20. Set LabelCluster dengan elemen list pada index
j.
21. Jumlahkan nilai m.
22. Jika elemen countSplit mengandung j.
23. Set LabelSpliter dengan elemen list pada index j.
102
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24. Jumlahkan nilai m1.
25. Set nilai m sama dengan 0.
26. Set nilai m1 sama dengan 0.
27. Selama e kurang dari panjang data data.
28. Jika elemen countMatrix mengandung e
29. Membuat obyek n bertipe int. mengeset nilai n
menjadi 0.
30. Membuat obyek k bertipe int. mengeset nilai k
menjadi 0.
31. Selama j kurang dari panjang data data
32. Jika elemen countMatrix mengandung j
33. Set datamatriks dengan elemen data1 pada index
e dan j.
34. Jumlahkan nilai n.
35. Jika elemen countSplit mengandung j
36. Set dataSplit dengan elemen data1 pada index e
dan j
37. Jumlahkan nilai k
38. Jumlahkan nilai m
39. Jumlahkan nilai m1
40. Memanggil method setDataMatriks
41. Memanggil method setLabelMatriks
42. Memanggil method SetDataSplinter
43. Memanggil method setLabelSplinter
UpdateMatriksAkhir(
Method ini digunakan
ArrayList, ArrayList,
untuk mengupdate isi
double[][],
array
Verteks[])
DataMatriksAkhir dan
DataSplinterAkhir
1. Membaca inputan parameter MatrixUtama,
MatrixSplit, data dan list.
2. Membuat obyek m bertipe int. mengeset nilai m
menjadi 0
3. Membuat obyek m1 bertipe int. mengeset nilai
yang nantinya
digunakan untuk
m1 menjadi 0
4. Membuat obyek countMatrix bertipe ArrayList
103
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
menghitung akurasi
5. Membuat obyek countSplit bertipe ArrayList
6. Membuat obyek LabelMatriks1 bertipe Verteks
7. Membuat obyek LabelSplinter1 bertipe Verteks
8. Membuat obyek DataMatriks1 bertipe array
9. Membuat obyek DataSplinter1 bertipe array
10. Untuk i sama dengan 0, selama i kurang dari
ukuran MatrixUtama
11. Membuat obyek count bertipe int, memanggil
method Search
12. Isi element countMatrix dengan count
13. Untuk i sama dengan 0, selama i kurang dari
ukuran MatrixSplit
14. Membuat obyek count bertipe int, memanggil
method Search
15. Isi element countSplit dengan count
16. Set nilai m sama dengan 0
17. Set nilai m1 sama dengan 0
18. Selama j kurang dari panjang data list
19. Jika elemen countMatrix mengandung j
20. Set LabelMatriks1 dengan elemen list pada
index j
21. Jumlahkan nilai m
22. Jika elemen countSplit mengandung j
23. Set LabelSplinter1 dengan elemen list pada
index j
24. Jumlahkan nilai m1
25. Set nilai m sama dengan 0
26. Selama e kurang dari panjang data data
27. Jika elemen countMatrix mengandung e
28. Membuat obyek n bertipe int. mengeset nilai n
menjadi 0
104
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29. Selama j kurang dari panjang data data
30. Jika elemen countMatrix mengandung j
31. Set DataMatriks1 dengan elemen data1 pada
index e dan j
32. Jumlahkan nilai n
33. Jumlahkan nilai m
34. Set nilai m1 sama dengan 0
35. Selama e kurang dari panjang data data
36. Jika elemen countSplit mengandung e
37. Membuat obyek n bertipe int. mengeset nilai n
menjadi 0
38. Selama j kurang dari panjang data data
39. Jika elemen countSplit mengandung j
40. Set DataSplinter1 dengan elemen data1 pada
index e dan j
41. Jumlahkan nilai n
42. Jumlahkan nilai m
43. Memanggil method setDataMatriks
44. Memanggil method setLabelMatriks
45. Memanggil method SetDataSplinter
46. Memanggil method setLabelSplinter
47. Membarsihkan isi elemen MatrixLisAkhir
48. Membarsihkan isi elemen SplinterListAkhir
49. Selama i kurang dari panjang list
50. Jika countMatrix mengandung i
51. Isi ambil nilai list isikan ke elemen
MatrixLisAkhir
52. Jika countSplit mengandung i
53. Isi ambil nilai list isikan ke elemen
SplinterListAkhir
AmbilIndexSelisih(do
Method ini digunakan
1. Membaca inputan parameter Data dan list.
105
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
uble[], Verteks[])
untuk mengambil nilai 2. Membaut obyek tempIndex bertipe ArrayList
minimum dari hasil
3. Membuat obyek minValueCounter bertipe int,
perhitungan selisih
kelompok matrik
set nilai sama dengan 0
4. Membuat obyek index bertipe int, set nilai sama
dengan kelompok
splinter
dengan 0
5. Membaut obyek rerataAll bertipe array
6. Membuat obyek nilaiMin bertipe int, set nilai
sama dengan 0
7. Selama i kurang dari panjang Data
8. Ini elemen retaraAll pada indeks i dengan Data
pada indeks i
9. Membuat obyek bd bertipe BigDecimal
10. Isi nilai bd dengan elemen rerataAll
11. Memenggil method setScale
12. Isi elemen rerataAll dengan nilai bd
13. Isi nilaiMin dengan elemen rerataAll
14. Selama I kurang dari panjang rerataAll
15. Jika elemen rarataAll lebih besar dari nilaiMin
maka
16. nilaiMin sama dengan elemen rarataAll
17. set nilai minValueCounter sama dengan 1
18. set nilai index sama dengan 1
19. membersihkan elemen tempIndex
20. Isi elemen tempIndex dengan nilai index
21. Jika Jika elemen rarataAll lebih besar dari
nilaiMin maka
22. Jumlahkan nilai minValueCounter
23. Isi elemen tempIndex dengan nilai i
24. Mengembalikan nilai tempIndex
Search(String)
Method ini digunakan
1. Membaca inputan parameter label.
untuk untuk mencari
2. Selama i kurang dari panjang verteksList
106
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
label sampel
3. Jika label sama dengan elemen verteksList
4. Mengembalikan nilai i
5. Jika tidak mengembalikan nilai -1
CariObjekTerbesar
Method ini digunakan
1. Membaca inputan parameter data dan label.
(double[], Verteks[])
untuk menghirung
2. Membuat obyek nilaiMax bertipe int.
nilai rata-rata splinter
3. Membuat obyek sum bertipe double
grup.
4. Membuat obyek idMax bertipe int.
5. Untuk i =0, selama i kurang dari panjang data
array
6. Tampung setiap nilai array data ke variabel sum.
7. Jika nilai sum lebih besar dari nilai nilaiMax.
8. nilaiMax=sum
9. set nilai baru idMax dengan nilai indeks i yang
memiliki nilai rata-rata terbesar.
10. Set splinter dengan niali idxMax
11. Mengembalikan nilai splinter
Averagematrix
Method ini digunakan
1. Membaca inputan parameter data, list dan
(double[][],
untuk mencari nilai ra-
Verteks[], ArrayList)
rata dari semua
2. Membuat obyek rerata beripe array
sample pada matriks.
3. Selama i dan j kurang dari panjang data,
listSize.
jumlahkan semua nilai pada masing-masing
sampel data lalu tampung di variabel rerata.
4. Nilai rerata pada setiap index i dibagi jumlah
sample list
5. Memanggil method RoundTo2DecimalsArray
6. Mengmbalikan nilai rerata
AverageSplinter
Method ini digunakan
1. Membaca inputan parameter data, list dan
(double[][],
untuk memisah matrik
Verteks[], ArrayList)
yang memiliki nilai
2. Membuat obyek rerata beripe array
rata-rata terbesar.
3. Selama i dan j kurang dari panjang data dan
listSize.
107
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
listSize, jumlahkan semua nilai pada masingmasing sampel data lalu tampung di variabel
rerata.
4. Nilai rerata pada setiap index i dibagi jumlah
sample listSize.
5. Memanggil method RoundTo2DecimalsArray.
6. Mengmbalikan nilai rerata.
HitungSelisih(double
Method ini digunakan
1. Membaca inputan parameter obyekMatrix,
[], double[],
untuk menghitung
Verteks[])
selisih antara
2. Membuat obyek rerata beripe array
kelompok matrik
3. Membuat obyek ave beripe array.
dengan kelompok
4. Membuat obyek nilaiMax beripe double.
splinter
5. Membuat obyek idxMax beripe int.
objekSplinter dan list.
6. Selama i kurang dari panjang data obyekMatrix
7. Hitung selisih elemen obyekMatrix dengan
objekSplinter pada masing-masing index,
tampung hasil selisih di obyek rerata
8. Pindahkan isi elemen rerata ke obyek ave
9. Set nilaiMx dengan elemen ave
10. Selama i kurang dari dari panjang data ave
11. Jika elemen ave lebih besar dari nilai indexMax
12. Set nilaiMax dengan elemen ave
13. Set idMax dengan i
14. Memanggil method RoundTo2DecimalsArray.
15. Mengmbalikan nilai HasilSelisih.
RoundTo2DecimalsA Method ini digunakan
1. Membaca inputan parameter val.
rray(double[])
2. Selama i kurang dari panjang data val
untuk membulatkan
hasil nilai yang bertipe 3. Membuat obyek bd bertipe BigDecimal, set
array
elemen val di bd
4. Memanggil method setScale
108
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5. Set elemen val dengan bd
6. Mengembalikan nilai val
RoundTo2DecimalsS
Method ini digunakan
1. Membaca inputan parameter val.
ingle(double)
untuk membulatkan
2. Membuat obyek bd bertipe BigDecimal, set
hasil nilai bertipe
double
elemen val di bd
3. Memanggil method setScale
4. Set elemen val dengan bd
5. Mengembalikan nilai val
MaxCluster_C(doubl
Digunakan untuk
e[][])
mengukur diameter
matriks cluster C.
1. Baca parameter masukan nilai rata-rata setiap
samepl dan label sampel
2. Membuat obyek nilaiMax bertipe int.
3. Membuat obyek sum bertipe double
4. Membuat obyek idMax bertipe int.
5. Untuk i =0, selama i kurang dari panjang data
array
6. Tampung setiap nilai array data ke variabel sum.
7. Jika nilai sum lebih besar dari nilai nilaiMax.
8. nilaiMax=sum
9. set nilai baru idMax dengan nilai indeks i yang
memiliki nilai rata-rata terbesar
10. Mengembalikan nilai idMax
BobotMatriks
Method ini digunakan
1. Membaca inputan parameter data dan list.
(double[][],ArrayList
untuk mencari nilai
2. Membuat obyek mean bertipe int.
)
bobot dari matrik itu
3. Membuat obyek sum bertipe array
sendiri
4. Untuk i =0 dan j=0, selama i dan j kurang dari
panjang data array
5. Set nilai sum=0
6. Jumlahkan setiap elemen data array, tampung di
obyek sum
7. Bagi elemen sum dengan panjang data array
109
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tampung di obyek ave
8. Mengembalikan nilai ave
akurasi(double[][])
Method ini digunakan
1. Membaca inputan parameter data.
untuk menghitung
2. Membuat obyek mean bertipe int.
sum of square.
3. Membuat obyek sum bertipe array
4. Membuat obyek sse bertipe double
5. Membuat obyek sumerr2 bertipe array[]
6. Membuat obyek matriks bertipe array [][]
7. Untuk i =0 dan j=0, selama i dan j kurang dari
panjang data array
8. Set nilai sum=0
9. Jumlahkan setiap elemen data array, tampung di
obyek sum
10. Bagi elemen sum dengan panjang data array
tampung di obyek mean
11. Untuk i dan j =0, selama i dan j kurang dari
panjang data maka lakukan matriks [i][j] =
(data[i][j] - mean)
12. Untuk i dan j =0, selama i dan j kurang dari
panjang data maka lakukan matriks [i][j] =
Math.pow((matriks [i][j]), 2)
13. Untuk i dan j =0, selama i dan j kurang dari
panjang data maka lakukan sumerr2[i] +=
matriks[i][j]
14. Jumlahkan elemen sumerr2 tampung di sse
15. Membnulatkan nilai sse
16. Mengembalikan nilai sse
3.
Rincian algoritma pada setiap method pada kelas controlRangeHarga
110
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Nama Method
Fungsi
Algoritma
cekIsiData()
Method ini digunakan
1. membuat obyek baru koneksi.
untuk mengecek isi
2. Membuat obyek jumlah bertipe int.
data pada tabel
3. membuka koneksi
kategori_nilai dalam
4. Membuat obyek baru range harga
database
5. Membuat obyek sql beripe string.
6. menyiapkan query
7. mengeksekusi query yang diberikan kemudian
ditamung dalam obyek ResultSet.
8. selama membaca hasil query, range memanggil
method setJumlah untuk mengeset jumlah isi
data
9. mengambil jumlah yang telah diset
10. jika nilai jumlah sama dengan 0 mengembalikan
status true.
11. jika tidak, mengembalikan status false.
prosesInsertRange(Ra Method ini digunakan
1. membaca input parameter range
ngeHarga range)
untuk menyimpan
2. membuat obyek koneksi bertipe koneksi.
nilai batas range harga
3. Memanggil storage procedure spUpdateRangeH
kelompok ke dalam
4. Mengambil nilai batas harga bawah1 dari obyek
tabelKategoriNilai
dengan menggunakan
range
5. Mengambil nilai batas harga atas1 dari obyek
storage procedure
range
6. Mengambil nilai batas harga bawah2 dari obyek
range
7. Mengambil nilai batas harga atas2 dari obyek
range
8. Mengambil nilai batas harga bawah3 dari obyek
range
9. Mengambil nilai batas harga atas3 dari obyek
111
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
range
10. Mengambil nilai batas harga bawah4 dari obyek
range
11. Mengambil nilai batas harga atas4 dari obyek
range
12. Mengambil nilai batas harga bawah5 dari obyek
range
13. Mengambil nilai batas harga atas5 dari obyek
range
14. Meneksekusi query
prosesUpdateRange(
Method ini digunakan
1. membaca input parameter range
RangeHarga range)
untuk mengupdate
2. membuat obyek koneksi bertipe koneksi.
nilai batas range harga
3. Memanggil storage procedure
kelompok ke dalam
tabelKategoriNilai
spSimpanRangeHarga
4. Mengambil nilai batas harga bawah1 dari obyek
dengan menggunakan
storage procedure
range
5. Mengambil nilai batas harga atas1 dari obyek
range
6. Mengambil nilai batas harga bawah2 dari obyek
range
7. Mengambil nilai batas harga atas2 dari obyek
range
8. Mengambil nilai batas harga bawah3 dari obyek
range
9. Mengambil nilai batas harga atas3 dari obyek
range
10. Mengambil nilai batas harga bawah4 dari obyek
range
11. Mengambil nilai batas harga atas4 dari obyek
range
12. Mengambil nilai batas harga bawah5 dari obyek
112
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
range
13. Mengambil nilai batas harga atas5 dari obyek
rang
14. Meneksekusi query
tampilkanRangeNilai
Method ini digunakan
1. Membuat obyek conn bertipe koneks
(String kategori)
untuk menampilkan
2. Membuat obyek rs bertipe ResultSet
nilai batas atas dan
3. Membuka koneksi
batas bawah pada
4. Membuat query “select batas_bwh, batas_atas
setiap kategori
from kategori_nilai where kode_range like '" +
keompok dari tabel
kategori + "'"
kategoriNilai.
5. Mengeksekusi query
6. Mengembalikan hasil rs
deleteIsiData()
Method ini digunakan
1. Membuat obyek conn bertipe koneks
untuk menghapus isi
2. Memanggil Storage procedure spdeleteKategori
tabel kategori nilai
3. Mengeksekusi query
tampilJumlahCluster(
Method ini digunakan
1. Membuat obyek conn bertipe koneks
)
untuk menampilkan
2. Membuat obyek rs bertipe ResultSet
jumlah cluster yang
3. Membuka koneksi
dihasilkan dari proses
4. Membuat query “SELECT
divisive
Count(datacluster.cluster) FROM datacluster"
5. Mengeksekusi query
6. Mengembalikan hasil rs
SimpanCluster(Array
Method ini digunakan
1. Baca parameter inputan list, Iter, Data, sse
List, int, Double,
untuk mentimpan
2. Membuat obyek bertipe koneksi
double)
hasil cluster ke dalam
3. Membuat obyek sql bertipe srting,
database
4. Membuat obyek callst bertipe CallableStatement,
set dengan nilai sql
5. Set parameter inputan dengan obyek iterasi
6. Mengeksekusi sql
7. Memanggil method SimpanSubCluster (list, Iter,
113
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Data, sse)
8. Memanggil method tutupKoneksi
SimpanSubCluster
Method ini digunakan
1. Membaca parameter inputan list, Iter, Data, sse
(ArrayList, int,
untuk menyimpan
2. Membuat obyek koneksi beripe koneksi
Double, double)
semua anggota cluster
3. Untuk i=0, selama I kurang dari panjang list
dalam tabel
4. Membuat obyek sql beripe string
sub_datacluster.
5. Membuat obyek callst bertipe CallableStatement
6. Set callst 1 dengan mengambil label pada obyek
list
7. Set callst 2 dengan nilai obyek Data
8. Set callst 3 dengan nilai obyek iter
9. Set callst 4 dengan nilai obyek sse
10. Mengeksekusi query
SpDelete()
Method ini digunakan
1. Membuat obyek koneksi bertipe koneksi
untuk menghapus data
2. Memanggil SP spdelete
pada tabel dataCluster
3. Mengeksekusi query
dan sub_dataCluster.
4.
Rincian algoritma pada setiap method pada kelas Halaman Utama
Nama Method
Fungsi
Algoritma
lihatRangeHarga()
Method ini digunakan
1. memanggil method tampilkanRangeNilai untuk
untuk mengecek isi
mengambil nilai-nilai dari kategori kelompok 1
nilai reange
2. tampung hasil dalam rs
kolompok-kelompok
3. selama membaca isi rs, set bawah1filed dan
harga tabel
kategoriNilai,
atas1filed dengan nilai rs.
4. memanggil method tampilkanRangeNilai untuk
kemudian ditampilkan
kedalam sistem
mengambil nilai-nilai dari kategori kelompok 2
5. tampung hasil dalam rs
6. selama membaca isi rs, set bawah2filed dan
atas2filed dengan nilai rs.
7. memanggil method tampilkanRangeNilai untuk
114
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
mengambil nilai-nilai dari kategori kelompok 3.
8. tampung hasil dalam rs
9. selama membaca isi rs, set bawah3filed dan
atas3filed dengan nilai rs.
10. memanggil method tampilkanRangeNilai untuk
mengambil nilai-nilai dari kategori kelompok 4
11. tampung hasil dalam rs
12. selama membaca isi rs, set bawah4filed dan
atas4filed dengan nilai rs.
13. memanggil method tampilkanRangeNilai untuk
mengambil nilai-nilai dari kategori kelompok 5
14. tampung hasil dalam rs
15. Selama membaca isi rs, set bawah5filed dan
atas5filed dengan nilai rs.
prosesclustering()
Method ini digunakan
1. Cek apakah text field JumlahCluster kosong, jika
untuk memulai proses
ya, cetak “Jumlah Cluster tidak boleh kosong”.
clustering
Jika tidak, lakukan langkah 2.
2. Cek apakah text field JumlahCluster berisi
numeric positif. Jika ya, lakukan langkah 3
3. Membuat Obyek decp bertipe int.
4. Membuat obyek jml bertipe int dan mengisinya
dengan nilai JumlahCluster field.
5. Membuat obyek bernama graph di kelas graph.
6. Memanggil method input data ke dalam tabel
dataKelompokHargaTable
7. Memanggil method SetCluster dengan imputan
jml.
8. memanggil method Clustering.
9. memanggil method tampilCluster
10. memanggil method tampilLabel
11. memanggil method tampilJml
115
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12. memanggil method tampilSSE
13. memanggil method pop_tree.
tampilCluster()
Method ini digunakan
1. nama password dengan isi "1234"
untuk menampilkan
2. Buat obyek tipe ArrayList bernama
isi tabel sub_cluster
menggunakan SP
columnNames
3. Buat obyek tipe ArrayList bernama data
4. Buat obyek bertipe String dengan nama sql isi
"SELECT anggota, bobot, cluster, sse FROM
sub_datacluster"
5. Buka koneksi
6. Mengeksekusi obyek query sql
7. Tampung hasil di obyek ResultSet
8. Buat obyek ResultSetMetaData bernama mb
dengan isi rs.getMetaData()
9. Set md.getColumnCount di obyek column
10. Tampung nama colom pada obyek
columnNames
11. Tampung isi baris dalam obyek data
12. Buat obyek tipe Vector dengan nama
columnNamesVector
13. Buat obyek tipe Vector dengan nama dataVector
14. Masukan isi baris columnNameske obyek
dataVector5
15. Masukan isi baris subVector ke obyek
columnNamesVector
16. Buat obyek DefaultTableModel bernama
tabelmodel1 berisi dataVector dan
columnNamesVector
17. Set model dataClusterdengan tabelmodel1
TampilLabel()
Method ini digunakan
1. Buat obyek tipe ArrayList bernama
116
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
untuk menampilkan
columnNames
cluster dan anggola
2. Buat obyek tipe ArrayList bernama data
dari cluster itu sendiri
3. Buat obyek bertipe String dengan nama sql isi "
dari tabel
SELECT sub_datacluster.cluster,
sub_dataClusterr.
sub_datacluster.anggota FROM sub_datacluster"
4. Buka koneksi
5. Mengeksekusi obyek query sql
6. Tampung hasil di obyek ResultSet
7. Buat obyek ResultSetMetaData bernama mb
dengan isi rs.getMetaData()
8. Set md.getColumnCount di obyek column
9. Tampung nama colom pada obyek
columnNames
10. Tampung isi baris dalam obyek data
11. Buat obyek tipe Vector dengan nama
columnNamesVector
12. Buat obyek tipe Vector dengan nama dataVector
13. Masukan isi baris columnNameske obyek
dataVector5
14. Masukan isi baris subVector ke obyek
columnNamesVector
15. Buat obyek DefaultTableModel bernama
tabelmodel1 berisi dataVector dan
columnNamesVector
16. Set model DataLabel tabelmodel1
TampilJML()
Method ini digunakan
1. Buat obyek tipe ArrayList bernama
untuk menampilkan
columnNames
jumlah dari angota
2. Buat obyek tipe ArrayList bernama data
yang dimiliki cluster
3. Buat obyek bertipe String dengan nama sql isi "
masing-masing cluster
select `sub_datacluster`.`cluster` AS `Cls`, count
117
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tersebut
(`sub_datacluster` .`anggota`) AS `Jml` from
`sub_datacluster` group by
`sub_datacluster`.`cluster` ORDER BY
"sub_datacluster.id ASC"
4. Buka koneksi
5. Mengeksekusi obyek query sql
6. Tampung hasil di obyek ResultSet
7. Buat obyek ResultSetMetaData bernama mb
dengan isi rs.getMetaData()
8. Set md.getColumnCount di obyek column
9. Tampung nama colom pada obyek
columnNames
10. Tampung isi baris dalam obyek data
11. Buat obyek tipe Vector dengan nama
columnNamesVector
12. Buat obyek tipe Vector dengan nama dataVector
13. Masukan isi baris columnNameske obyek
dataVector5
14. Masukan isi baris subVector ke obyek
columnNamesVector
15. Buat obyek DefaultTableModel bernama
tabelmodel1 berisi dataVector dan
columnNamesVector
16. Set model DataJml tabelmodel1
TampilSSE()
Method ini digunakan
1. Buat obyek tipe ArrayList bernama
untuk menampilkan
jumlah total SSE
columnNames
2. Buat obyek tipe ArrayList bernama data
3. Buat obyek bertipe String dengan nama sql isi "
SELECT SUM(mysum) FROM (SELECT
DISTINCT sub_datacluster.sse AS mysum
FROM sub_datacluster GROUP BY
118
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
sub_datacluster.cluster) AS bb;"
4. Buka koneksi
5. Mengeksekusi query ditampung dalam ResultSet
rs
6. Baca rs
7. Set TotalSSETextField1
rs.getString("SUM(mysum)")
pilihFile()
Method ini digunakan
1. Menampilkan JFileChooser open file
untuk menampilkan
2. Mendapatkan nilai atribut nama_file yang dipilih
JFileChooser untuk
3. Deklarasi array bertipe String bernama
memilih file excel
potong_nama_file untuk memberi nama file
bertipe .csv kemudian
dengan pemisah “\\”
membaca file lalu
4. Jika potong_nama_file.equals (“csv”)
menampilkan ke
5. Membuat vector baru bernama columnName.
dalam tabel data.
6. Membuat vector baru bernama dataKeseluruhan.
7. Baca file inputan
8. Tampung nama kolom da isi semua baris dalam
columnName dan dataKeseluruhan obyek
9. Membuat obyek baru dob bertipe DataObyek
10. Ambil data pada colom ke 1, 2, 5, 6, 10, 19, dan
20 tampung dalam dob
11. Ambil nilai- nilai batas bawah dan batas bawah
pada setiap kelompok tampung dalam obyek a 1
s.5 dan b 1 s.d 5
12. Set semua kelompok harga pada DataObyek
13. Ambil semua nilai dalam obyek data, tampung
dalam obyek InputData
14. Ambil nama colom ke ke 1, 2, 5, 6, 10, 19, dan
20 dari file inputan dan tampung semua di
coluomDataFix
15. Membuat DefaultTableModel bernama model
119
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dengan isi baris berisi InputData dan kolom
berisi columnName.
16. Atur tabel dataPreprocessTable menjadi seperti
model.
17. Set
jumlahDataSeleksi =
tablemodel.getRowCount(
18. Set
jumlahDataSeleksiTextField.setText(" " +
jumlahDataSeleksi);
submitData()
Method ini digunakan
1. Untuk i=0, selama I kurang dari panjang data
untuk memulah tahap
preprocessing
Objekdat
2. Buat obyek st bertipe StringTokenizer berisi
mengolah data agar
siap untu k di mining.
nama barang
3. Buat obyek baru a bertipe ArrayList
4. Tampung st ke dalam a
5. Ambil nilai kelompok harga
6. Jika kelompok harga sama dengan 1
7. Tampung semua nama barang pada a yang
memiliki kelompok harga sama dengan 1 di
tipekelompok1
8. Jika kelompok harga sama dengan 2
9. Tampung semua nama barang pada a yang
memiliki kelompok harga sama dengan 2 di
tipekelompok2
10. Jika kelompok harga sama dengan 3
11. Tampung semua nama barang pada a yang
memiliki kelompok harga sama dengan 3 di
tipekelompok1
12. Jika kelompok harga sama dengan 4
13. Tampung semua nama barang pada a yang
memiliki kelompok harga sama dengan 4 di
120
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tipekelompok4
14. Jika kelompok harga sama dengan 5
15. Tampung semua nama barang pada a yang
memiliki kelompok harga sama dengan 5 di
tipekelompok5
16. Buat obyek PenggambunganTipeKelompok1
bertipe HashSet
17. Tampung tipekelompok1 kedalam
PenggambunganTipeKelompok1
18. Bersihkan tipekelompok1
19. Tampung PenggambunganTipeKelompok1 ke
tipekelompok1
20. Buat obyek PenggambunganTipeKelompok2
bertipe HashSet
21. Tampung tipekelompok2 kedalam
PenggambunganTipeKelompok2
22. Bersihkan tipekelompok2
23. Tampung PenggambunganTipeKelompok3 ke
tipekelompok2
24. Buat obyek PenggambunganTipeKelompok3
bertipe HashSet
25. Tampung tipekelompok3 kedalam
PenggambunganTipeKelompok3
26. Bersihkan tipekelompok3
27. Tampung PenggambunganTipeKelompok4 ke
tipekelompok4
28. Buat obyek PenggambunganTipeKelompok4
bertipe HashSet
29. Tampung tipekelompok4 kedalam
PenggambunganTipeKelompok4
30. Bersihkan tipekelompok4
121
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31. Tampung PenggambunganTipeKelompok1 ke
tipekelompok4
32. Buat obyek PenggambunganTipeKelompok5
bertipe HashSet
33. Tampung tipekelompok5 kedalam
PenggambunganTipeKelompok5
34. Bersihkan tipekelompok5
35. Tampung PenggambunganTipeKelompok5 ke
tipekelompok5
36. Untuk setiap tipe kelompok lakukan langkah
dibawah ini
a. Buat obyek baru z bertipe array
b. Untuk k=0, selama k kurang dari panjang data
tipekelompok*
c. Set buat objek baru jumlahQuantity=0
d. Untuk j=0, selama j kurang dari panjang data
Objekdat
e. Buat obyek st bertipe StringTokenizer berisi
nama barang
f. Buat obyek baru a bertipe ArrayList
g. Tampung st ke dalam a
h. Tampung a.get(0).toString() kedalam tipe
yang bertipe string
i. Jika tipekelompok* di indeks k sama dengan
tipe
j. Buat obyek baru quatity berisi setiap quantity
pada indeks j dari data Objekdat
k. Buat obyek datatampung berisi quatity
l. Jika z[0][k] sama dengan 0
m. Set z[0][k] dengan datatampung
n. Jika tidak, set jumlahQuantity= z[0][k]
122
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
o. jumlahQuantity= jumlahQuantity+ z[0][k]
p. z[0][k]= jumlahQuantity
q. buat objek baru DataObyek bernama dob
yang berisi tipekelompok 1, 1, dan
jumlahQuantity
r. inputkan obyek dob ke obyek
hasilPengelompokan
37. Untuk i=0, selama I kurang dari panjang data
hasilPengelompokan
38. Buat obyek baru sementara1 bertipe vextor
39. Ambil nama barang pada indeks I di
hasilPengelompokan tampung ke dalam
sementara1
40. Ambil kelompok harga pada indeks I di
hasilPengelompokan tampung ke dalam
sementara1
41. Ambil quantity pada indeks I di
hasilPengelompokan tampung ke dalam
sementara1
42. Masukan nilai sementara1 ke obyek FixDataPre
43. Buat obyek vector namakolom
44. Masukan isi nama kolom dengan Nama Barang,
Kelompok Harga, Quantity
45. Buat obyek DefaultTableModel bernama
tabelmodel1 berisi FixDataPre dan namakolom
46. Set model dataKelompokHargaTable dengan
tabelmodel1
47. Set jumlahDataDivisiveTextField dengan
dataKelompokHargaTable.getRowCount()
cekInputRangeHarga(
Method ini digunakan
)
untuk mengecek input
1. Buat obyek RangeHarga dengan nama
nilaiRange
123
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
nilai harga kelompok.
2. Buat obyek controlRangeHarga dengan nama
crlharga
3. Membuat obyek bertipe boolean dengan nama
cekData berisi false;
4. Cek jika semua feld kosong
5. Tampilkan pesan error
6. Cek jika salah satu field ada yang kosong
tampilkan pesan error
7. Cek jika nilai field ada yang mengandung sifat
gabungan
8. Tampilakn pesan error
9. Cek jika semua field valid. Ambil setiap nilai
tampung semua nilai data dalam obyek
nilaiRange
10. Set cekData dengan cekIsiData
11. Cek status jika cekData sama dengan false, maka
lakukan langkah 12,
12. Panggil method prosesUpdateRange
13. Jika true =, panggil method prosesInsertRange
SimpanHasilCluster()
Method ini digunakan
1. Menampilkan filechooser untuk lokasi
penyimpanan file hasil clustering.
untuk menyimpan
hasil clustering
2. Mengatur file filter agar hanya bisa disimpan
dalam tipe file doc, dan xls.
kedalam file
3. Deklarasi variabel bernama file_output_stream
bertipe FileOutputStream.
4. Deklarasi variabel bernama returnValue bertipe
int dengan inisialisasi fileChooser menampilkan
kotak dialog simpan.
5. Cek apakah returnValue ==
JFileChooser.APPROVE_OPTI ON. Jika ya
lakukan langkah 6 – 14.
124
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6. Membuat variabel bernama filename bertipe
String berisi path data yang di pilih.
7. Membuat variabel ext berisi filter terhadap tipe
file.
8. Cek apakah ext berisi Microsoft
Excel (*.xls). jika ya lakukan langkah 9 - 12.
9. Membuat variabel bernama f bertipe File.
10. Inisialisasi f sama dengan file baru dengan nama
file diikuti .xls
11. Menampilkan output f.
12. Mengirimkan isi data tabel hasil clsurteing
13. Cek apakah ext berisi Microsoft Word (*.doc)
jika ya lakukan seperti langkah 9-12. Jika tidak
lakukan langkah 14.
14. Cek apakah ext bertipe .txt, jika ya lakukan
seperti langkah 9-12.
15. Pesan “Hasil Pengklasteran Telah Berhasil
Disimpan”
LAMPIRAN 7
PERCOBAAN PERHITUNGAN SUM OF SQUARE ERROR
Tabel perbobaan
Percobaan
Cluster
1
2
3
4
5
2
3
4
5
6
SSE
P1
P2
P3
328195,65 1255753,346 821891,83
62465,727 67127,071
58150,59
47805,751 48929,494 42545,224
40875,609 46019,204 40004,988
38820,685 43346,701 36243,742
125
P4
326564,11
58018,005
41290,008
38748,327
36407,959
P5
326564,11
67127,071
48929,494
46044,137
43371,634
AVG
611793,8
62577,69
45899,99
42338,45
39638,14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
7
7
8
38255,563
38092,636
42899,059
42735,546
35907,797 36078,589 42923,992
39213
35562,333 35733,125 42760,479 38976,82
Keterangan:
P1: Perbobaan 1 adalah data preprocessing yang normal sesuai dengan haris
output dari tahapan preprocessing.
P2: Percobaan 2 adalah data preprocessing yang di urutkan nama barangnya
secara ascending.
P3: Percobaan 3 adalah data preprocessing yang di urutkan nama barangnya
secara descending.
P4: Percobaan 4 adalah data preprocessing yang di urutkan berdasarkan nama
barangnya dan total quantity secara descending.
P6: Percobaan 5 adalah data preprocessing yang di urutkan berdasarkan
kelompoik harga secara descending.
Percobaan ini bertujian untuk mengetahui pakah sistem menghasilkan nilai
SSE yang tepat jika sumber datanya di ubah strukturnya. Pada setiap percobaan
jumlah anggota yang dimiliki masing-masing cluster sama jumlahnya.
LAMPIRAN 8
LISTING PROGRAM
Listring Program – controlRangeHarga.java
package Controller;
import Entity.RangeHarga;
import Entity.KoneksiDB;
import static Entity.KoneksiDB.getConnection;
import java.sql.CallableStatement;
import java.sql.Connection;
126
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JTable;
/**
*
* @author Adiman
*/
public class controlRangeHarga {
public boolean cekIsiData() throws SQLException {
KoneksiDB conn = new KoneksiDB();
int jumlah = 0;
conn.bukaKoneksi();
RangeHarga range = new RangeHarga();
String sql = "select count(*) as jumlahData from kategori_nilai";
PreparedStatement statement = (PreparedStatement) conn.bukaKoneksi().prepareStatement(sql);
ResultSet rs = (ResultSet) statement.executeQuery();
while (rs.next()) {
range.setJumlahData(Integer.parseInt(rs.getString("jumlahData")));
}
jumlah = range.getJumlahData();
if (jumlah == 0) {
return true;
} else {
return false;
}
}
public void prosesInsertRange(RangeHarga range) throws SQLException {
KoneksiDB konek = new KoneksiDB();
String sql = "{call spSimpanRangeHarga(?,?,?,?,?,?,?,?,?,?)}";
java.sql.CallableStatement callst = konek.bukaKoneksi().prepareCall(sql);
callst.setDouble(1, range.getHargaBawah1());
127
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
callst.setDouble(2, range.getHargaAtas1());
callst.setDouble(3, range.getHargaBawah2());
callst.setDouble(4, range.getHargaAtas2());
callst.setDouble(5, range.getHargaBawah3());
callst.setDouble(6, range.getHargaAtas3());
callst.setDouble(7, range.getHargaBawah4());
callst.setDouble(8, range.getHargaAtas4());
callst.setDouble(9, range.getHargaBawah5());
callst.setDouble(10, range.getHargaAtas5());
callst.executeUpdate();
}
public void prosesUpdateRange(RangeHarga range) throws SQLException {
KoneksiDB konek = new KoneksiDB();
String sql = "{call spUpdateRangeH(?,?,?,?,?,?,?,?,?,?)}";
java.sql.CallableStatement callst = konek.bukaKoneksi().prepareCall(sql);
callst.setDouble(1, range.getHargaBawah1());
callst.setDouble(2, range.getHargaAtas1());
callst.setDouble(3, range.getHargaBawah2());
callst.setDouble(4, range.getHargaAtas2());
callst.setDouble(5, range.getHargaBawah3());
callst.setDouble(6, range.getHargaAtas3());
callst.setDouble(7, range.getHargaBawah4());
callst.setDouble(8, range.getHargaAtas4());
callst.setDouble(9, range.getHargaBawah5());
callst.setDouble(10, range.getHargaAtas5());
callst.executeUpdate();
}
public static ResultSet tampilkanRangeNilai(String kategori) throws SQLException {
KoneksiDB conn = new KoneksiDB();
ResultSet rs;
conn.bukaKoneksi();
String sql = "select batas_bwh, batas_atas from kategori_nilai where kode_range like '" + kategori
128
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
+ "'";
rs = (ResultSet) conn.lihatData(sql);
return rs;
}
public void deleteIsiData() throws SQLException {
KoneksiDB konek = new KoneksiDB();
String sql = "{call spdeleteKategori}";
CallableStatement callst = konek.bukaKoneksi().prepareCall(sql);
callst.executeUpdate();
}
public static ResultSet tampilJumlahCluster() throws SQLException {
KoneksiDB conn = new KoneksiDB();
ResultSet rs;
conn.bukaKoneksi();
String sql = "SELECT Count(datacluster.cluster) FROM datacluster";
rs = (ResultSet) conn.lihatData(sql);
return rs;
}
public void SimpanCluster(ArrayList<String> list, int Iter, Double Data, double sse) throws
SQLException {
Connection con = getConnection();
CallableStatement callst = null;
String sql = "{call sapsimpan_test(?)}";
try {
callst = con.prepareCall(sql);
callst.setString(1, "Cluster " + Iter);
callst.executeUpdate();
} catch (Exception e) {
System.err.println("SQLException: " + e.getMessage());
} finally {
if (callst != null) {
129
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
try {
callst.close();
} catch (SQLException e) {
System.err.println("SQLException: " + e.getMessage());
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
System.err.println("SQLException: " + e.getMessage());
}
}
}
SimpanSubCluster(list, Iter, Data, sse);
}
public void SimpanSubCluster(ArrayList<String> list, int Iter, Double Data, double sse) throws
SQLException {
Connection con = getConnection();
CallableStatement callst = null;
String sql = "{call sapsimpan_sub(?,?,?,?)}";
try {
callst = con.prepareCall(sql);
for (int i = 0; i < list.size(); i++) {
callst.setString(1, list.get(i));
callst.setDouble(2, Data);
callst.setString(3, "Cluster " + Iter);
callst.setDouble(4, sse);
callst.executeUpdate();
}
} catch (Exception e) {
System.err.println("SQLException: " + e.getMessage());
}
130
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
public void SimpanTree(Double Data, ArrayList<String> list, int Jml, String Label, String par,
String pos) throws SQLException {
Connection con = getConnection();
CallableStatement callst = null;
String sql = "{call SimpanTree(?,?,?,?,?,?)}";
try {
callst = con.prepareCall(sql);
callst.setDouble(1, Data);
callst.setString(2, list.toString());
callst.setInt(3, Jml);
callst.setString(4, Label);
callst.setString(5, par);
callst.setString(6, pos);
callst.executeUpdate();
//}
} catch (Exception e) {
System.err.println("SQLException: " + e.getMessage());
}
}
public void simpanPre(JTable tabel) throws SQLException {
Connection con = getConnection();
CallableStatement callst = null;
String sql = "{call sppreproses(?,?,?)}";
String nb[] = new String[tabel.getRowCount()];
String klp[] = new String[tabel.getRowCount()];
String qty[] = new String[tabel.getRowCount()];
for (int i = 0; i < tabel.getRowCount(); i++) {
nb[i] = tabel.getValueAt(i, 0).toString();
klp[i] = tabel.getValueAt(i, 1).toString();
131
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
qty[i] = tabel.getValueAt(i, 2).toString();
try {
callst = con.prepareCall(sql);
callst.setString(1, nb[i]);
callst.setString(2, klp[i]);
callst.setString(3, qty[i]);
callst.executeUpdate();
} catch (Exception e) {
System.err.println("SQLException: " + e.getMessage());
}
}
}
public void SpDelete() throws SQLException {
KoneksiDB konek = new KoneksiDB();
String sql = "{call spdelete}";
CallableStatement callst = konek.bukaKoneksi().prepareCall(sql);
callst.executeUpdate();
konek.tutupKoneksi();
}
public void deletePreproses() throws SQLException {
KoneksiDB konek = new KoneksiDB();
String sql = "{call deletepreproses}";
CallableStatement callst = konek.bukaKoneksi().prepareCall(sql);
callst.executeUpdate();
konek.tutupKoneksi();
}
}
Listing Program – DataObyek.java
package Entity;
/**
*
132
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
* @author Adiman
*/
public class DataObyek {
private String KodeBarang;
private String hargaJual;
private Double quantity;
private Double jumlah;
private String total;
private String NamaBarang;
private String KelompokHarga;
private String area;
public DataObyek() {
}
public DataObyek(String NamaBarang,String KelompokHarga, Double jumlah) {
this.NamaBarang = NamaBarang;
this.KelompokHarga = KelompokHarga;
this.quantity = jumlah;
}
public String getKodeBarang() {
return KodeBarang;
}
public void setKodeBarang(String KodeBarang) {
this.KodeBarang = KodeBarang;
}
public String getHargaJual() {
return hargaJual;
}
public void setHargaJual(String hargaJual) {
this.hargaJual = hargaJual;
}
public Double getQuantity() {
return quantity;
}
public void setQuantity(Double quantity) {
this.quantity = quantity;
}
133
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
public Double getJumlah() {
return jumlah;
}
public void setJumlah(Double jumlah) {
this.jumlah = jumlah;
}
public String getTotal() {
return total;
}
public void setTotal(String total) {
this.total = total;
}
public String getNamaBarang() {
return NamaBarang;
}
public void setNamaBarang(String NamaBarang) {
this.NamaBarang = NamaBarang;
}
public String getKelompokHarga() {
return KelompokHarga;
}
public void setKelompokHarga(String KelompokHarga) {
this.KelompokHarga = KelompokHarga;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
Listing Program-Graph.java
package Entity;
import Controller.controlRangeHarga;
134
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Adiman
*/
public class Graph {
public Verteks verteksList[];
public Verteks LabelMatriks[];
public Verteks LabelSplinter[];
public Verteks LabelMatriksAkhir[];
public Verteks LabelSplinterAkhir[];
public double adjMat[][];
public double DataMatriks[][];
public double DataSplinter[][];
public double DataMatriksAkhir[][];
public double DataSplinterAkhir[][];
public double inf = -1.0;
public int jumVertex = 0;
public int JmlCluster;
public int iter = 1;
public int cls = 1;
public int decp = 3;
ArrayList<String> MatrixList = new ArrayList<>();
ArrayList<String> SplinterList = new ArrayList<>();
ArrayList<String> MatrixLisAkhir = new ArrayList<>();
ArrayList<String> SplinterListAkhir = new ArrayList<>();
Map<String, ArrayList<String>> mapClsuter = new HashMap();
double[] mean;
double[] std;
controlRangeHarga control = new controlRangeHarga();
public Graph(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++) {
135
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (i == j) {
adjMat[i][j] = 0.0;
} else {
adjMat[i][j] = inf;
}
}
}
}
public Verteks[] getLabelMatriksAkhir() {
return LabelMatriksAkhir;
}
public void setLabelMatriksAkhir(Verteks[] LabelMatriksAkhir) {
this.LabelMatriksAkhir = LabelMatriksAkhir;
}
public Verteks[] getLabelSplinterAkhir() {
return LabelSplinterAkhir;
}
public void setLabelSplinterAkhir(Verteks[] LabelSplinterAkhir) {
this.LabelSplinterAkhir = LabelSplinterAkhir;
}
public double[][] getDataMatriksAkhir() {
return DataMatriksAkhir;
}
public void setDataMatriksAkhir(double[][] DataMatriksAkhir) {
this.DataMatriksAkhir = DataMatriksAkhir;
}
public double[][] getDataSplinterAkhir() {
return DataSplinterAkhir;
}
public void setDataSplinterAkhir(double[][] DataSplinterAkhir) {
this.DataSplinterAkhir = DataSplinterAkhir;
}
public int getJmlCluster() {
return JmlCluster;
}
public void setJmlCluster(int JmlCluster) {
136
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
this.JmlCluster = JmlCluster;
}
public double[][] getDataSplinter() {
return DataSplinter;
}
public void SetDataSplinter(double[][] adSplinter) {
this.DataSplinter = adSplinter;
}
public Verteks[] getLabelSplinter() {
return LabelSplinter;
}
public void setLabelSplinter(Verteks[] verteksListSplinter) {
this.LabelSplinter = verteksListSplinter;
}
public Verteks[] getVerteksList() {
return verteksList;
}
public void setVerteksList(Verteks[] verteksList) {
this.verteksList = verteksList;
}
public double[][] getadjMat() {
return adjMat;
}
public void setadjMat(double[][] data) {
this.adjMat = data;
}
public void addVerteks(String label, List<Double> nilai) {
verteksList[jumVertex++] = new Verteks(label, nilai);
}
public void addEdge(int x, int y, Double nilai) {
adjMat[x][y] = adjMat[y][x] = nilai;
}
public double[][] getDataMatriks() {
137
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
return DataMatriks;
}
public void setDataMatriks(double[][] DataMatriks) {
this.DataMatriks = DataMatriks;
}
public Verteks[] getLabelMatriks() {
return LabelMatriks;
}
public void setLabelMatriks(Verteks[] LabelMatriks) {
this.LabelMatriks = LabelMatriks;
}
public void inputData(JTable jTableData) {
String label = "P";
int p = 1;
for (int i = 0; i < jTableData.getRowCount(); i++) {
int o = 0;
List<Double> listNilai = new ArrayList<Double>();
for (int j = 1; j < jTableData.getColumnCount(); j++) {
label = String.valueOf(jTableData.getValueAt(i, 0));
listNilai.add(Double.parseDouble(jTableData.getValueAt(i, j).toString()));
}
p++;
addVerteks(label, listNilai);
MatrixList.add(label);
}
for (int i = 0; i < jTableData.getRowCount(); i++) {
for (int j = i + 1; j < jTableData.getRowCount(); j++) {
if (i != j) {
addEdge(i, j, cariJarakEcludian(i, j));
}
}
}
}
public void tampilJarakEuclidean() {
System.out.println("");
System.out.println("-------------------------------------Jarak Ecludian------------------------------------");
System.out.print("\t");
for (int i = 0; i < verteksList.length; i++) {
System.out.print("" + verteksList[i].getLabel() + "\t");
}
138
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println("\t");
for (int i = 0; i < adjMat.length; i++) {
System.out.print("" + verteksList[i].getLabel() + "\t");
for (int j = 0; j < verteksList.length; j++) {
System.out.print("" + adjMat[i][j] + "\t");
}
System.out.println("\t");
}
System.out.println("\t");
System.out.println("-------------------------------------Jarak Ecludian------------------------------------");
}
public void LostClustering() throws SQLException {
double Bobot = BobotMatriks(adjMat, SplinterListAkhir);
control.SimpanTree(Bobot, MatrixList, MatrixList.size(), "root", "null", "null");
System.out.println("bobot" + Bobot);
MatrixList.clear();
mapClsuter.clear();
control.SpDelete();
int iterasi = 1;
System.out.println("----------------------------------------Iterasi " + iterasi + "--------------------------------------");
System.out.println("Clustering");
double[][] DataCluster = getadjMat();
Verteks[] LabelCluster = getVerteksList();
double rerataMatrix[];
double rerataSplinter[];
double HasilSelisih[];
int splinter = 0;
rerataMatrix = Averagematrix(DataCluster, LabelCluster, MatrixList);
splinter = CariObjekTerbesar(rerataMatrix, LabelCluster);
for (int i = 0;
i < LabelCluster.length;
i++) {
if (i != splinter) {
MatrixList.add(LabelCluster[i].getLabel());
} else {
SplinterList.add(LabelCluster[i].getLabel());
}
}
UpdateMatriks(MatrixList, SplinterList, DataCluster, LabelCluster);
double[][] DataClusterUpdate = getDataMatriks();
139
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Verteks[] LabelClusterUpdate = getLabelMatriks();
double[][] DataSplinterUpdate = getDataSplinter();
rerataMatrix = Averagematrix(DataClusterUpdate, LabelClusterUpdate, MatrixList);
rerataSplinter = AverageSplinter(DataSplinterUpdate, LabelClusterUpdate, SplinterList);
HasilSelisih = HitungSelisih(rerataMatrix, rerataSplinter, LabelClusterUpdate);
ArrayList<Integer> indexSplinter = AmbilIndexSelisih(HasilSelisih,
LabelClusterUpdate);
int posCount = 0;
for (double j : HasilSelisih) {
if (j > 0) {
posCount++;
}
}
if (posCount
== 0) {
System.out.println("STOP, NILAI SPLINTER GRUP NEGATIF! Clustering");
} else {
System.out.println("LANJUT, NILAI SPLINTER GRUP POSITIF Clustering");
MatrixList.clear();
for (int i = 0; i < LabelClusterUpdate.length; i++) {
if (!indexSplinter.contains(i)) {
MatrixList.add(LabelClusterUpdate[i].getLabel());
} else {
SplinterList.add(LabelClusterUpdate[i].getLabel());
}
}
UpdateMatriks(MatrixList, SplinterList, DataCluster, LabelCluster);
UpdateMatriksAkhir(MatrixList, SplinterList, DataCluster, LabelCluster);
LostClustering2(iterasi + 1);
}
}
public void LostClustering2(int iterasi) throws SQLException {
System.out.println("----------------------------------------Iterasi " + iterasi + "--------------------------------------");
System.out.println("ClusterIterasi");
tampilAnggotaCluster();
double[][] DataCluster = getadjMat();
double[][] DataClusterUpdate = getDataMatriks();
double[][] DataSplinterUpdate = getDataSplinter();
Verteks[] LabelCluster = getVerteksList();
Verteks[] LabelClusterUpdate = getLabelMatriks();
double rerataMatrix[];
double rerataSplinter[];
double HasilSelisih[];
140
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
int splinter = 0;
rerataMatrix = Averagematrix(DataClusterUpdate, LabelClusterUpdate, MatrixList);
rerataSplinter = AverageSplinter(DataSplinterUpdate, LabelClusterUpdate, SplinterList);
HasilSelisih = HitungSelisih(rerataMatrix, rerataSplinter, LabelClusterUpdate);
ArrayList<Integer> indexSplinter = AmbilIndexSelisih(HasilSelisih,
LabelClusterUpdate);
int posCount = 0;
for (double j : HasilSelisih) {
if (j > 0) {
posCount++;
}
}
if (posCount == 0) {
System.out.println("STOP, NILAI SPLINTER GRUP NEGATIF! Mulai baru
pengelompokan");
double Bobot14 = BobotMatriks(DataMatriksAkhir, MatrixLisAkhir);
System.out.println("adsM" + Bobot14);
control.SimpanTree(Bobot14, MatrixLisAkhir, MatrixLisAkhir.size(), "node", "rootR",
"right");
double Bobot31 = BobotMatriks(DataSplinterAkhir, SplinterListAkhir);
System.out.println("adsS" + Bobot31);
control.SimpanTree(Bobot31, SplinterListAkhir, SplinterListAkhir.size(), "node",
"rootL", "left");
double Bobot = BobotMatriks(DataSplinterAkhir, SplinterListAkhir);
double HasilAkurasi = akurasi(DataSplinterAkhir);
ArrayList< String> tempC = new ArrayList();
tempC.addAll(SplinterListAkhir);
control.SimpanCluster(tempC, iter, Bobot, HasilAkurasi);
mapClsuter.put("Cluster " + iter, tempC);
iter++;
MatrixList.clear();
SplinterList.clear();
for (int i = 0; i < LabelClusterUpdate.length; i++) {
if (!indexSplinter.contains(i)) {
MatrixList.add(LabelClusterUpdate[i].getLabel());
} else {
SplinterList.add(LabelClusterUpdate[i].getLabel());
}
}
UpdateMatriks(MatrixList, SplinterList, DataCluster, LabelCluster);
UpdateMatriksAkhir(MatrixList, SplinterList, DataCluster, LabelCluster);
System.out.println("a");
tampilAnggotaCluster();
LostClustering3(iterasi + 1);
} else {
141
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println("LANJUT, NILAI SPLINTER GRUP POSITIF2 ClusterIterasi");
MatrixList.clear();
for (int i = 0; i < LabelClusterUpdate.length; i++) {
if (!indexSplinter.contains(i)) {
MatrixList.add(LabelClusterUpdate[i].getLabel());
} else {
SplinterList.add(LabelClusterUpdate[i].getLabel());
}
}
UpdateMatriks(MatrixList, SplinterList, DataCluster, LabelCluster);
UpdateMatriksAkhir(MatrixList, SplinterList, DataCluster, LabelCluster);
LostClustering2(iterasi + 1);
}
}
public void LostClustering3(int iterasi) throws SQLException {
System.out.println("----------------------------------------Iterasi " + iterasi + "--------------------------------------");
System.out.println("ClusterIterasi2");
tampilAnggotaCluster();
double[][] DataCluster = getadjMat();
double[][] DataSplinterUpdate = getDataSplinter();
double[][] DataClusterUpdate = getDataMatriks();
Verteks[] LabelCluster = getVerteksList();
Verteks[] LabelClusterUpdate = getLabelMatriks();
double rerataMatrix[];
double rerataSplinter[];
double HasilSelisih[];
int splinter = 0;
rerataMatrix = Averagematrix(DataClusterUpdate, LabelClusterUpdate, MatrixList);
rerataSplinter = AverageSplinter(DataSplinterUpdate, LabelClusterUpdate, SplinterList);
HasilSelisih = HitungSelisih(rerataMatrix, rerataSplinter, LabelClusterUpdate);
ArrayList<Integer> indexSplinter = AmbilIndexSelisih(HasilSelisih,
LabelClusterUpdate);
int posCount = 0;
for (double j : HasilSelisih) {
if (j > 0) {
posCount++;
}
}
if (posCount == 0) {
System.out.println("STOP, NILAI SPLINTER GRUP NEGATIF!2 ClusterIterasi2");
UpdateMatriks(MatrixList, SplinterList, DataCluster, LabelCluster);
UpdateMatriksAkhir(MatrixList, SplinterList, DataCluster, LabelCluster);
142
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
double Bobot14 = BobotMatriks(DataMatriksAkhir, MatrixLisAkhir);
control.SimpanTree(Bobot14, MatrixLisAkhir, MatrixLisAkhir.size(), "node", "right",
"right");
System.out.println("adsM" + Bobot14);
double Bobot31 = BobotMatriks(DataSplinterAkhir, SplinterListAkhir);
System.out.println("adsS" + Bobot31);
control.SimpanTree(Bobot31, SplinterListAkhir, SplinterListAkhir.size(), "node",
"right", "left");
double Bobot = BobotMatriks(DataMatriksAkhir, MatrixLisAkhir);
double HasilAkurasi = akurasi(DataMatriksAkhir);
double Bobot1 = BobotMatriks(DataSplinterAkhir, SplinterListAkhir);
double HasilAkurasi1 = akurasi(DataSplinterAkhir);
ArrayList<String> TempSplinterBaru = new ArrayList<>();
ArrayList<String> TempSplinter = new ArrayList<>();
TempSplinterBaru.addAll(MatrixLisAkhir);
TempSplinter.addAll(SplinterListAkhir);
mapClsuter.put("Cluster " + iter, TempSplinter);
control.SimpanCluster(TempSplinter, iter, Bobot1, HasilAkurasi1);
iter++;
mapClsuter.put("Cluster " + iter, TempSplinterBaru);
control.SimpanCluster(TempSplinterBaru, iter, Bobot, HasilAkurasi);
System.out.println(" b");
tampilAnggotaCluster();
//LostClustering2(iterasi + 1);
} else {
System.out.println("LANJUT, NILAI SPLINTER GRUP POSITIF1 ClusterIterasi2");
MatrixList.clear();
for (int i = 0; i < LabelClusterUpdate.length; i++) {
if (!indexSplinter.contains(i)) {
MatrixList.add(LabelClusterUpdate[i].getLabel());
} else {
SplinterList.add(LabelClusterUpdate[i].getLabel());
}
}
UpdateMatriks(MatrixList, SplinterList, DataCluster, LabelCluster);
UpdateMatriksAkhir(MatrixList, SplinterList, DataCluster, LabelCluster);
LostClustering2(iterasi + 1);
}
}
public void tampilAnggotaCluster() {
System.out.println("");
System.out.println("----------------------------------");
System.out.println("Update Anggota Clsuter "
143
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
+ "\nClsuter C :" + MatrixList
+ "\nClsuter N :" + SplinterList);
System.out.println("----------------------------------");
System.out.println("");
}
public void tampilMap() {
System.out.println("");
System.out.println("HASIL CLUSTERING");
Map<String, ArrayList<String>> treeMap = new TreeMap<String,
ArrayList<String>>(mapClsuter);
for (Map.Entry<String, ArrayList<String>> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
}
public void UpdateMatriks(ArrayList<String> MatrixUtama, ArrayList<String>
MatrixSplit, double[][] data, Verteks[] list) {
int m = 0;
int m1 = 0;
ArrayList<Integer> countMatrix = new ArrayList();
ArrayList<Integer> countSplit = new ArrayList();
Verteks[] LabelSpliter = new Verteks[MatrixSplit.size()];
Verteks[] LabelCluster = new Verteks[MatrixUtama.size()];
double[][] datamatriks = new double[MatrixUtama.size()][MatrixUtama.size()];
double[][] dataSplit = new double[MatrixUtama.size()][MatrixSplit.size()];
for (int i = 0; i < MatrixUtama.size(); i++) {
int count = Search(MatrixUtama.get(i));
countMatrix.add(count);
}
for (int i = 0; i < MatrixSplit.size(); i++) {
int count = Search(MatrixSplit.get(i));
countSplit.add(count);
}
m = 0;
m1 = 0;
for (int j = 0; j < list.length; j++) {
if (countMatrix.contains(j)) {
LabelCluster[m] = list[j];
m++;
}
if (countSplit.contains(j)) {
144
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LabelSpliter[m1] = list[j];
m1++;
}
}
m = 0;
m1 = 0;
for (int e = 0; e < data.length; e++) {
if (countMatrix.contains(e)) {
int n = 0;
int k = 0;
for (int j = 0; j < data.length; j++) {
if (countMatrix.contains(j)) {
datamatriks[m][n] = data[e][j];
n++;
}
if (countSplit.contains(j)) {
dataSplit[m1][k] = data[e][j];
k++;
}
}
m++;
m1++;
}
}
setDataMatriks(datamatriks);
setLabelMatriks(LabelCluster);
SetDataSplinter(dataSplit);
setLabelSplinter(LabelSpliter);
public void UpdateMatriksAkhir(ArrayList<String> MatrixUtama, ArrayList<String>
MatrixSplit, double[][] data, Verteks[] list) {
int m = 0;
int m1 = 0;
ArrayList<Integer> countMatrix = new ArrayList();
ArrayList<Integer> countSplit = new ArrayList();
Verteks[] LabelMatriks1 = new Verteks[MatrixUtama.size()];
Verteks[] LabelSplinter1 = new Verteks[MatrixSplit.size()];
double[][] DataMatriks1 = new double[MatrixUtama.size()][MatrixUtama.size()];
double[][] DataSplinter1 = new double[MatrixSplit.size()][MatrixSplit.size()];
///ambil index
for (int i = 0; i < MatrixUtama.size(); i++) {
int count = Search(MatrixUtama.get(i));
145
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
countMatrix.add(count);
}
///ambil index
for (int i = 0; i < MatrixSplit.size(); i++) {
int count = Search(MatrixSplit.get(i));
countSplit.add(count);
}
m = 0;
m1 = 0;
for (int j = 0; j < list.length; j++) {
if (countMatrix.contains(j)) {
LabelMatriks1[m] = list[j];
m++;
}
if (countSplit.contains(j)) {
LabelSplinter1[m1] = list[j];
m1++;
}
}
m = 0;
for (int e = 0; e < data.length; e++) {
if (countMatrix.contains(e)) {
int n = 0;
for (int j = 0; j < data.length; j++) {
if (countMatrix.contains(j)) {
DataMatriks1[m][n] = data[e][j];
n++;
}
}
m++;
}
}
m = 0;
for (int e = 0; e < data.length; e++) {
if (countSplit.contains(e)) {
int n = 0;
for (int j = 0; j < data.length; j++) {
if (countSplit.contains(j)) {
DataSplinter1[m][n] = data[e][j];
n++;
}
}
m++;
}
146
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
setDataMatriksAkhir(DataMatriks1);
setLabelSplinterAkhir(LabelMatriks1);
setDataSplinterAkhir(DataSplinter1);
setLabelSplinterAkhir(LabelSplinter1);
MatrixLisAkhir.clear();
SplinterListAkhir.clear();
for (int i = 0; i < list.length; i++) {
if (countMatrix.contains(i)) {
MatrixLisAkhir.add(list[i].getLabel());
}
if (countSplit.contains(i)) {
SplinterListAkhir.add(list[i].getLabel());
}
}
}
public ArrayList<Integer> AmbilIndexSelisih(double[] Data, Verteks[] list) {
ArrayList<Integer> tempIndex = new ArrayList<>();
int minValueCounter = 0;
int index = 0;
double rerataAll[] = new double[Data.length];
double nilaiMin = 0;
for (int i = 0; i < Data.length; ++i) {
rerataAll[i] = Data[i];
BigDecimal bd = new BigDecimal(rerataAll[i]);
bd = bd.setScale(decp, BigDecimal.ROUND_DOWN);
rerataAll[i] = bd.doubleValue();
nilaiMin = rerataAll[i];
}
for (int i = 0; i < rerataAll.length; i++) {
if (rerataAll[i] > nilaiMin) {
nilaiMin = rerataAll[i];
minValueCounter = 1;
index = i;
tempIndex.clear();
tempIndex.add(index);
} else if (rerataAll[i] == nilaiMin) {
minValueCounter++;
tempIndex.add(i);
}
147
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
return tempIndex;
}
public int Search(String label) {
for (int i = 0; i < verteksList.length; i++) {
if (label.equals(verteksList[i].getLabel())) {
return i;
}
}
return -1;
}
public int CariObjekTerbesar(double[] data, Verteks[] label) {
double nilaiMax = 0;
double sum;
int idxMax = 0;
for (int i = 0; i < data.length; i++) {
sum = data[i];
if (sum > nilaiMax) {
nilaiMax = sum;
idxMax = i;
}
}
return idxMax;
}
public double[] Averagematrix(double[][] data, Verteks[] list, ArrayList<String> listSize) {
double rerata[] = new double[data.length];
for (int i = 0; i < data.length; ++i) {
for (int j = 0; j < data.length; ++j) {
rerata[i] += data[i][j];
}
rerata[i] = rerata[i] / list.length;
}
return rerata;
}
public double[] AverageSplinter(double[][] data, Verteks[] list, ArrayList listSize) {
double rerata[] = new double[data.length];
for (int i = 0; i < data.length; ++i) {
for (int j = 0; j < listSize.size(); ++j) {
rerata[i] += data[i][j];
}
148
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
rerata[i] = rerata[i] / listSize.size();
}
return rerata;
}
public double[] HitungSelisih(double[] obyekMatrix, double[] objekSplinter, Verteks[] list)
{
double rerata[] = new double[objekSplinter.length];
double ave[] = new double[objekSplinter.length];
double nilaiMax = 0;
int idxMax = 0;
for (int i = 0; i < obyekMatrix.length; ++i) {
rerata[i] = obyekMatrix[i] - objekSplinter[i];
ave[i] = rerata[i];
nilaiMax = ave[i];
}
for (int i = 0; i < ave.length; i++) {
if (ave[i] >= nilaiMax) {
nilaiMax = ave[i];
idxMax = i;
}
}
return ave;
}
public double[] RoundTo2DecimalsArray(double[] val) {
for (int i = 0; i < val.length; ++i) {
BigDecimal bd = new BigDecimal(val[i]);
bd = bd.setScale(decp, BigDecimal.ROUND_DOWN);
val[i] = bd.doubleValue();
}
return val;
}
public double RoundTo2DecimalsSingle(double val) {
BigDecimal bd = new BigDecimal(val);
bd = bd.setScale(decp, BigDecimal.ROUND_FLOOR);
val = bd.doubleValue();
return val;
}
public double BobotMatriks(double[][] data, ArrayList<String> list) {
double ave = 0;
double sum = 0;
for (int i = 0; i < data.length; i++) {
149
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
sum = 0;
for (int j = 0; j < data[i].length; j++) {
sum += data[i][j];
ave = sum / data.length;
}
}
return RoundTo2DecimalsSingle(ave);
}
public double akurasi(double[][] data) {
double sse = 0;
double[] sumerr2 = new double[data.length];
double[][] matriks = new double[data.length][data.length];
double mean = 0;
double sum = 0;
for (int i = 0; i < data.length; i++) {
sum = 0;
for (int j = 0; j < data[i].length; j++) {
sum += data[i][j];
mean = sum / data.length;
}
}
for (int i = 0; i < matriks.length; i++) {
for (int j = 0; j < matriks[i].length; j++) {
matriks[i][j] = data[i][j] - mean;
}
}
for (int i = 0; i < matriks.length; i++) {
for (int j = 0; j < matriks[i].length; j++) {
matriks[i][j] = Math.pow(matriks[i][j], 2);
}
}
for (int i = 0; i < matriks.length; i++) {
for (int j = 0; j < matriks.length; j++) {
sumerr2[i] += matriks[i][j];
}
sse += sumerr2[i];
BigDecimal bd = new BigDecimal(sse);
bd = bd.setScale(decp, BigDecimal.ROUND_DOWN);
sse = bd.doubleValue();
}
return sse;
}
150
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
Listing Program – KoneksiDB.java
package Entity;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Adiman
*/
public class KoneksiDB {
private static final String url = "jdbc:mysql://localhost:3306/skripsi";
private String user = "root";
private String password = "1234";
private Connection koneksi;
private Statement statement;
public KoneksiDB() throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");
koneksi = DriverManager.getConnection(url, user, password);
statement = koneksi.createStatement();
} catch (ClassNotFoundException ex) {
Logger.getLogger(KoneksiDB.class.getName()).log(Level.SEVERE, null, ex);
}
}
public Connection bukaKoneksi() throws SQLException {
Connection konek = DriverManager.getConnection(url, user, password);
return konek;
}
public void tutupKoneksi() throws SQLException {
if (koneksi != null) {
koneksi.close();
}
}
151
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
public ResultSet lihatData(String sql) throws SQLException {
ResultSet rs = null;
rs = statement.executeQuery(sql);
return rs;
}
public static void main(String[] args) throws SQLException {
KoneksiDB tes = new KoneksiDB();
}
public static Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/skripsi",
"root", "1234");
return con;
} catch (Exception ex) {
System.out.println("Database.getConnection() Error -->" + ex.getMessage());
return null;
}
}
public static void close(Connection con) {
try {
con.close();
} catch (Exception ex) {
}
}
}
Listing Program – RangeHarga.java
package Entity;
/**
*
* @author Adiman
*/
public class RangeHarga {
private double HargaAtas1;
private double HargaAtas2;
private double HargaAtas3;
private double HargaAtas4;
private double HargaAtas5;
private double HargaBawah1;
private double HargaBawah2;
152
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
private double HargaBawah3;
private double HargaBawah4;
private double HargaBawah5;
private int jumlahData;
public RangeHarga() {
}
public double getHargaAtas1() {
return HargaAtas1;
}
public void setHargaAtas1(double HargaAtas1) {
this.HargaAtas1 = HargaAtas1;
}
public double getHargaAtas2() {
return HargaAtas2;
}
public void setHargaAtas2(double HargaAtas2) {
this.HargaAtas2 = HargaAtas2;
}
public double getHargaAtas3() {
return HargaAtas3;
}
public void setHargaAtas3(double HargaAtas3) {
this.HargaAtas3 = HargaAtas3;
}
public double getHargaAtas4() {
return HargaAtas4;
}
public void setHargaAtas4(double HargaAtas4) {
this.HargaAtas4 = HargaAtas4;
}
public double getHargaAtas5() {
return HargaAtas5;
}
public void setHargaAtas5(double HargaAtas5) {
this.HargaAtas5 = HargaAtas5;
}
153
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
public double getHargaBawah1() {
return HargaBawah1;
}
public void setHargaBawah1(double HargaBawah1) {
this.HargaBawah1 = HargaBawah1;
}
public double getHargaBawah2() {
return HargaBawah2;
}
public void setHargaBawah2(double HargaBawah2) {
this.HargaBawah2 = HargaBawah2;
}
public double getHargaBawah3() {
return HargaBawah3;
}
public void setHargaBawah3(double HargaBawah3) {
this.HargaBawah3 = HargaBawah3;
}
public double getHargaBawah4() {
return HargaBawah4;
}
public void setHargaBawah4(double HargaBawah4) {
this.HargaBawah4 = HargaBawah4;
}
public double getHargaBawah5() {
return HargaBawah5;
}
public void setHargaBawah5(double HargaBawah5) {
this.HargaBawah5 = HargaBawah5;
}
public int getJumlahData() {
return jumlahData;
}
public void setJumlahData(int jumlahData) {
154
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
this.jumlahData = jumlahData;
}
}
Listing Program – verteks.java
package Entity;
import java.util.List;
public class Verteks {
private String label;
private List<Double> nilai;
public Verteks(String label, List<Double> nilai1) {
setLabel(label);
setNilai(nilai1);
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<Double> getNilai() {
return nilai;
}
public void setNilai(List<Double> nilai) {
this.nilai = nilai;
}
}
Listing Program – HalamanBantuan.java
package View;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author Adiman
*/
public class HalamanBantuan extends javax.swing.JFrame {
public HalamanBantuan() {
initComponents();
155
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
setTitle("Halaman Bantuan");
setLocationRelativeTo(this);
setResizable(false);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("AKU");
setBackground(new java.awt.Color(255, 255, 255));
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setMinimumSize(new java.awt.Dimension(860, 450));
setName("Form"); // NOI18N
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setName("jPanel1"); // NOI18N
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText("SISTEM PREDIKSI PENJUALAN HELM MENGGUNAKAN");
jLabel5.setName("jLabel5"); // NOI18N
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel6.setText("ALGORITMA HIERARCHICAL DIVISIVE");
jLabel6.setName("jLabel6"); // NOI18N
jLabel4.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/Image/logo.png"))); // NOI18N
jLabel4.setName("jLabel4"); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(14, 14, 14)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG, false)
.addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 721,
javax.swing.GroupLayout.PREFERRED_SIZE))
156
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addContainerGap(36, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel6)
.addContainerGap(20, Short.MAX_VALUE))
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel4.setName("jPanel4"); // NOI18N
jScrollPane1.setName("jScrollPane1"); // NOI18N
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jTextArea1.setText("Petunjuk Penggunaan\nA. Petunjuk Preprocessing Data\n 1. Tekan
tombol 'Pilih File' untuk mengambil data dalam format file.csv \n
- Baris pertama pada file
berformat .csv dianggap nama kolom.\n
- Label data tidak boleh kosong sehingga data pada
kolom pertama dianggap sebagai \n
label data.\n 2. Tekan tombol 'Submit' untuk
memproses data yang sudah siap olah ke dalam \n
tab 'Cluster'\n\nB. Petunjuk Proses
Clustering\n 1. Tekan tombol 'Proses' untuk memulai proses Cluster
\n 3. Tekan tombol
'Simpan Hasil Outlier' untuk menyimpan hasil deteksi\n
outlier dalam format file .xls atau
.doc atau .txt");
jTextArea1.setName("jTextArea1"); // NOI18N
jScrollPane1.setViewportView(jTextArea1);
kembaliButton.setText("KEMBALI");
kembaliButton.setName("kembaliButton"); // NOI18N
kembaliButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
kembaliButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
157
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 851,
Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel4Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(kembaliButton)))
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 304,
Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(kembaliButton)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
158
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addContainerGap())
);
pack();
}// </editor-fold>
private void kembaliButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
HalamanUtama awal = new HalamanUtama();
awal.setVisible(true);
this.dispose();
} catch (SQLException ex) {
Logger.getLogger(HalamanBantuan.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new HalamanBantuan().setVisible(true);
}
});
}
}
Listing Program – HalamanTentang.java
package View;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author Adiman
*/
public class HalamanTentang extends javax.swing.JFrame {
/**
* Creates new form HalamanUtama
*/
public HalamanTentang() {
initComponents();
setTitle("Halaman Tentang");
setLocationRelativeTo(this);
setResizable(false);
}
159
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("AKU");
setBackground(new java.awt.Color(255, 255, 255));
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setMinimumSize(new java.awt.Dimension(860, 450));
setName("Form"); // NOI18N
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setName("jPanel1"); // NOI18N
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText("SISTEM PREDIKSI PENJUALAN HELM MENGGUNAKAN");
jLabel5.setName("jLabel5"); // NOI18N
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel6.setText("ALGORITMA HIERARCHICAL DIVISIVE");
jLabel6.setName("jLabel6"); // NOI18N
jLabel4.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/Image/logo.png"))); // NOI18N
jLabel4.setName("jLabel4"); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(14, 14, 14)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG, false)
.addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
160
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 721,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(36, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel6)
.addContainerGap(20, Short.MAX_VALUE))
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel4.setName("jPanel4"); // NOI18N
jLabel7.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel7.setText("PENGEMBANGAN ALAT BANTU");
jLabel7.setName("jLabel7"); // NOI18N
jLabel8.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel8.setText("ALGORITMA HIERARCHICAL DIVISIVE");
jLabel8.setName("jLabel8"); // NOI18N
jLabel9.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel9.setText("PREDIKSI PENJUALAN HELM MENGGUNAKAN");
jLabel9.setName("jLabel9"); // NOI18N
jLabel11.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel11.setText("Dibuat oleh :");
jLabel11.setName("jLabel11"); // NOI18N
jLabel12.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel12.setText("ISIDORUS CAHYO ADI PRASETYO");
jLabel12.setName("jLabel12"); // NOI18N
jLabel14.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
161
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel14.setText("115314009");
jLabel14.setName("jLabel14"); // NOI18N
jLabel15.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel15.setText("Yogyakarta");
jLabel15.setName("jLabel15"); // NOI18N
jLabel17.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel17.setText("2015");
jLabel17.setName("jLabel17"); // NOI18N
jLabel18.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel18.setText("Universitas Sanata Dharma");
jLabel18.setName("jLabel18"); // NOI18N
jLabel19.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel19.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel19.setText("Program Studi Teknik Informatika");
jLabel19.setName("jLabel19"); // NOI18N
jLabel20.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel20.setText("Fakultas Sains dan Teknologi");
jLabel20.setName("jLabel20"); // NOI18N
kembaliButton.setText("KEMBALI");
kembaliButton.setName("kembaliButton"); // NOI18N
kembaliButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
kembaliButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
private void kembaliButtonActionPerformed(java.awt.event.ActionEvent evt) {
162
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
try {
HalamanUtama awal = new HalamanUtama();
awal.setVisible(true);
this.dispose();
} catch (SQLException ex) {
Logger.getLogger(HalamanTentang.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new HalamanTentang().setVisible(true);
}
});
}
}
Listing Program HalamanUtama.java
/*
* HalamanUtama.java
*
* Created on Jan 2, 2014, 1:58:00 PM
*/
package View;
import Controller.controlRangeHarga;
import Entity.DataObyek;
import Entity.Graph;
import Entity.KoneksiDB;
import Entity.RangeHarga;
import java.awt.Cursor;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
163
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.SortOrder;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
/**
*
* @author Adiman
*/
public class HalamanUtama extends javax.swing.JFrame {
private DefaultTableModel model;
ArrayList<DataObyek> Objekdat = new ArrayList<>();
ArrayList<DataObyek> hasilPengelompokan = new ArrayList<>();
Vector coluomDataFix = new Vector();
Vector InputData = new Vector();
Vector FixDataPre = new Vector();
ArrayList<String> tipekelompok1 = new ArrayList<String>();
ArrayList<String> tipekelompok2 = new ArrayList<String>();
ArrayList<String> tipekelompok3 = new ArrayList<String>();
ArrayList<String> tipekelompok4 = new ArrayList<String>();
ArrayList<String> tipekelompok5 = new ArrayList<String>();
ArrayList<String> tes2 = new ArrayList<String>();
String url = "jdbc:mysql://localhost:3306/skripsi";
String userid = "root";
String password = "1234";
Connection con;
Statement stm;
/**
* Creates new form HalamanUtama
*
* @throws java.sql.SQLException
*/
164
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
public HalamanUtama() throws SQLException {
KoneksiDB kon = new KoneksiDB();
controlRangeHarga ccrlRangeHarga = new controlRangeHarga();
initComponents();
lihatRangeHarga();
setTitle("Halaman Utama");
setLocationRelativeTo(this);
//setResizable(false);
submitButton.setEnabled(false);
jButtonSimpan.setEnabled(false);
jButton1.setEnabled(false);
batalSeleksiButton.setEnabled(false);
preprosesButton1.setEnabled(false);
Objekdat.clear();
InputData.clear();
FixDataPre.clear();
hasilPengelompokan.clear();
FixDataPre.clear();
tipekelompok1.clear();
tipekelompok2.clear();
tipekelompok3.clear();
tipekelompok4.clear();
tipekelompok5.clear();
jTabbedPane1.setSelectedComponent(jPanel4);
}
public void lihatRangeHarga() {
try {
ResultSet rs1 = controlRangeHarga.tampilkanRangeNilai("I");
rs1.beforeFirst();
while (rs1.next()) {
bawah1filed.setText(rs1.getString(1));
atas1filed.setText(rs1.getString(2));
}
ResultSet rs2 = controlRangeHarga.tampilkanRangeNilai("II");
rs2.beforeFirst();
while (rs2.next()) {
bawah2filed.setText(rs2.getString(1));
atas2filed.setText(rs2.getString(2));
}
ResultSet rs3 = controlRangeHarga.tampilkanRangeNilai("III");
rs3.beforeFirst();
while (rs3.next()) {
bawah3filed.setText(rs3.getString(1));
atas3filed.setText(rs3.getString(2));
}
165
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ResultSet rs4 = controlRangeHarga.tampilkanRangeNilai("IV");
rs4.beforeFirst();
while (rs4.next()) {
bawah4filed.setText(rs4.getString(1));
atas4filed.setText(rs4.getString(2));
}
ResultSet rs5 = controlRangeHarga.tampilkanRangeNilai("V");
rs5.beforeFirst();
while (rs5.next()) {
bawah5filed.setText(rs5.getString(1));
atas5filed.setText(rs5.getString(2));
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Nilai kategori kosong!", ""
+ "Pembaritahuan", JOptionPane.INFORMATION_MESSAGE);
}
}
public void TampilLabel() {
ArrayList columnNames = new ArrayList();
ArrayList data = new ArrayList();
String sql = "SELECT\n"
+ "sub_datacluster.cluster AS Cluster,\n"
+ "sub_datacluster.anggota AS Anggota\n"
+ "FROM\n"
+ "sub_datacluster\n"
+ "ORDER BY\n"
+ "Cluster ASC";
try (Connection connection = DriverManager.getConnection(url, userid, password);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; i++) {
columnNames.add(md.getColumnName(i));
}
while (rs.next()) {
ArrayList row = new ArrayList(columns);
for (int i = 1; i <= columns; i++) {
row.add(rs.getObject(i));
166
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
data.add(row);
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
Vector columnNamesVector = new Vector();
Vector dataVector = new Vector();
for (int i = 0; i < data.size(); i++) {
ArrayList subArray = (ArrayList) data.get(i);
Vector subVector = new Vector();
for (int j = 0; j < subArray.size(); j++) {
subVector.add(subArray.get(j));
}
dataVector.add(subVector);
}
for (int i = 0; i < columnNames.size(); i++) {
columnNamesVector.add(columnNames.get(i));
}
DefaultTableModel tabelmodel1 = new DefaultTableModel(dataVector,
columnNamesVector);
DataLabel.setModel(tabelmodel1);
DataLabel.setAutoCreateRowSorter(true);
}
public void TampilJML() {
ArrayList columnNames = new ArrayList();
ArrayList data = new ArrayList();
String sql = "select `sub_datacluster`.`cluster` AS `Cluster`,"
+ "count(`sub_datacluster`.`anggota`) AS `Jumlah Anggota Cluster` "
+ "from `sub_datacluster` group by `sub_datacluster`.`cluster` ORDER BY\n"
+ "sub_datacluster.id ASC";
try (Connection connection = DriverManager.getConnection(url, userid, password);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
167
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
for (int i = 1; i <= columns; i++) {
columnNames.add(md.getColumnName(i));
}
while (rs.next()) {
ArrayList row = new ArrayList(columns);
for (int i = 1; i <= columns; i++) {
row.add(rs.getObject(i));
}
data.add(row);
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
Vector columnNamesVector = new Vector();
Vector dataVector = new Vector();
for (int i = 0; i < data.size(); i++) {
ArrayList subArray = (ArrayList) data.get(i);
Vector subVector = new Vector();
for (int j = 0; j < subArray.size(); j++) {
subVector.add(subArray.get(j));
}
dataVector.add(subVector);
}
for (int i = 0; i < columnNames.size(); i++) {
columnNamesVector.add(columnNames.get(i));
}
DefaultTableModel tabelmodel1 = new DefaultTableModel(dataVector,
columnNamesVector);
DataJml.setModel(tabelmodel1);
DataJml.setAutoCreateRowSorter(true);
//
jTabbedPane1.setSelectedComponent(DivisivePanel);
//
jTabbedPane1.setEnabledAt(1, true);
}
public void TampilSSE() {
String sql = "SELECT SUM(mysum) FROM(SELECT DISTINCT sub_datacluster.sse
AS "
+ " mysum FROM sub_datacluster GROUP BY sub_datacluster.cluster) AS bb;";
168
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
try (Connection connection = DriverManager.getConnection(url, userid, password);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
TotalSSETextField1.setText(rs.getString("SUM(mysum)"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
public void SimpanCluster() {
JFileChooser fileChooser = new JFileChooser(new File("E:/"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Excel (*.xls)", "xls"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word (*.doc)",
"doc"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Text Documents (*.txt)", "txt"));
FileOutputStream file_output_stream;
int returnValue = fileChooser.showSaveDialog(this);
if (returnValue == JFileChooser.APPROVE_OPTION) {
String filename = fileChooser.getSelectedFile().getPath();
String ext = fileChooser.getFileFilter().getDescription();
if (ext.equals("Microsoft Excel (*.xls)")) {
File f;
f = new File(filename + ".xls");
try {
file_output_stream = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
try {
TableModel model = DataLabel.getModel();
FileWriter excel = new FileWriter(f);
for (int i = 0; i < model.getColumnCount(); i++) {
excel.write(model.getColumnName(i) + "\t");
}
excel.write("\n");
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 0; j < model.getColumnCount(); j++) {
excel.write(model.getValueAt(i, j).toString() + "\t");
}
excel.write("\n");
}
excel.close();
169
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} catch (IOException i) {
JOptionPane.showMessageDialog(this, "Penyimpanan Gagal");
}
} else if (ext.equals("Microsoft Word (*.doc)")) {
File f;
f = new File(filename + ".doc");
try {
file_output_stream = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
try {
BufferedWriter bfw = new BufferedWriter(new FileWriter(f));
for (int i = 0; i < DataLabel.getColumnCount(); i++) {
bfw.write(DataLabel.getColumnName(i));
bfw.write("\t");
}
for (int i = 0; i < DataLabel.getRowCount(); i++) {
bfw.newLine();
for (int j = 0; j < DataLabel.getColumnCount(); j++) {
bfw.write(DataLabel.getValueAt(i, j).toString());
bfw.write("\t");
}
}
bfw.close();
} catch (IOException i) {
JOptionPane.showMessageDialog(this, "Penyimpanan Gagal");
}
} else if (ext.equals("Text Documents (*.txt)")) {
File f;
f = new File(filename + ".txt");
try {
file_output_stream = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
try {
BufferedWriter bfw = new BufferedWriter(new FileWriter(f));
for (int i = 0; i < DataLabel.getColumnCount(); i++) {
bfw.write(DataLabel.getColumnName(i));
bfw.write("\t");
}
for (int i = 0; i < DataLabel.getRowCount(); i++) {
170
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
bfw.newLine();
for (int j = 0; j < DataLabel.getColumnCount(); j++) {
bfw.write(DataLabel.getValueAt(i, j).toString());
bfw.write("\t");
}
}
bfw.close();
} catch (IOException i) {
JOptionPane.showMessageDialog(this, "Penyimpanan Gagal");
}
}
JOptionPane.showMessageDialog(this, "Hasil Pengklasteran Telah Berhasil Disimpan
di " + filename);
}
}
public void cekInputRangeHarga() {
RangeHarga nilaiRange = new RangeHarga();
controlRangeHarga crlharga = new controlRangeHarga();
boolean cekData = false;
if (atas1filed.getText().equals("") || atas2filed.getText().equals("")
|| atas3filed.getText().equals("") || atas4filed.getText().equals("")
|| atas5filed.getText().equals("") || bawah1filed.getText().equals("")
|| bawah2filed.getText().equals("") || bawah3filed.getText().equals("")
|| bawah4filed.getText().equals("") || bawah5filed.getText().equals("")) {
JOptionPane.showMessageDialog(null, "Data Harus Terisi Semua!", "Peringatan",
JOptionPane.ERROR_MESSAGE);
} else if ((Integer.valueOf(bawah2filed.getText())) <=
(Integer.valueOf(bawah1filed.getText()))
|| (Integer.valueOf(atas2filed.getText())) <= (Integer.valueOf(atas1filed.getText())))
{
JOptionPane.showMessageDialog(null, "Proses Kelompok 2 gagal, Silahkan cek
kembali range nilai", ""
+ "Informasi", JOptionPane.INFORMATION_MESSAGE);
} else if ((Integer.valueOf(bawah2filed.getText())) <
(Integer.valueOf(atas1filed.getText()))
|| (Integer.valueOf(atas2filed.getText())) < (Integer.valueOf(bawah2filed.getText())))
{
JOptionPane.showMessageDialog(null, "Proses Kelompok 2 gagal, Silahkan cek
kembali range nilai", ""
+ "Informasi", JOptionPane.INFORMATION_MESSAGE);
} else if ((Integer.valueOf(bawah3filed.getText())) <=
(Integer.valueOf(bawah2filed.getText()))
|| (Integer.valueOf(atas3filed.getText())) <= (Integer.valueOf(atas2filed.getText())))
{
171
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
JOptionPane.showMessageDialog(null, "Proses Kelompok 3 gagal, Silahkan cek
kembali range nilai", ""
+ "Informasi", JOptionPane.INFORMATION_MESSAGE);
} else if ((Integer.valueOf(bawah4filed.getText())) <=
(Integer.valueOf(bawah3filed.getText()))
|| (Integer.valueOf(atas4filed.getText())) <= (Integer.valueOf(atas3filed.getText())))
{
JOptionPane.showMessageDialog(null, "Proses Kelompok 4 gagal, Silahkan cek
kembali range nilai", ""
+ "Informasi", JOptionPane.INFORMATION_MESSAGE);
} else if ((Integer.valueOf(bawah5filed.getText())) <=
(Integer.valueOf(bawah4filed.getText()))
|| (Integer.valueOf(atas5filed.getText())) <= (Integer.valueOf(atas4filed.getText())))
{
JOptionPane.showMessageDialog(null, "Proses Kelompok 5 gagal, Silahkan cek
kembali range nilai",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
} else {
try {
nilaiRange.setHargaBawah1(Double.parseDouble(bawah1filed.getText()));
nilaiRange.setHargaAtas1(Double.parseDouble(atas1filed.getText()));
nilaiRange.setHargaBawah2(Double.parseDouble(bawah2filed.getText()));
nilaiRange.setHargaAtas2(Double.parseDouble(atas2filed.getText()));
nilaiRange.setHargaBawah3(Double.parseDouble(bawah3filed.getText()));
nilaiRange.setHargaAtas3(Double.parseDouble(atas3filed.getText()));
nilaiRange.setHargaBawah4(Double.parseDouble(bawah4filed.getText()));
nilaiRange.setHargaAtas4(Double.parseDouble(atas4filed.getText()));
nilaiRange.setHargaBawah5(Double.parseDouble(bawah5filed.getText()));
nilaiRange.setHargaAtas5(Double.parseDouble(atas5filed.getText()));
cekData = crlharga.cekIsiData();
System.out.println(cekData);
if (cekData == false) {
crlharga.prosesUpdateRange(nilaiRange);
JOptionPane.showMessageDialog(null, "Range Nilai Berhasil Disimpan",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
jTabbedPane1.setEnabledAt(2, true);
} else {
crlharga.prosesInsertRange(nilaiRange);
JOptionPane.showMessageDialog(null, "Range Nilai Berhasil Disimpan",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
jTabbedPane1.setEnabledAt(2, true);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Proses Gagal, Silahkan cek kembali range
172
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
nilai",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
}
}
}
private void deleteRange() {
controlRangeHarga ctrl = new controlRangeHarga();
try {
// TODO add your handling code here:
ctrl.deleteIsiData();
JOptionPane.showMessageDialog(null, "Range Nilai Berhasil Dihapus",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
bawah1filed.setText("");
bawah2filed.setText("");
bawah3filed.setText("");
bawah4filed.setText("");
bawah5filed.setText("");
atas1filed.setText("");
atas2filed.setText("");
atas3filed.setText("");
atas4filed.setText("");
atas5filed.setText("");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Range Nilai Gagal Dihapus",
"Informasi", JOptionPane.INFORMATION_MESSAGE);
Logger
.getLogger(HalamanUtama.class
.getName()).log(Level.SEVERE, null, ex);
}
}
public void pilih() {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setVisible(true);
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
String namaFile = fileChooser.getSelectedFile().getPath();
String[] cut_namafile = namaFile.split("\\.");
if (cut_namafile[1].equals("csv")) {
File csv = fileChooser.getSelectedFile();
Vector columnNameKeseluruhan = new Vector();
Vector dataKeseluruhan = new Vector();
String line;
try {
173
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BufferedReader br = new BufferedReader(new FileReader(csv));
StringTokenizer st = new StringTokenizer(br.readLine(), ",");
while (st.hasMoreElements()) {
columnNameKeseluruhan.add(st.nextToken());
}
while ((line = br.readLine()) != null) {
StringTokenizer st2 = new StringTokenizer(line, ",");
Vector row = new Vector();
while (st2.hasMoreTokens()) {
row.add(st2.nextToken());
}
dataKeseluruhan.add(row);
DefaultTableModel model = new DefaultTableModel(dataKeseluruhan,
columnNameKeseluruhan);
tabelInputData.setModel(model);
//
tabelInputData.setAutoCreateRowSorter(true);
TableModel tablemodel = tabelInputData.getModel();
int jumlahDataSeleksi = tablemodel.getRowCount();
jumlahData.setText(" " + jumlahDataSeleksi);
submitButton.setEnabled(true);
}
System.out.println("Input File Sukses");
pilihFileTextField.setText(csv.getPath());
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Format tidak sesuai");
}
}
}
}
public void InputPreprosesData(JTable tabel) {
DefaultTableModel dtm = (DefaultTableModel) tabel.getModel();
int nRow = dtm.getRowCount(), col = dtm.getColumnCount();
Vector columnNameKeseluruhan = new Vector();
Vector dataKeseluruhan = new Vector();
double[][] tabelData = new double[nRow][col];
double[][] zScore = new double[nRow][col];
for (int i = 0; i < tabel.getColumnCount(); i++) {
columnNameKeseluruhan.add(tabel.getColumnName(i));
}
for (int i = 0; i < tabel.getRowCount(); i++) {
ArrayList<String> tes = new ArrayList<>();
for (int j = 0; j < tabel.getColumnCount(); j++) {
tes.add((String) dtm.getValueAt(i, j));
}
DataObyek dob = new DataObyek();
174
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dob.setKodeBarang(tes.get(1));
dob.setNamaBarang(tes.get(2).substring(0));
dob.setHargaJual(tes.get(5));
dob.setQuantity(Double.parseDouble(tes.get(6)));
dob.setTotal(tes.get(10));
dob.setArea(tes.get(19).substring(0));
dob.setKelompokHarga(tes.get(20).substring(1));
Objekdat.add(dob);
}
Double a1 = Double.parseDouble(bawah1filed.getText());
Double a2 = Double.parseDouble(bawah2filed.getText());
Double a3 = Double.parseDouble(bawah3filed.getText());
Double a4 = Double.parseDouble(bawah4filed.getText());
Double a5 = Double.parseDouble(bawah5filed.getText());
Double b1 = Double.parseDouble(atas1filed.getText());
Double b2 = Double.parseDouble(atas2filed.getText());
Double b3 = Double.parseDouble(atas3filed.getText());
Double b4 = Double.parseDouble(atas4filed.getText());
Double b5 = Double.parseDouble(atas5filed.getText());
for (int i = 0; i < Objekdat.size(); i++) {
Double a = Double.parseDouble(Objekdat.get(i).getHargaJual());
if ((a >= a1) && (a < b1)) {
Objekdat.get(i).setKelompokHarga("1");
} else if ((a >= a2) && (a < b2)) {
Objekdat.get(i).setKelompokHarga("2");
} else if ((a >= a3) && (a < b3)) {
Objekdat.get(i).setKelompokHarga("3");
} else if ((a >= a4) && (a < b4)) {
Objekdat.get(i).setKelompokHarga("4");
} else if ((a >= a5) && (a < b5)) {
Objekdat.get(i).setKelompokHarga("5");
}
}
for (int i = 0; i < Objekdat.size(); i++) {
Vector sementara = new Vector();
sementara.add(Objekdat.get(i).getKodeBarang());
sementara.add(Objekdat.get(i).getNamaBarang());
sementara.add(Objekdat.get(i).getHargaJual());
sementara.add(Objekdat.get(i).getQuantity());
sementara.add(Objekdat.get(i).getTotal());
sementara.add(Objekdat.get(i).getArea());
sementara.add(Objekdat.get(i).getKelompokHarga());
InputData.add(sementara);
175
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
coluomDataFix.add(columnNameKeseluruhan.get(1));
coluomDataFix.add(columnNameKeseluruhan.get(2));
coluomDataFix.add(columnNameKeseluruhan.get(5));
coluomDataFix.add(columnNameKeseluruhan.get(6));
coluomDataFix.add(columnNameKeseluruhan.get(10));
coluomDataFix.add(columnNameKeseluruhan.get(19));
coluomDataFix.add(columnNameKeseluruhan.get(20));
DefaultTableModel model = new DefaultTableModel(InputData, coluomDataFix);
kp.setModel(model);
TableModel tablemodel = kp.getModel();
preprosesButton1.setEnabled(true);
submitButton.setEnabled(false);
batalSeleksiButton.setEnabled(true);
}
public void SubmitPreprosesing() {
System.out.println("\nMulai Submite");
System.out.println("Prosesing pengelompokan tipe");
for (int i = 0; i < Objekdat.size(); i++) {
StringTokenizer st = new StringTokenizer(Objekdat.get(i).getNamaBarang(), "\\s+");
ArrayList<String> a = new ArrayList<>();
while (st.hasMoreElements()) {
a.add(st.nextToken());
}
if (Integer.parseInt(Objekdat.get(i).getKelompokHarga()) == 1) {
tipekelompok1.add(a.get(0).toString());
} else if (Integer.parseInt(Objekdat.get(i).getKelompokHarga()) == 2) {
tipekelompok2.add(a.get(0).toString());
} else if (Integer.parseInt(Objekdat.get(i).getKelompokHarga()) == 3) {
tipekelompok3.add(a.get(0).toString());
} else if (Integer.parseInt(Objekdat.get(i).getKelompokHarga()) == 4) {
tipekelompok4.add(a.get(0).toString());
} else if (Integer.parseInt(Objekdat.get(i).getKelompokHarga()) == 5) {
tipekelompok5.add(a.get(0).toString());
}
}
// Pengambungan HashShet tipe data di kelompok 1
HashSet<String> PenggambunganTipeKelompok1 = new HashSet<>();
PenggambunganTipeKelompok1.addAll(tipekelompok1);
tipekelompok1.clear();
tipekelompok1.addAll(PenggambunganTipeKelompok1);
// Pengambungan HashShet tipe data di kelompok 2
176
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HashSet<String> PenggambunganTipeKelompok2 = new HashSet<>();
PenggambunganTipeKelompok2.addAll(tipekelompok2);
tipekelompok2.clear();
tipekelompok2.addAll(PenggambunganTipeKelompok2);
// Pengambungan HashShet tipe data di kelompok 3
HashSet<String> PenggambunganTipeKelompok3 = new HashSet<>();
PenggambunganTipeKelompok3.addAll(tipekelompok3);
tipekelompok3.clear();
tipekelompok3.addAll(PenggambunganTipeKelompok3);
// Pengambungan HashShet tipe data di kelompok 4
HashSet<String> PenggambunganTipeKelompok4 = new HashSet<>();
PenggambunganTipeKelompok4.addAll(tipekelompok4);
tipekelompok4.clear();
tipekelompok4.addAll(PenggambunganTipeKelompok4);
// Pengambungan HashShet tipe data di kelompok 5
HashSet<String> PenggambunganTipeKelompok5 = new HashSet<>();
PenggambunganTipeKelompok5.addAll(tipekelompok5);
tipekelompok5.clear();
tipekelompok5.addAll(PenggambunganTipeKelompok5);
double[][] z = new double[800][800];
for (int k = 0; k < tipekelompok1.size(); k++) {
double jumlahQuantity = 0;
for (int j = 0; j < Objekdat.size(); j++) {
StringTokenizer st = new StringTokenizer(Objekdat.get(j).getNamaBarang(),
"\\s+");
ArrayList<String> a = new ArrayList<>();
while (st.hasMoreElements()) {
a.add(st.nextToken());
}
String tipe = a.get(0).toString();
if (tipekelompok1.get(k).toString().equals(tipe)) {
double quatity = Objekdat.get(j).getQuantity();
double datatampung = quatity;
jumlahQuantity = datatampung;
if (z[0][k] == 0) {
z[0][k] = datatampung;
} else {
jumlahQuantity = z[0][k];
jumlahQuantity = jumlahQuantity + datatampung;
z[0][k] = jumlahQuantity;
}
}
177
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
DataObyek dob = new DataObyek(tipekelompok1.get(k).toString(), "1",
jumlahQuantity);
hasilPengelompokan.add(dob);
}
for (int k = 0; k < tipekelompok2.size(); k++) {
double jumlahQuantity = 0;
for (int j = 0; j < Objekdat.size(); j++) {
StringTokenizer st = new StringTokenizer(Objekdat.get(j).getNamaBarang(),
"\\s+");
ArrayList<String> a = new ArrayList<>();
while (st.hasMoreElements()) {
a.add(st.nextToken());
}
String tipe = a.get(0).toString();
if (tipekelompok2.get(k).toString().equals(tipe)) {
double quatity = Objekdat.get(j).getQuantity();
double datatampung = quatity;
jumlahQuantity = datatampung;
if (z[1][k] == 0) {
z[1][k] = datatampung;
} else {
jumlahQuantity = z[1][k];
jumlahQuantity = jumlahQuantity + datatampung;
z[1][k] = jumlahQuantity;
}
}
}
DataObyek dob = new DataObyek(tipekelompok2.get(k).toString(), "2",
jumlahQuantity);
hasilPengelompokan.add(dob);
}
for (int k = 0; k < tipekelompok3.size(); k++) {
double jumlahQuantity = 0;
for (int j = 0; j < Objekdat.size(); j++) {
StringTokenizer st = new StringTokenizer(Objekdat.get(j).getNamaBarang(),
"\\s+");
ArrayList<String> a = new ArrayList<>();
while (st.hasMoreElements()) {
a.add(st.nextToken());
}
String tipe = a.get(0).toString();
if (tipekelompok3.get(k).toString().equals(tipe)) {
double quatity = Objekdat.get(j).getQuantity();
double datatampung = quatity;
jumlahQuantity = datatampung;
178
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (z[2][k] == 0) {
z[2][k] = datatampung;
} else {
jumlahQuantity = z[2][k];
jumlahQuantity = jumlahQuantity + datatampung;
z[2][k] = jumlahQuantity;
}
}
}
DataObyek dob = new DataObyek(tipekelompok3.get(k).toString(), "3",
jumlahQuantity);
hasilPengelompokan.add(dob);
}
for (int k = 0; k < tipekelompok4.size(); k++) {
double jumlahQuantity = 0;
for (int j = 0; j < Objekdat.size(); j++) {
StringTokenizer st = new StringTokenizer(Objekdat.get(j).getNamaBarang(),
"\\s+");
ArrayList<String> a = new ArrayList<>();
while (st.hasMoreElements()) {
a.add(st.nextToken());
}
String tipe = a.get(0).toString();
if (tipekelompok4.get(k).toString().equals(tipe)) {
double quatity = Objekdat.get(j).getQuantity();
double datatampung = quatity;
jumlahQuantity = datatampung;
if (z[3][k] == 0) {
z[3][k] = datatampung;
} else {
jumlahQuantity = z[3][k];
jumlahQuantity = jumlahQuantity + datatampung;
z[3][k] = jumlahQuantity;
}
}
}
DataObyek dob = new DataObyek(tipekelompok4.get(k).toString(), "4",
jumlahQuantity);
hasilPengelompokan.add(dob);
}
for (int k = 0; k < tipekelompok5.size(); k++) {
double jumlahQuantity = 0;
for (int j = 0; j < Objekdat.size(); j++) {
StringTokenizer st = new StringTokenizer(Objekdat.get(j).getNamaBarang(),
"\\s+");
ArrayList<String> a = new ArrayList<>();
179
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
while (st.hasMoreElements()) {
a.add(st.nextToken());
}
String tipe = a.get(0).toString();
if (tipekelompok5.get(k).toString().equals(tipe)) {
double quatity = Objekdat.get(j).getQuantity();
double datatampung = quatity;
jumlahQuantity = datatampung;
if (z[4][k] == 0) {
z[4][k] = datatampung;
} else {
jumlahQuantity = z[4][k];
jumlahQuantity = jumlahQuantity + datatampung;
z[4][k] = jumlahQuantity;
}
}
}
DataObyek dob = new DataObyek(tipekelompok5.get(k).toString(), "5",
jumlahQuantity);
hasilPengelompokan.add(dob);
}
for (int i = 0; i < hasilPengelompokan.size(); i++) {
Vector sementara1 = new Vector();
sementara1.add(hasilPengelompokan.get(i).getNamaBarang());
sementara1.add(hasilPengelompokan.get(i).getKelompokHarga());
sementara1.add(hasilPengelompokan.get(i).getQuantity());
FixDataPre.add(sementara1);
}
Vector namakolom = new Vector();
namakolom.add("Nama Barang");
namakolom.add("Kelompok Harga");
namakolom.add("Total Quantity");
DefaultTableModel tabelmodel1 = new DefaultTableModel(FixDataPre, namakolom);
dataKelompokHargaTable.setModel(tabelmodel1);
TableRowSorter<TableModel> sorter = new
TableRowSorter<>(dataKelompokHargaTable.getModel());
dataKelompokHargaTable.setRowSorter(sorter);
List<RowSorter.SortKey> sortKeys = new ArrayList<>();
int columnIndexBarang = 1;
sortKeys.add(new RowSorter.SortKey(columnIndexBarang, SortOrder.ASCENDING));
int columnIndexKelompok = 0;
sortKeys.add(new RowSorter.SortKey(columnIndexKelompok,
SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
180
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
sorter.sort();
jumlahDataDivisiveTextField.setText("" + dataKelompokHargaTable.getRowCount());
//jTabbedPane1.setSelectedComponent(DivisivePanel);
jButton1.setEnabled(true);
preprosesButton1.setEnabled(false);
jTabbedPane1.setEnabledAt(1, true);
//
}
public void prosesclustering() throws SQLException {
Graph graph;
controlRangeHarga crlharga = new controlRangeHarga();
crlharga.deletePreproses();
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
int decp = 2;
float t1 = System.nanoTime();
graph = new Graph(dataKelompokHargaTable.getRowCount());
graph.inputData(dataKelompokHargaTable);
crlharga.simpanPre(dataKelompokHargaTable);
System.out.println("\n*********************************Proses
Clustering*********************************");
graph.LostClustering();
float t2 = System.nanoTime();
double time = ((t2 - t1) * java.lang.Math.pow(10, -9));
BigDecimal bd = new BigDecimal(time);
bd = bd.setScale(decp, BigDecimal.ROUND_DOWN);
time = bd.doubleValue();
jTabbedPane1.setSelectedComponent(DivisivePanel);
TampilLabel();
TampilJML();
TampilSSE();
lamaclusteriTextField.setText("" + time);
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
jButtonSimpan.setEnabled(true);
jButton1.setEnabled(false);
pop_tree();
graph.tampilMap();
}
private void batalSeleksiButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
HalamanUtama utama = new HalamanUtama();
utama.setVisible(true);
this.dispose();
} catch (SQLException ex) {
Logger.getLogger(HalamanUtama.class
.getName()).log(Level.SEVERE, null, ex);
181
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}
}
private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
InputPreprosesData(tabelInputData);
// SubmitPreprosesing();
}
private void pilihFileButtonActionPerformed(java.awt.event.ActionEvent evt) {
pilih();// pilihFile();
}
private void jButtonSimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
SimpanCluster();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
prosesclustering();
} catch (SQLException ex) {
Logger.getLogger(HalamanUtama.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
HalamanTentang tentang = new HalamanTentang();
tentang.setVisible(true);
this.dispose();
}
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
HalamanBantuan bantuan = new HalamanBantuan();
bantuan.setVisible(true);
this.dispose();
}
private void jMenu1MenuSelected(javax.swing.event.MenuEvent evt) {
int keluar = JOptionPane.showConfirmDialog(null, "Apakah anda yakin ingin keluar dari
sistem?", "Konfirmasi", JOptionPane.YES_NO_OPTION);
if (keluar == JOptionPane.YES_OPTION) {
this.dispose();
}
}
private void preprosesButton1ActionPerformed(java.awt.event.ActionEvent evt) {
182
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
SubmitPreprosesing();// TODO add your handling code here:
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
}
private void jButtonSimpanRangeActionPerformed(java.awt.event.ActionEvent evt) {
cekInputRangeHarga();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
deleteRange();
}
private void jButtonBatalActionPerformed(java.awt.event.ActionEvent evt) {
bawah1filed.setText("");
bawah2filed.setText("");
bawah3filed.setText("");
bawah4filed.setText("");
bawah5filed.setText("");
atas1filed.setText("");
atas2filed.setText("");
atas3filed.setText("");
atas4filed.setText("");
atas5filed.setText("");
}
public final void pop_tree() throws SQLException {
KoneksiDB kon = new KoneksiDB();
try {
try {
con = kon.getConnection();
stm = con.createStatement();
} catch (Exception ex) {
System.out.println("gagal 1");
ex.printStackTrace();
}
ArrayList list = new ArrayList();
list.add("Cluster Tree Node");
String sql = "SELECT * from datacluster";
ResultSet rs = stm.executeQuery(sql);
while (rs.next()) {
Object value[] = {rs.getString(1), rs.getString(2)};
list.add(value);
}
Object hierarchy[] = list.toArray();
183
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DefaultMutableTreeNode root = processHierarchy(hierarchy);
DefaultTreeModel treeModel = new DefaultTreeModel(root);
jTree1.setModel(treeModel);
} catch (Exception e) {
System.out.println("gagal 2");
}
}
@SuppressWarnings("CallToThreadDumpStack")
public DefaultMutableTreeNode processHierarchy(Object[] hierarchy) throws
SQLException {
KoneksiDB kon = new KoneksiDB();
DefaultMutableTreeNode node = new DefaultMutableTreeNode(hierarchy[0]);
try {
int ctrow = 0;
int i = 0;
try {
try {
con = kon.getConnection();
stm = con.createStatement();
} catch (Exception ex) {
System.out.println("gagal 3");
ex.printStackTrace();
}
String sql = "SELECT id, cluster from datacluster group by cluster";
ResultSet rs = stm.executeQuery(sql);
while (rs.next()) {
ctrow = rs.getRow();
}
String L1Nam[] = new String[ctrow];
String L1Id[] = new String[ctrow];
ResultSet rs1 = stm.executeQuery(sql);
while (rs1.next()) {
L1Nam[i] = rs1.getString("cluster");
L1Id[i] = rs1.getString("id");
i++;
}
DefaultMutableTreeNode child, grandchild;
for (int childIndex = 0; childIndex < L1Nam.length; childIndex++) {
child = new DefaultMutableTreeNode(L1Nam[childIndex]);
node.add(child);//add each created child to root
String sql2 = "SELECT anggota, bobot from sub_datacluster where cluster= '" +
L1Nam[childIndex] + "' ";
ResultSet rs3 = stm.executeQuery(sql2);
while (rs3.next()) {
grandchild = new DefaultMutableTreeNode(rs3.getString("anggota"));
184
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
child.add(grandchild);//add each grandchild to each child
}
}
} catch (Exception ex) { ex.printStackTrace();
} catch (Exception e) { }
return (node);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
new HalamanUtama().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(HalamanUtama.class
.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
}
185
Download