Upload
trankien
View
254
Download
6
Embed Size (px)
Citation preview
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
ii
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
HALAMAN PERSETUJUAN
HALAMAN PENGESAHAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
SKRIPSI
PERNYATAAN KEASLIAN KARYA
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
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)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
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 obyek-
obyek 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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
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. Matriks Dua Dimensi ...................................................................... 34
4.5. 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
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):
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
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 pola-pola yang benar-benar
menarik dari hasil 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
atas dua macam, yaitu Agglomerative yang menggunakan stratedi bottom-
up 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 masing-
masing 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
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:
( ) √∑ ( ) (2.2)
Keterangan:
adalah jumlah atribut atau dimensi
dan adalah data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
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 :
√∑ ( )
(2.3)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
menghitung selisih dari nilai rata-rata obyek yang tersisa dengan nilai rata-rata
dari splinter group:
Tabel 2.2 Difference tahap 1
Objects Average dissimilarity
to the other objects
Average dissimilarity to
objects of splinter group Difference
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
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
Objects Average dissimilarity
to the other objects
Average dissimilarity to
objects of splinter group Difference
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
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}.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
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 rata-
rata dari splinter group seperti dalam Tabel 2.5:
Tabel 2.5 Difference tahap 3
Objects Average dissimilarity
to the other objects
Average dissimilarity to
objects of splinter group Difference
d 3.0 4.00 -1.00
e 3.0 5.00 -2.00
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
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,b,c,d,e
a,b
c,d,e c
d,e
a
b
Gambar 2
Gambar 2.2. Gambar Ilustrasi Algoritma Divisive
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
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):
∑ ∑ ‖ ‖
(2.5)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
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 (‖ ‖) … b
6. Hitung … c
7. c dijumlahkan untuk setiap cluster k … d
8. Jumlahkan total d di matriks K
9. Selesai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
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 PreprocessingPerhitungan
JarakDivisive 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
BAB IV
ANALISIS DAN PERANCANGAN SISTEM
BAB IV ANALISIS DAN P ERANCANGAN SISTEM
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
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
HalamanManual
HalamanTentang
ControlRangeHarga
KoneksiDB
User
HalamanUtama
RangeHarga
verteks
DataObyek
Divisive
Gambar 5 Gambar 4.1. Diagram kelas anaisis system
Tabel 7 Tabel 4.1 Tabel penjelasan diagram kelas analisis
No Nama kelas Jenis Keterangan
1 controlRangeHarga Controller Kelas berisi query untuk menyimpan nilai range
harga, mengupdate nilai range harga, menghapus dat
range harga, dan menampilkan nilai range harga
yang sudah ada dari database.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
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 fungsi-
fungsi 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
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
memiliki
memanggil
<<entity>>RangeHarga
<<control>>controlRangeHarga
memiliki 1 *
11
<<control>>KoneksiDB
memanggil
memanggil
1
1
1
<<entity>>Verteks
<<entity>>Divisive
<<entity>>DataObyek
memanggil
memiliki 1 *
1 *
1
1
1 *
memanggil
memanggil
<<view>>HalamanTentang
1
<<view>>HalamanBantuan
1
memanggil1
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
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 2004 2005
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
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.
SISTEM PREDIKSI PENJUALAN HELMMENGGUNAKAN ALGORITMA HIERARCHICAL DIVISIVE
LOGO
Range Harga Preprosesing Clustering
Kelompok harga
Kelompok – 1
Kelompok – 2
Kelompok – 3
Kelompok – 4
Kelompok - 5
Batas bawah Batas Atas
Simpan Reset
Delete isi
Keluar Bantuan
Gambar 7 Gambar 4.3. Desain interface Halaman Utama tab Range Harga
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
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.
Kelompok harga
Kelompok – 1
Kelompok – 2
Kelompok – 3
Kelompok – 4
Kelompok - 5
Batas bawah Batas Atas
Simpan Reset
Delete isi
Range Harga Preprosesing Clustering
Gambar 8 Gambar 4.4. Desain interface Tab Range Harga
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Range Harga Preprosesing Clustering
Input data
Pilih File
Tabel data
Submit Data
Jumlah Data
Tabel data preprocessing
Proses
Jumlah Data preprocessing
Data Preprocessing
Batal
Tabel Transformasi data
Trasformasi data
Preprocessing
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Range Harga Preprosesing Clustering
simpanWaktu Pembantukan Cluster
Tabel jumlah clsuter
Tree
Tabel Label anggota clsuter
SISTEM PREDIKSI PENJUALAN HELMMENGGUNAKAN ALGORITMA HIERARCHICAL DIVISIVE
LOGO
Menu
Total SSE
Gambar 10 Gambar 4.6. Desain interface Halaman Utama Tab Custering
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
BAB V
IMPLEMENTASI DAN ANALISIS HASIL
BAB V MPLEMENTA SI DAN ANALISIS HA SIL
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
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 Tabel 5.2 Atribut hasil seleksi
No Nama Atribut Keterangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
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 quantity-
nya 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
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 Kelompok
Harga
Total
quantity
GM EVO HELLO KITTY #4 WH 1 2.0
GM EVO HELLO KITTY #5 - SR PINK 1 4.0
GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED 1 3.0
GM EVO ANGRY BIRD #3 - SR WH/RED 1 2.0
GM EVO MICKEY MOUSE # 10 - WH 1 1.0
GM EVO ROSSI - SR BK 1 1.0
GM NEW IMPREZZA GENT - 2V RED/BK 2 2.0
GM NEW IMPREZZA GEN - 2V BL MET BK 2 1.0
GM NEW IMPREZZA GENT - 2V WH/BK 2 1.0
NHK PREDATOR 2 VISOR SOLID - 2V WH 3 1.0
NHK PREDATOR 2 VISOR SOLID - 2V PP 3 1.0
NHK PREDATOR 2 VISOR SOLID - 2V R. RED 3 2.0
GM AIRBORNE SOLID - 2V GUN MET 3 1.0
GM AIRBORNE SOLID - 2V WH 3 1.0
GM SUPERCROSS NEUTRON - NV WH/RED 4 1.0
GM SUPERCROSS NEUTRON - WH/PP 4 1.0
NHK TERMINATOR SOLID 2V - RED F 4 2.0
GM SUPERCROSS NEUTRON - NV WH/GREEN 4 1.0
GM SUPERCROSS NEUTRON - NV WH/GOLD 4 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 obyek-
obyek 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Gambar 12 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.
0
50,000
100,000
150,000
200,000
250,000
300,000
350,000
2 3 4 5 6 7 8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
5.1.3.1 Implementasi Halaman Utama
Gambar 13 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
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 Tabel 5.4. Implementasi Kelas
No. Nama 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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
5.1.4. Implementasi Struktur Data
Tahapan ini berisi tentang implementasi struktur data yang di gunakan
sistem ini.
5.1.3.1 Implementasi Kelas Verteks.java
Kelas verteks merupakan kelas yang menyimpan setiap objek data ke
dalam verteks. Dalam kelas ini terdapat 2 atribut untuk menyimpan data objek.
Atribut yang pertama adalah label. Atribut ini berfungsi untuk menyimpan label
pada setiap objek. Atribut kedua adalah nilai, atribut ini berfungsi untuk
menyimpan nilai dari setiap objek.
5.1.3.2 Implementasi Kelas Divisive.java
Kelas divisive merupakan kelas yang digunakan untuk
mengimplementasikan algoritma divisive, yaitu dalam melakukan proses
clustering itu sendiri. Dalam kelas divisive terdapat edge yang berfungsi untuk
menghubungkan verteks. Kelas divisive memiliki konstruktor sendiri yang
berfungsi sebagai ukuran maksimum dari verteks, method ini memiliki parameter
masukan yaitu maxVerteks.
public Divisive (int maxVertex) {
verteksList = new Verteks[maxVertex];
adjMat = new double[maxVertex][maxVertex];
for (int i = 0; i < adjMat.length; i++) {
for (int j = 0; j < adjMat.length; j++) {
if (i == j) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
adjMat[i][j] = 0.0;
} else {
adjMat[i][j] = inf;
}
}
}
}
Dalam konstruktor ini adjMat di definisikan sebagai edge yang akan
menghubungkan vertex. Setelah membuat matriks, langah selanjutnya adalah
memasukan vertex ke dalam kedalam matriks menggunakan method addVerteks.
Dalam method ini menggunakan dua parameter masukan yaitu label dan nilai.
Pada tahap ini setiap objek dimasukan kedalam vertex.
public void 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;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Perhitungan jarak Euclidean menggunakan method cariJarakEuclidean.
Method ini memiliki parameter masukan indexAwal dan indexAkhir yang
berfungsi untuk menandai dimulai dan diakhirinya indeks yang di hitung jaraknya.
public Double 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[];
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
public Verteks LabelMatriksAkhir[];
public Verteks LabelSplinterAkhir[];
public double adjMat[][];
public double DataMatriks[][];
public double DataSplinter[][];
public double DataMatriksAkhir[][];
public double DataSplinterAkhir[][];
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
5.2. Analisis Hasil
Dalam penelitian ini pengelompokan digunakan dengan divisive
clustering. Setelah data melewati tahap preprocessing selanjutanya data diproses
menggunakan algoritma divisive clustering. Data transakasi penjualan sebelumnya
berjumlah 834 dengan aktribut 21 kemudian di seleksi menjadi 834 data dengan 7
atribut setelah di proses melalui proses preprocessing menjadi 159 jumlah data
dan 3 atribut. Hasil data dari preprocessing tersebutlah yang akan diproses
menggunakan algoritma divisive. Untuk mengetahui sejauh mana pengelompokan
yang dilakukan adalah baik maka dilakukan uji akurasi dari pembentukan
kelompok dengan menggunakan internal evaluation. Setiap pembentukan
kelompok tersebut diuji dengan menggunakan metode sum of square error (SSE).
Sistem yang dibuat menggunakan algoritma divisive clustering ini dimulai
dari satu cluster besar yaitu matriks hasil dari perhitungan menggunakan jarak
euclidean. Hasil dari setiap pembentukan cluster ditampilkan dalam tabel-tabel,
Jtree sebagai visualisasi clustering agar tergambar proses dari
pengelompokannya. Sejalan proses clustering SSE akan dihitung. Hasil
perhitungan SSE pembentukan kelompok akan ditampilkan totalnya oleh sistem.
Berdasarkan pada pembentukan kelompok yang memiliki nilai SSE terendah
dapat dikatakan bahwa kelompok tersebut baik. Hasil langkah percobaan disajikan
pada Tabel 5.5 dan Gambar 5.10. Untuk mengetahui nilai SSE adalah statis,
dilakukan samapi dengan 5 kali pengulangan pembentukan cluster pada setiap
percobaan. Hasil dari percobaan tersebuat dilampirkan pada lampiran 7.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
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.
Gambar 20 Gambar 5.10. Analisis – Grafik Hasil SSE
Jumlah obyek data untuk pembentukan 8 kelompok dengan divisive
clustering dapat dilihat dalam Tabel 5.6.
T
0
50,000
100,000
150,000
200,000
250,000
300,000
350,000
2 3 4 5 6 7 8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
abel 15 Tabel 5.6. Hasil Clustering Divisive untuk 159 data
Cluster Jumlah
anggota Label Anggota
Cluster 1 19
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 -
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
Cluster 2 37
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
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
Cluster 3 23
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
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
Cluster 4 14
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
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
Cluster 5 20
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;
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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
NHK REVENTOR SOLID 2V - BK; NHK X-2 SOLID - 2V GUN; VOG NAVIGATOR SOLID - 2V ICE BL
Cluster 6 19
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
IMPREZZA SOLID - 2V BL; GM STARTECH SOLID BK; GM STARTECH SOLID GUN; NHK PREDATOR SOLID
- 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 5 ASCA MOTIF PROTECH - 2V WH/YL; GM EVO MICKEY MOUSE # 10 - WH; VOG FREEWAY SOLID - 2V ICE
BL; VOG TURBO SOLID - CL GUN M; VOG XTRAIL SOLID - CL RED F
Cluster 8 22
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
BIRD # 1 SR - WH/RED; MAZ TREVIA HELLO KITTY #3 WH; MIX SPORTY SOLID - 2V BK; MIX SPORTY
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Gambar 5.11 dibawah ini adalah anggota berserta ciri karakternya yang
diambil berdasarkan informasi data yang terkait dari masing-masing cluster:
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster
Kelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 30 114000 GM TEEN BATMAN #2 - SR WH KUL Cluster 4 3 2 314750 NHK PREDATOR 2 VISOR SOLID - 2V PP SLM
Cluster 1 1 24 114000 GM TEEN HELLO KITTY #1 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V R. RED SLM
Cluster 1 1 50 114000 GM TEEN HELLO KITTY #2 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V WH SLM
Cluster 1 1 46 145000 VOG XTREAM - CL BK SLM Cluster 4 3 2 318750 NHK PREDATOR 2 VISOR SOLID - 2V FLT/BK YOG
Cluster 1 1 22 145000 VOG XTREAM - CL BK/DF YOG Cluster 4 3 2 350000 NHK GP 1000 SOLID - 2V PP SLM
Cluster 1 1 34 145000 VOG XTREAM - CL GUN MET SLM Cluster 4 3 2 371000 GM AIRBORNE SOLID - 2V GUN MET SLM
Cluster 1 1 43 145000 VOG XTREAM - CL ICE BL SLM Cluster 4 3 3 371000 GM AIRBORNE SOLID - 2V WH YOG
Cluster 1 1 24 145000 VOG XTREAM - CL PINK CT GKD Cluster 4 4 2 403500 NHK TERMINATOR SOLID 2V - RED F SLM
Cluster 1 1 21 145000 VOG XTREAM - CL PP SLM Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V GUN SLM
Cluster 1 1 35 145000 VOG XTREAM - CL R. RED KUL Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V WH SLM
Cluster 1 1 41 145000 VOG XTREAM - CL WH SLM Cluster 4 4 3 418750 GM SUPERCROSS NEUTRON - NV WH/SIL SLM
Cluster 1 1 19 157750 MAZ VISTRO SOLID 2V - BK GKD Cluster 4 4 3 420500 NHK TERMINATOR RX 805 - 2V WH/SIL SLM
Cluster 1 1 20 157750 MAZ VISTRO SOLID 2V - RYL RED GKD Cluster 4 4 2 422000 NHK GODZILLA SOLID - 2V RYL RED SLM
Cluster 1 1 21 157750 MAZ VISTRO SOLID 2V - WH GKD Cluster 4 4 1 425500 NHK TERMINATOR STARBASE - 2V WH GKD
Cluster 1 1 34 167500 GM EVO SOLID - SR BK SLM
Cluster 1 1 22 167500 GM EVO SOLID - SR PP SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 26 167500 GM EVO SOLID - SR RYL RED KUL Cluster 5 1 4 103500 ASCA ASTRO SOLID WH KUL
Cluster 1 2 22 204000 GM FIGHTER SOLID - SR BK SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN KUL
Cluster 1 2 27 204000 GM FIGHTER SOLID - SR WH SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RYL RED KUL
Cluster 5 1 4 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 5 1 4 170250 VOG TURBO SOLID - CL BK SLM
Cluster 2 1 15 101500 ASCA ASTRO SOLID RYL RED KUL Cluster 5 1 3 170250 VOG TURBO SOLID - CL WH SLM
Cluster 2 1 15 103500 ASCA ASTRO SOLID BK KUL Cluster 5 1 3 180250 MAZ PRIUSS*SOLID R -2V RY RED GKD
Cluster 2 1 13 103500 ASCA ASTRO SOLID GUN KUL Cluster 5 1 4 190500 GM EVO HELLO KITTY #5 - SR PINK YOG
Cluster 2 1 17 114000 GM TEEN ANGRY BIRD #1 - SR WH/RED KUL Cluster 5 1 3 190500 GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED KUL
Cluster 2 1 11 114000 GM TEEN ANGRY BIRD #1 - SR WH/YL KUL Cluster 5 2 4 204000 GM FIGHTER SOLID - RED F SLM
Cluster 2 1 16 114000 GM TEEN HELLO KITTY #3 - SR WH YOG Cluster 5 2 3 209750 VOG NAVIGATOR SOLID - 2V ICE BL SLM
Cluster 2 1 10 131500 ASCA PREMIER SOLID - 2V BK GKD Cluster 5 2 3 237500 NHK R-6 BEYOND WH/GR SLM
Cluster 2 1 8 131500 ASCA PREMIER SOLID - 2V WH GKD Cluster 5 2 3 237500 NHK R6 RALLY - BK/SIL YOG
Cluster 2 1 11 133750 ASCA PREMIER SOLID - 2V GUN GKD Cluster 5 2 3 237500 NHK R-6 RALLY - CL WH/SIL SLM
Cluster 2 1 17 145000 VOG XTREAM - CL RED F SLM Cluster 5 2 4 241250 GM INTERCEPTOR SOLID - 2V RYL RED KUL
Cluster 2 1 8 155250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V WH YOG Cluster 5 2 4 244500 GM INTERCEPTOR SOLID - 2V BK/DOF KUL
Cluster 2 1 9 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL SLM Cluster 5 2 4 252750 NHK X-2 SOLID - 2V GUN SLM
Cluster 2 1 9 157750 MAZ VISTRO SOLID 2V - RED GKD Cluster 5 2 4 270250 NHK GLADIATOR SOLID - 2V WH SLM
Cluster 2 1 8 158500 MAZ VISTRO SOLID - PINK GKD Cluster 5 2 3 272000 NHK PREDATOR SOLID - CL FLAT BK YOG
Cluster 2 1 17 167500 GM EVO SOLID - SR BL YOG Cluster 5 2 3 286250 NHK REVENTOR SOLID 2V - BK SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR DGM SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR GUN M SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 2 1 13 167500 GM EVO SOLID - SR WH YOG Cluster 6 2 2 209750 VOG NAVIGATOR SOLID - 2V RED F GKD
Cluster 2 2 12 204000 GM FIGHTER SOLID - SR DGM SLM Cluster 6 2 2 213500 GM CITYLIGHT SOLID - 2 V - RED F SLM
Cluster 2 2 14 206750 VOG NAVIGATOR SOLID - 2V BK GKD Cluster 6 2 1 221000 NHK R-6 SOLID - CL WH GKD
Cluster 2 2 13 206750 VOG NAVIGATOR SOLID - 2V GUN M GKD Cluster 6 2 2 224000 NHK R-6 SOLID - CL RYL RE GKD
Cluster 2 2 10 207000 GM FIGHTER SOLID - SR RYL RED KUL Cluster 6 2 2 237500 NHK R-6 LOTUS - CL WH SLM
Cluster 2 2 11 209750 VOG NAVIGATOR SOLID - 2V PP SLM Cluster 6 2 1 240750 NHK R6 BEYOND - WH/RED SLM
Cluster 2 2 8 209750 VOG NAVIGATOR SOLID - 2V WH GKD Cluster 6 2 2 240750 NHK R6 RALLY - CL BK/BL KUL
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/BL KUL Cluster 6 2 1 240750 NHK R-6 RALLY - CL WH/BL SLM
Cluster 2 2 11 222750 VOG NAVIGATOR PICLET - 2V BK/RED YOG Cluster 6 2 2 252750 NHK X-2 SOLID - 2V RYL RED SLM
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/SIL YOG Cluster 6 2 1 264250 GM STARTECH SOLID BK SLM
Cluster 2 2 8 241250 GM INTERCEPTOR SOLID - 2V WH YOG Cluster 6 2 1 264250 GM STARTECH SOLID GUN KUL
Cluster 2 2 8 270250 NHK GLADIATOR SOLID - 2V GUN SLM Cluster 6 2 2 272000 GM NEW IMPREZZA SOLID - 2V BK/DOF KUL
Cluster 2 2 8 272000 GM NEW IMPREZZA SOLID - 2V BK SLM Cluster 6 2 1 272000 NHK PREDATOR SOLID - CL WH YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V GUN SLM Cluster 6 2 1 275500 GM NEW IMPREZZA SOLID - 2V BL YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V RYL RED KUL Cluster 6 2 2 281500 NHK R-6 X-807 - CL YL FLO/BK KUL
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V WH SLM Cluster 6 2 2 286250 NHK REVENTOR SOLID WH SLM
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - NV WH/GOLD YOG Cluster 6 2 2 294750 GM NEW IMPREZZA GEN - 2V BL MET BK GKD
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/GREEN SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V RED/BK KUL
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/RED SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V WH/BK GKD
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - WH/PP GKD
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 7 1 1 145000 ASCA MOTIF PROTECH - 2V WH/YL YOG
Cluster 3 1 6 133750 ASCA PREMIER SOLID - 2V PP KUL Cluster 7 1 1 155000 VOG XTRAIL SOLID - CL RED F GKD
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL GUN M GKD Cluster 7 1 1 170250 VOG TURBO SOLID - CL GUN M SLM
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL WH GKD Cluster 7 1 1 180500 VOG FREEWAY SOLID - 2V ICE BL SLM
Cluster 3 1 7 155250 VOG XTREAM 2VSR SOLID/MEKANIK-2V BK KUL Cluster 7 1 1 190500 GM EVO MICKEY MOUSE # 10 - WH SLM
Cluster 3 1 6 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK GKD
Cluster 3 1 6 167500 GM EVO SOLID - SR PINK CUTE SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 3 1 6 180250 MAZ PRIUSS * SOLID R - 2V GUN GKD Cluster 8 1 2 116000 GM TEEN SNOW WHITE #2 - SR WH GKD
Cluster 3 2 6 206750 VOG NAVIGATOR SOLID - 2V RYL RED GKD Cluster 8 1 2 133750 ASCA PREMIER SOLID - 2V RED F KUL
Cluster 3 2 6 209750 VOG NAVIGATOR SOLID - 2V BK/DOF GKD Cluster 8 1 2 145000 ASCA MOTIF X-3 - 2V WH/GR KUL
Cluster 3 2 5 225750 VOG NAVIGATOR PICLET - 2V WH/BL YOG Cluster 8 1 2 147250 VOG XTREAM - CL PINK GKD
Cluster 3 2 6 225750 VOG NAVIGATOR PICLET - 2V WH/SIL YOG Cluster 8 1 2 151250 MAZ TREVIA HELLO KITTY #3 WH KUL
Cluster 3 2 7 241250 GM INTERCEPTOR SOLID - 2V BK KUL Cluster 8 1 2 153750 MAZ TREVIA ANGRY BIRD # 1 SR - WH/RED YOG
Cluster 3 2 5 241250 GM INTERCEPTOR SOLID - 2V GUN M YOG Cluster 8 1 2 155000 VOG XTRAIL SOLID - CL BK GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V BK SLM Cluster 8 1 2 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V BLUE GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V PP SLM Cluster 8 1 2 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F KUL
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL BK YOG Cluster 8 1 2 170250 VOG TURBO SOLID - CL PP SLM
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL GUN M YOG Cluster 8 1 2 171250 MIX SPORTY SOLID - 2V BK GKD
Cluster 3 2 5 272000 NHK PREDATOR SOLID - CL RYL RED YOG Cluster 8 1 2 172250 VOG TURBO SOLID - CL BK/DOF GKD
Cluster 3 2 6 277750 NHK R6 LOTUSS - ORG/FLO SLM Cluster 8 1 2 173750 MIX SPORTY SOLID - 2V RYL RED KUL
Cluster 3 2 5 277750 NHK R-6 ROSSI - CL GR/FLO SLM Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V BK GKD
Cluster 3 3 5 350000 NHK GP 1000 SOLID - 2V WH YOG Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V WH GKD
Cluster 3 4 7 417000 NHK GODZILLA SOLID - 2V BK SLM Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V PP SLM
Cluster 3 4 5 425500 NHK TERMINATOR LOTUS 2V - WH YOG Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V RYL RED KUL
Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V WH KUL
Cluster 8 1 2 187750 GM EVO ANGRY BIRD #3 - SR WH/RED GKD
Cluster 8 1 2 187750 GM EVO HELLO KITTY # 3 - WH YOG
Cluster 8 1 2 187750 GM EVO ROSSI - SR BK KUL
Cluster 8 1 2 190500 GM EVO HELLO KITTY #4 WH KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster
Kelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 30 114000 GM TEEN BATMAN #2 - SR WH KUL Cluster 4 3 2 314750 NHK PREDATOR 2 VISOR SOLID - 2V PP SLM
Cluster 1 1 24 114000 GM TEEN HELLO KITTY #1 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V R. RED SLM
Cluster 1 1 50 114000 GM TEEN HELLO KITTY #2 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V WH SLM
Cluster 1 1 46 145000 VOG XTREAM - CL BK SLM Cluster 4 3 2 318750 NHK PREDATOR 2 VISOR SOLID - 2V FLT/BK YOG
Cluster 1 1 22 145000 VOG XTREAM - CL BK/DF YOG Cluster 4 3 2 350000 NHK GP 1000 SOLID - 2V PP SLM
Cluster 1 1 34 145000 VOG XTREAM - CL GUN MET SLM Cluster 4 3 2 371000 GM AIRBORNE SOLID - 2V GUN MET SLM
Cluster 1 1 43 145000 VOG XTREAM - CL ICE BL SLM Cluster 4 3 3 371000 GM AIRBORNE SOLID - 2V WH YOG
Cluster 1 1 24 145000 VOG XTREAM - CL PINK CT GKD Cluster 4 4 2 403500 NHK TERMINATOR SOLID 2V - RED F SLM
Cluster 1 1 21 145000 VOG XTREAM - CL PP SLM Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V GUN SLM
Cluster 1 1 35 145000 VOG XTREAM - CL R. RED KUL Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V WH SLM
Cluster 1 1 41 145000 VOG XTREAM - CL WH SLM Cluster 4 4 3 418750 GM SUPERCROSS NEUTRON - NV WH/SIL SLM
Cluster 1 1 19 157750 MAZ VISTRO SOLID 2V - BK GKD Cluster 4 4 3 420500 NHK TERMINATOR RX 805 - 2V WH/SIL SLM
Cluster 1 1 20 157750 MAZ VISTRO SOLID 2V - RYL RED GKD Cluster 4 4 2 422000 NHK GODZILLA SOLID - 2V RYL RED SLM
Cluster 1 1 21 157750 MAZ VISTRO SOLID 2V - WH GKD Cluster 4 4 1 425500 NHK TERMINATOR STARBASE - 2V WH GKD
Cluster 1 1 34 167500 GM EVO SOLID - SR BK SLM
Cluster 1 1 22 167500 GM EVO SOLID - SR PP SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 26 167500 GM EVO SOLID - SR RYL RED KUL Cluster 5 1 4 103500 ASCA ASTRO SOLID WH KUL
Cluster 1 2 22 204000 GM FIGHTER SOLID - SR BK SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN KUL
Cluster 1 2 27 204000 GM FIGHTER SOLID - SR WH SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RYL RED KUL
Cluster 5 1 4 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 5 1 4 170250 VOG TURBO SOLID - CL BK SLM
Cluster 2 1 15 101500 ASCA ASTRO SOLID RYL RED KUL Cluster 5 1 3 170250 VOG TURBO SOLID - CL WH SLM
Cluster 2 1 15 103500 ASCA ASTRO SOLID BK KUL Cluster 5 1 3 180250 MAZ PRIUSS*SOLID R -2V RY RED GKD
Cluster 2 1 13 103500 ASCA ASTRO SOLID GUN KUL Cluster 5 1 4 190500 GM EVO HELLO KITTY #5 - SR PINK YOG
Cluster 2 1 17 114000 GM TEEN ANGRY BIRD #1 - SR WH/RED KUL Cluster 5 1 3 190500 GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED KUL
Cluster 2 1 11 114000 GM TEEN ANGRY BIRD #1 - SR WH/YL KUL Cluster 5 2 4 204000 GM FIGHTER SOLID - RED F SLM
Cluster 2 1 16 114000 GM TEEN HELLO KITTY #3 - SR WH YOG Cluster 5 2 3 209750 VOG NAVIGATOR SOLID - 2V ICE BL SLM
Cluster 2 1 10 131500 ASCA PREMIER SOLID - 2V BK GKD Cluster 5 2 3 237500 NHK R-6 BEYOND WH/GR SLM
Cluster 2 1 8 131500 ASCA PREMIER SOLID - 2V WH GKD Cluster 5 2 3 237500 NHK R6 RALLY - BK/SIL YOG
Cluster 2 1 11 133750 ASCA PREMIER SOLID - 2V GUN GKD Cluster 5 2 3 237500 NHK R-6 RALLY - CL WH/SIL SLM
Cluster 2 1 17 145000 VOG XTREAM - CL RED F SLM Cluster 5 2 4 241250 GM INTERCEPTOR SOLID - 2V RYL RED KUL
Cluster 2 1 8 155250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V WH YOG Cluster 5 2 4 244500 GM INTERCEPTOR SOLID - 2V BK/DOF KUL
Cluster 2 1 9 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL SLM Cluster 5 2 4 252750 NHK X-2 SOLID - 2V GUN SLM
Cluster 2 1 9 157750 MAZ VISTRO SOLID 2V - RED GKD Cluster 5 2 4 270250 NHK GLADIATOR SOLID - 2V WH SLM
Cluster 2 1 8 158500 MAZ VISTRO SOLID - PINK GKD Cluster 5 2 3 272000 NHK PREDATOR SOLID - CL FLAT BK YOG
Cluster 2 1 17 167500 GM EVO SOLID - SR BL YOG Cluster 5 2 3 286250 NHK REVENTOR SOLID 2V - BK SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR DGM SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR GUN M SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 2 1 13 167500 GM EVO SOLID - SR WH YOG Cluster 6 2 2 209750 VOG NAVIGATOR SOLID - 2V RED F GKD
Cluster 2 2 12 204000 GM FIGHTER SOLID - SR DGM SLM Cluster 6 2 2 213500 GM CITYLIGHT SOLID - 2 V - RED F SLM
Cluster 2 2 14 206750 VOG NAVIGATOR SOLID - 2V BK GKD Cluster 6 2 1 221000 NHK R-6 SOLID - CL WH GKD
Cluster 2 2 13 206750 VOG NAVIGATOR SOLID - 2V GUN M GKD Cluster 6 2 2 224000 NHK R-6 SOLID - CL RYL RE GKD
Cluster 2 2 10 207000 GM FIGHTER SOLID - SR RYL RED KUL Cluster 6 2 2 237500 NHK R-6 LOTUS - CL WH SLM
Cluster 2 2 11 209750 VOG NAVIGATOR SOLID - 2V PP SLM Cluster 6 2 1 240750 NHK R6 BEYOND - WH/RED SLM
Cluster 2 2 8 209750 VOG NAVIGATOR SOLID - 2V WH GKD Cluster 6 2 2 240750 NHK R6 RALLY - CL BK/BL KUL
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/BL KUL Cluster 6 2 1 240750 NHK R-6 RALLY - CL WH/BL SLM
Cluster 2 2 11 222750 VOG NAVIGATOR PICLET - 2V BK/RED YOG Cluster 6 2 2 252750 NHK X-2 SOLID - 2V RYL RED SLM
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/SIL YOG Cluster 6 2 1 264250 GM STARTECH SOLID BK SLM
Cluster 2 2 8 241250 GM INTERCEPTOR SOLID - 2V WH YOG Cluster 6 2 1 264250 GM STARTECH SOLID GUN KUL
Cluster 2 2 8 270250 NHK GLADIATOR SOLID - 2V GUN SLM Cluster 6 2 2 272000 GM NEW IMPREZZA SOLID - 2V BK/DOF KUL
Cluster 2 2 8 272000 GM NEW IMPREZZA SOLID - 2V BK SLM Cluster 6 2 1 272000 NHK PREDATOR SOLID - CL WH YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V GUN SLM Cluster 6 2 1 275500 GM NEW IMPREZZA SOLID - 2V BL YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V RYL RED KUL Cluster 6 2 2 281500 NHK R-6 X-807 - CL YL FLO/BK KUL
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V WH SLM Cluster 6 2 2 286250 NHK REVENTOR SOLID WH SLM
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - NV WH/GOLD YOG Cluster 6 2 2 294750 GM NEW IMPREZZA GEN - 2V BL MET BK GKD
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/GREEN SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V RED/BK KUL
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/RED SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V WH/BK GKD
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - WH/PP GKD
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 7 1 1 145000 ASCA MOTIF PROTECH - 2V WH/YL YOG
Cluster 3 1 6 133750 ASCA PREMIER SOLID - 2V PP KUL Cluster 7 1 1 155000 VOG XTRAIL SOLID - CL RED F GKD
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL GUN M GKD Cluster 7 1 1 170250 VOG TURBO SOLID - CL GUN M SLM
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL WH GKD Cluster 7 1 1 180500 VOG FREEWAY SOLID - 2V ICE BL SLM
Cluster 3 1 7 155250 VOG XTREAM 2VSR SOLID/MEKANIK-2V BK KUL Cluster 7 1 1 190500 GM EVO MICKEY MOUSE # 10 - WH SLM
Cluster 3 1 6 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK GKD
Cluster 3 1 6 167500 GM EVO SOLID - SR PINK CUTE SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 3 1 6 180250 MAZ PRIUSS * SOLID R - 2V GUN GKD Cluster 8 1 2 116000 GM TEEN SNOW WHITE #2 - SR WH GKD
Cluster 3 2 6 206750 VOG NAVIGATOR SOLID - 2V RYL RED GKD Cluster 8 1 2 133750 ASCA PREMIER SOLID - 2V RED F KUL
Cluster 3 2 6 209750 VOG NAVIGATOR SOLID - 2V BK/DOF GKD Cluster 8 1 2 145000 ASCA MOTIF X-3 - 2V WH/GR KUL
Cluster 3 2 5 225750 VOG NAVIGATOR PICLET - 2V WH/BL YOG Cluster 8 1 2 147250 VOG XTREAM - CL PINK GKD
Cluster 3 2 6 225750 VOG NAVIGATOR PICLET - 2V WH/SIL YOG Cluster 8 1 2 151250 MAZ TREVIA HELLO KITTY #3 WH KUL
Cluster 3 2 7 241250 GM INTERCEPTOR SOLID - 2V BK KUL Cluster 8 1 2 153750 MAZ TREVIA ANGRY BIRD # 1 SR - WH/RED YOG
Cluster 3 2 5 241250 GM INTERCEPTOR SOLID - 2V GUN M YOG Cluster 8 1 2 155000 VOG XTRAIL SOLID - CL BK GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V BK SLM Cluster 8 1 2 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V BLUE GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V PP SLM Cluster 8 1 2 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F KUL
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL BK YOG Cluster 8 1 2 170250 VOG TURBO SOLID - CL PP SLM
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL GUN M YOG Cluster 8 1 2 171250 MIX SPORTY SOLID - 2V BK GKD
Cluster 3 2 5 272000 NHK PREDATOR SOLID - CL RYL RED YOG Cluster 8 1 2 172250 VOG TURBO SOLID - CL BK/DOF GKD
Cluster 3 2 6 277750 NHK R6 LOTUSS - ORG/FLO SLM Cluster 8 1 2 173750 MIX SPORTY SOLID - 2V RYL RED KUL
Cluster 3 2 5 277750 NHK R-6 ROSSI - CL GR/FLO SLM Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V BK GKD
Cluster 3 3 5 350000 NHK GP 1000 SOLID - 2V WH YOG Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V WH GKD
Cluster 3 4 7 417000 NHK GODZILLA SOLID - 2V BK SLM Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V PP SLM
Cluster 3 4 5 425500 NHK TERMINATOR LOTUS 2V - WH YOG Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V RYL RED KUL
Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V WH KUL
Cluster 8 1 2 187750 GM EVO ANGRY BIRD #3 - SR WH/RED GKD
Cluster 8 1 2 187750 GM EVO HELLO KITTY # 3 - WH YOG
Cluster 8 1 2 187750 GM EVO ROSSI - SR BK KUL
Cluster 8 1 2 190500 GM EVO HELLO KITTY #4 WH KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster
Kelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 30 114000 GM TEEN BATMAN #2 - SR WH KUL Cluster 4 3 2 314750 NHK PREDATOR 2 VISOR SOLID - 2V PP SLM
Cluster 1 1 24 114000 GM TEEN HELLO KITTY #1 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V R. RED SLM
Cluster 1 1 50 114000 GM TEEN HELLO KITTY #2 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V WH SLM
Cluster 1 1 46 145000 VOG XTREAM - CL BK SLM Cluster 4 3 2 318750 NHK PREDATOR 2 VISOR SOLID - 2V FLT/BK YOG
Cluster 1 1 22 145000 VOG XTREAM - CL BK/DF YOG Cluster 4 3 2 350000 NHK GP 1000 SOLID - 2V PP SLM
Cluster 1 1 34 145000 VOG XTREAM - CL GUN MET SLM Cluster 4 3 2 371000 GM AIRBORNE SOLID - 2V GUN MET SLM
Cluster 1 1 43 145000 VOG XTREAM - CL ICE BL SLM Cluster 4 3 3 371000 GM AIRBORNE SOLID - 2V WH YOG
Cluster 1 1 24 145000 VOG XTREAM - CL PINK CT GKD Cluster 4 4 2 403500 NHK TERMINATOR SOLID 2V - RED F SLM
Cluster 1 1 21 145000 VOG XTREAM - CL PP SLM Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V GUN SLM
Cluster 1 1 35 145000 VOG XTREAM - CL R. RED KUL Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V WH SLM
Cluster 1 1 41 145000 VOG XTREAM - CL WH SLM Cluster 4 4 3 418750 GM SUPERCROSS NEUTRON - NV WH/SIL SLM
Cluster 1 1 19 157750 MAZ VISTRO SOLID 2V - BK GKD Cluster 4 4 3 420500 NHK TERMINATOR RX 805 - 2V WH/SIL SLM
Cluster 1 1 20 157750 MAZ VISTRO SOLID 2V - RYL RED GKD Cluster 4 4 2 422000 NHK GODZILLA SOLID - 2V RYL RED SLM
Cluster 1 1 21 157750 MAZ VISTRO SOLID 2V - WH GKD Cluster 4 4 1 425500 NHK TERMINATOR STARBASE - 2V WH GKD
Cluster 1 1 34 167500 GM EVO SOLID - SR BK SLM
Cluster 1 1 22 167500 GM EVO SOLID - SR PP SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 26 167500 GM EVO SOLID - SR RYL RED KUL Cluster 5 1 4 103500 ASCA ASTRO SOLID WH KUL
Cluster 1 2 22 204000 GM FIGHTER SOLID - SR BK SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN KUL
Cluster 1 2 27 204000 GM FIGHTER SOLID - SR WH SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RYL RED KUL
Cluster 5 1 4 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 5 1 4 170250 VOG TURBO SOLID - CL BK SLM
Cluster 2 1 15 101500 ASCA ASTRO SOLID RYL RED KUL Cluster 5 1 3 170250 VOG TURBO SOLID - CL WH SLM
Cluster 2 1 15 103500 ASCA ASTRO SOLID BK KUL Cluster 5 1 3 180250 MAZ PRIUSS*SOLID R -2V RY RED GKD
Cluster 2 1 13 103500 ASCA ASTRO SOLID GUN KUL Cluster 5 1 4 190500 GM EVO HELLO KITTY #5 - SR PINK YOG
Cluster 2 1 17 114000 GM TEEN ANGRY BIRD #1 - SR WH/RED KUL Cluster 5 1 3 190500 GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED KUL
Cluster 2 1 11 114000 GM TEEN ANGRY BIRD #1 - SR WH/YL KUL Cluster 5 2 4 204000 GM FIGHTER SOLID - RED F SLM
Cluster 2 1 16 114000 GM TEEN HELLO KITTY #3 - SR WH YOG Cluster 5 2 3 209750 VOG NAVIGATOR SOLID - 2V ICE BL SLM
Cluster 2 1 10 131500 ASCA PREMIER SOLID - 2V BK GKD Cluster 5 2 3 237500 NHK R-6 BEYOND WH/GR SLM
Cluster 2 1 8 131500 ASCA PREMIER SOLID - 2V WH GKD Cluster 5 2 3 237500 NHK R6 RALLY - BK/SIL YOG
Cluster 2 1 11 133750 ASCA PREMIER SOLID - 2V GUN GKD Cluster 5 2 3 237500 NHK R-6 RALLY - CL WH/SIL SLM
Cluster 2 1 17 145000 VOG XTREAM - CL RED F SLM Cluster 5 2 4 241250 GM INTERCEPTOR SOLID - 2V RYL RED KUL
Cluster 2 1 8 155250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V WH YOG Cluster 5 2 4 244500 GM INTERCEPTOR SOLID - 2V BK/DOF KUL
Cluster 2 1 9 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL SLM Cluster 5 2 4 252750 NHK X-2 SOLID - 2V GUN SLM
Cluster 2 1 9 157750 MAZ VISTRO SOLID 2V - RED GKD Cluster 5 2 4 270250 NHK GLADIATOR SOLID - 2V WH SLM
Cluster 2 1 8 158500 MAZ VISTRO SOLID - PINK GKD Cluster 5 2 3 272000 NHK PREDATOR SOLID - CL FLAT BK YOG
Cluster 2 1 17 167500 GM EVO SOLID - SR BL YOG Cluster 5 2 3 286250 NHK REVENTOR SOLID 2V - BK SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR DGM SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR GUN M SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 2 1 13 167500 GM EVO SOLID - SR WH YOG Cluster 6 2 2 209750 VOG NAVIGATOR SOLID - 2V RED F GKD
Cluster 2 2 12 204000 GM FIGHTER SOLID - SR DGM SLM Cluster 6 2 2 213500 GM CITYLIGHT SOLID - 2 V - RED F SLM
Cluster 2 2 14 206750 VOG NAVIGATOR SOLID - 2V BK GKD Cluster 6 2 1 221000 NHK R-6 SOLID - CL WH GKD
Cluster 2 2 13 206750 VOG NAVIGATOR SOLID - 2V GUN M GKD Cluster 6 2 2 224000 NHK R-6 SOLID - CL RYL RE GKD
Cluster 2 2 10 207000 GM FIGHTER SOLID - SR RYL RED KUL Cluster 6 2 2 237500 NHK R-6 LOTUS - CL WH SLM
Cluster 2 2 11 209750 VOG NAVIGATOR SOLID - 2V PP SLM Cluster 6 2 1 240750 NHK R6 BEYOND - WH/RED SLM
Cluster 2 2 8 209750 VOG NAVIGATOR SOLID - 2V WH GKD Cluster 6 2 2 240750 NHK R6 RALLY - CL BK/BL KUL
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/BL KUL Cluster 6 2 1 240750 NHK R-6 RALLY - CL WH/BL SLM
Cluster 2 2 11 222750 VOG NAVIGATOR PICLET - 2V BK/RED YOG Cluster 6 2 2 252750 NHK X-2 SOLID - 2V RYL RED SLM
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/SIL YOG Cluster 6 2 1 264250 GM STARTECH SOLID BK SLM
Cluster 2 2 8 241250 GM INTERCEPTOR SOLID - 2V WH YOG Cluster 6 2 1 264250 GM STARTECH SOLID GUN KUL
Cluster 2 2 8 270250 NHK GLADIATOR SOLID - 2V GUN SLM Cluster 6 2 2 272000 GM NEW IMPREZZA SOLID - 2V BK/DOF KUL
Cluster 2 2 8 272000 GM NEW IMPREZZA SOLID - 2V BK SLM Cluster 6 2 1 272000 NHK PREDATOR SOLID - CL WH YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V GUN SLM Cluster 6 2 1 275500 GM NEW IMPREZZA SOLID - 2V BL YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V RYL RED KUL Cluster 6 2 2 281500 NHK R-6 X-807 - CL YL FLO/BK KUL
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V WH SLM Cluster 6 2 2 286250 NHK REVENTOR SOLID WH SLM
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - NV WH/GOLD YOG Cluster 6 2 2 294750 GM NEW IMPREZZA GEN - 2V BL MET BK GKD
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/GREEN SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V RED/BK KUL
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/RED SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V WH/BK GKD
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - WH/PP GKD
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 7 1 1 145000 ASCA MOTIF PROTECH - 2V WH/YL YOG
Cluster 3 1 6 133750 ASCA PREMIER SOLID - 2V PP KUL Cluster 7 1 1 155000 VOG XTRAIL SOLID - CL RED F GKD
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL GUN M GKD Cluster 7 1 1 170250 VOG TURBO SOLID - CL GUN M SLM
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL WH GKD Cluster 7 1 1 180500 VOG FREEWAY SOLID - 2V ICE BL SLM
Cluster 3 1 7 155250 VOG XTREAM 2VSR SOLID/MEKANIK-2V BK KUL Cluster 7 1 1 190500 GM EVO MICKEY MOUSE # 10 - WH SLM
Cluster 3 1 6 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK GKD
Cluster 3 1 6 167500 GM EVO SOLID - SR PINK CUTE SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 3 1 6 180250 MAZ PRIUSS * SOLID R - 2V GUN GKD Cluster 8 1 2 116000 GM TEEN SNOW WHITE #2 - SR WH GKD
Cluster 3 2 6 206750 VOG NAVIGATOR SOLID - 2V RYL RED GKD Cluster 8 1 2 133750 ASCA PREMIER SOLID - 2V RED F KUL
Cluster 3 2 6 209750 VOG NAVIGATOR SOLID - 2V BK/DOF GKD Cluster 8 1 2 145000 ASCA MOTIF X-3 - 2V WH/GR KUL
Cluster 3 2 5 225750 VOG NAVIGATOR PICLET - 2V WH/BL YOG Cluster 8 1 2 147250 VOG XTREAM - CL PINK GKD
Cluster 3 2 6 225750 VOG NAVIGATOR PICLET - 2V WH/SIL YOG Cluster 8 1 2 151250 MAZ TREVIA HELLO KITTY #3 WH KUL
Cluster 3 2 7 241250 GM INTERCEPTOR SOLID - 2V BK KUL Cluster 8 1 2 153750 MAZ TREVIA ANGRY BIRD # 1 SR - WH/RED YOG
Cluster 3 2 5 241250 GM INTERCEPTOR SOLID - 2V GUN M YOG Cluster 8 1 2 155000 VOG XTRAIL SOLID - CL BK GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V BK SLM Cluster 8 1 2 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V BLUE GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V PP SLM Cluster 8 1 2 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F KUL
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL BK YOG Cluster 8 1 2 170250 VOG TURBO SOLID - CL PP SLM
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL GUN M YOG Cluster 8 1 2 171250 MIX SPORTY SOLID - 2V BK GKD
Cluster 3 2 5 272000 NHK PREDATOR SOLID - CL RYL RED YOG Cluster 8 1 2 172250 VOG TURBO SOLID - CL BK/DOF GKD
Cluster 3 2 6 277750 NHK R6 LOTUSS - ORG/FLO SLM Cluster 8 1 2 173750 MIX SPORTY SOLID - 2V RYL RED KUL
Cluster 3 2 5 277750 NHK R-6 ROSSI - CL GR/FLO SLM Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V BK GKD
Cluster 3 3 5 350000 NHK GP 1000 SOLID - 2V WH YOG Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V WH GKD
Cluster 3 4 7 417000 NHK GODZILLA SOLID - 2V BK SLM Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V PP SLM
Cluster 3 4 5 425500 NHK TERMINATOR LOTUS 2V - WH YOG Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V RYL RED KUL
Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V WH KUL
Cluster 8 1 2 187750 GM EVO ANGRY BIRD #3 - SR WH/RED GKD
Cluster 8 1 2 187750 GM EVO HELLO KITTY # 3 - WH YOG
Cluster 8 1 2 187750 GM EVO ROSSI - SR BK KUL
Cluster 8 1 2 190500 GM EVO HELLO KITTY #4 WH KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster
Kelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 30 114000 GM TEEN BATMAN #2 - SR WH KUL Cluster 4 3 2 314750 NHK PREDATOR 2 VISOR SOLID - 2V PP SLM
Cluster 1 1 24 114000 GM TEEN HELLO KITTY #1 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V R. RED SLM
Cluster 1 1 50 114000 GM TEEN HELLO KITTY #2 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V WH SLM
Cluster 1 1 46 145000 VOG XTREAM - CL BK SLM Cluster 4 3 2 318750 NHK PREDATOR 2 VISOR SOLID - 2V FLT/BK YOG
Cluster 1 1 22 145000 VOG XTREAM - CL BK/DF YOG Cluster 4 3 2 350000 NHK GP 1000 SOLID - 2V PP SLM
Cluster 1 1 34 145000 VOG XTREAM - CL GUN MET SLM Cluster 4 3 2 371000 GM AIRBORNE SOLID - 2V GUN MET SLM
Cluster 1 1 43 145000 VOG XTREAM - CL ICE BL SLM Cluster 4 3 3 371000 GM AIRBORNE SOLID - 2V WH YOG
Cluster 1 1 24 145000 VOG XTREAM - CL PINK CT GKD Cluster 4 4 2 403500 NHK TERMINATOR SOLID 2V - RED F SLM
Cluster 1 1 21 145000 VOG XTREAM - CL PP SLM Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V GUN SLM
Cluster 1 1 35 145000 VOG XTREAM - CL R. RED KUL Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V WH SLM
Cluster 1 1 41 145000 VOG XTREAM - CL WH SLM Cluster 4 4 3 418750 GM SUPERCROSS NEUTRON - NV WH/SIL SLM
Cluster 1 1 19 157750 MAZ VISTRO SOLID 2V - BK GKD Cluster 4 4 3 420500 NHK TERMINATOR RX 805 - 2V WH/SIL SLM
Cluster 1 1 20 157750 MAZ VISTRO SOLID 2V - RYL RED GKD Cluster 4 4 2 422000 NHK GODZILLA SOLID - 2V RYL RED SLM
Cluster 1 1 21 157750 MAZ VISTRO SOLID 2V - WH GKD Cluster 4 4 1 425500 NHK TERMINATOR STARBASE - 2V WH GKD
Cluster 1 1 34 167500 GM EVO SOLID - SR BK SLM
Cluster 1 1 22 167500 GM EVO SOLID - SR PP SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 26 167500 GM EVO SOLID - SR RYL RED KUL Cluster 5 1 4 103500 ASCA ASTRO SOLID WH KUL
Cluster 1 2 22 204000 GM FIGHTER SOLID - SR BK SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN KUL
Cluster 1 2 27 204000 GM FIGHTER SOLID - SR WH SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RYL RED KUL
Cluster 5 1 4 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 5 1 4 170250 VOG TURBO SOLID - CL BK SLM
Cluster 2 1 15 101500 ASCA ASTRO SOLID RYL RED KUL Cluster 5 1 3 170250 VOG TURBO SOLID - CL WH SLM
Cluster 2 1 15 103500 ASCA ASTRO SOLID BK KUL Cluster 5 1 3 180250 MAZ PRIUSS*SOLID R -2V RY RED GKD
Cluster 2 1 13 103500 ASCA ASTRO SOLID GUN KUL Cluster 5 1 4 190500 GM EVO HELLO KITTY #5 - SR PINK YOG
Cluster 2 1 17 114000 GM TEEN ANGRY BIRD #1 - SR WH/RED KUL Cluster 5 1 3 190500 GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED KUL
Cluster 2 1 11 114000 GM TEEN ANGRY BIRD #1 - SR WH/YL KUL Cluster 5 2 4 204000 GM FIGHTER SOLID - RED F SLM
Cluster 2 1 16 114000 GM TEEN HELLO KITTY #3 - SR WH YOG Cluster 5 2 3 209750 VOG NAVIGATOR SOLID - 2V ICE BL SLM
Cluster 2 1 10 131500 ASCA PREMIER SOLID - 2V BK GKD Cluster 5 2 3 237500 NHK R-6 BEYOND WH/GR SLM
Cluster 2 1 8 131500 ASCA PREMIER SOLID - 2V WH GKD Cluster 5 2 3 237500 NHK R6 RALLY - BK/SIL YOG
Cluster 2 1 11 133750 ASCA PREMIER SOLID - 2V GUN GKD Cluster 5 2 3 237500 NHK R-6 RALLY - CL WH/SIL SLM
Cluster 2 1 17 145000 VOG XTREAM - CL RED F SLM Cluster 5 2 4 241250 GM INTERCEPTOR SOLID - 2V RYL RED KUL
Cluster 2 1 8 155250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V WH YOG Cluster 5 2 4 244500 GM INTERCEPTOR SOLID - 2V BK/DOF KUL
Cluster 2 1 9 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL SLM Cluster 5 2 4 252750 NHK X-2 SOLID - 2V GUN SLM
Cluster 2 1 9 157750 MAZ VISTRO SOLID 2V - RED GKD Cluster 5 2 4 270250 NHK GLADIATOR SOLID - 2V WH SLM
Cluster 2 1 8 158500 MAZ VISTRO SOLID - PINK GKD Cluster 5 2 3 272000 NHK PREDATOR SOLID - CL FLAT BK YOG
Cluster 2 1 17 167500 GM EVO SOLID - SR BL YOG Cluster 5 2 3 286250 NHK REVENTOR SOLID 2V - BK SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR DGM SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR GUN M SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 2 1 13 167500 GM EVO SOLID - SR WH YOG Cluster 6 2 2 209750 VOG NAVIGATOR SOLID - 2V RED F GKD
Cluster 2 2 12 204000 GM FIGHTER SOLID - SR DGM SLM Cluster 6 2 2 213500 GM CITYLIGHT SOLID - 2 V - RED F SLM
Cluster 2 2 14 206750 VOG NAVIGATOR SOLID - 2V BK GKD Cluster 6 2 1 221000 NHK R-6 SOLID - CL WH GKD
Cluster 2 2 13 206750 VOG NAVIGATOR SOLID - 2V GUN M GKD Cluster 6 2 2 224000 NHK R-6 SOLID - CL RYL RE GKD
Cluster 2 2 10 207000 GM FIGHTER SOLID - SR RYL RED KUL Cluster 6 2 2 237500 NHK R-6 LOTUS - CL WH SLM
Cluster 2 2 11 209750 VOG NAVIGATOR SOLID - 2V PP SLM Cluster 6 2 1 240750 NHK R6 BEYOND - WH/RED SLM
Cluster 2 2 8 209750 VOG NAVIGATOR SOLID - 2V WH GKD Cluster 6 2 2 240750 NHK R6 RALLY - CL BK/BL KUL
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/BL KUL Cluster 6 2 1 240750 NHK R-6 RALLY - CL WH/BL SLM
Cluster 2 2 11 222750 VOG NAVIGATOR PICLET - 2V BK/RED YOG Cluster 6 2 2 252750 NHK X-2 SOLID - 2V RYL RED SLM
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/SIL YOG Cluster 6 2 1 264250 GM STARTECH SOLID BK SLM
Cluster 2 2 8 241250 GM INTERCEPTOR SOLID - 2V WH YOG Cluster 6 2 1 264250 GM STARTECH SOLID GUN KUL
Cluster 2 2 8 270250 NHK GLADIATOR SOLID - 2V GUN SLM Cluster 6 2 2 272000 GM NEW IMPREZZA SOLID - 2V BK/DOF KUL
Cluster 2 2 8 272000 GM NEW IMPREZZA SOLID - 2V BK SLM Cluster 6 2 1 272000 NHK PREDATOR SOLID - CL WH YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V GUN SLM Cluster 6 2 1 275500 GM NEW IMPREZZA SOLID - 2V BL YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V RYL RED KUL Cluster 6 2 2 281500 NHK R-6 X-807 - CL YL FLO/BK KUL
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V WH SLM Cluster 6 2 2 286250 NHK REVENTOR SOLID WH SLM
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - NV WH/GOLD YOG Cluster 6 2 2 294750 GM NEW IMPREZZA GEN - 2V BL MET BK GKD
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/GREEN SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V RED/BK KUL
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/RED SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V WH/BK GKD
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - WH/PP GKD
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 7 1 1 145000 ASCA MOTIF PROTECH - 2V WH/YL YOG
Cluster 3 1 6 133750 ASCA PREMIER SOLID - 2V PP KUL Cluster 7 1 1 155000 VOG XTRAIL SOLID - CL RED F GKD
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL GUN M GKD Cluster 7 1 1 170250 VOG TURBO SOLID - CL GUN M SLM
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL WH GKD Cluster 7 1 1 180500 VOG FREEWAY SOLID - 2V ICE BL SLM
Cluster 3 1 7 155250 VOG XTREAM 2VSR SOLID/MEKANIK-2V BK KUL Cluster 7 1 1 190500 GM EVO MICKEY MOUSE # 10 - WH SLM
Cluster 3 1 6 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK GKD
Cluster 3 1 6 167500 GM EVO SOLID - SR PINK CUTE SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 3 1 6 180250 MAZ PRIUSS * SOLID R - 2V GUN GKD Cluster 8 1 2 116000 GM TEEN SNOW WHITE #2 - SR WH GKD
Cluster 3 2 6 206750 VOG NAVIGATOR SOLID - 2V RYL RED GKD Cluster 8 1 2 133750 ASCA PREMIER SOLID - 2V RED F KUL
Cluster 3 2 6 209750 VOG NAVIGATOR SOLID - 2V BK/DOF GKD Cluster 8 1 2 145000 ASCA MOTIF X-3 - 2V WH/GR KUL
Cluster 3 2 5 225750 VOG NAVIGATOR PICLET - 2V WH/BL YOG Cluster 8 1 2 147250 VOG XTREAM - CL PINK GKD
Cluster 3 2 6 225750 VOG NAVIGATOR PICLET - 2V WH/SIL YOG Cluster 8 1 2 151250 MAZ TREVIA HELLO KITTY #3 WH KUL
Cluster 3 2 7 241250 GM INTERCEPTOR SOLID - 2V BK KUL Cluster 8 1 2 153750 MAZ TREVIA ANGRY BIRD # 1 SR - WH/RED YOG
Cluster 3 2 5 241250 GM INTERCEPTOR SOLID - 2V GUN M YOG Cluster 8 1 2 155000 VOG XTRAIL SOLID - CL BK GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V BK SLM Cluster 8 1 2 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V BLUE GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V PP SLM Cluster 8 1 2 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F KUL
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL BK YOG Cluster 8 1 2 170250 VOG TURBO SOLID - CL PP SLM
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL GUN M YOG Cluster 8 1 2 171250 MIX SPORTY SOLID - 2V BK GKD
Cluster 3 2 5 272000 NHK PREDATOR SOLID - CL RYL RED YOG Cluster 8 1 2 172250 VOG TURBO SOLID - CL BK/DOF GKD
Cluster 3 2 6 277750 NHK R6 LOTUSS - ORG/FLO SLM Cluster 8 1 2 173750 MIX SPORTY SOLID - 2V RYL RED KUL
Cluster 3 2 5 277750 NHK R-6 ROSSI - CL GR/FLO SLM Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V BK GKD
Cluster 3 3 5 350000 NHK GP 1000 SOLID - 2V WH YOG Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V WH GKD
Cluster 3 4 7 417000 NHK GODZILLA SOLID - 2V BK SLM Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V PP SLM
Cluster 3 4 5 425500 NHK TERMINATOR LOTUS 2V - WH YOG Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V RYL RED KUL
Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V WH KUL
Cluster 8 1 2 187750 GM EVO ANGRY BIRD #3 - SR WH/RED GKD
Cluster 8 1 2 187750 GM EVO HELLO KITTY # 3 - WH YOG
Cluster 8 1 2 187750 GM EVO ROSSI - SR BK KUL
Cluster 8 1 2 190500 GM EVO HELLO KITTY #4 WH KUL
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Gambar 21 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 rata-
rata sedang terhadap total quantitynya setelah cluster tiga dan dua dan wilayah
pemasaran dari cluster ini berada di wilayah Sleman dan Kulonprogo. Cluster
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster
Kelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 30 114000 GM TEEN BATMAN #2 - SR WH KUL Cluster 4 3 2 314750 NHK PREDATOR 2 VISOR SOLID - 2V PP SLM
Cluster 1 1 24 114000 GM TEEN HELLO KITTY #1 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V R. RED SLM
Cluster 1 1 50 114000 GM TEEN HELLO KITTY #2 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V WH SLM
Cluster 1 1 46 145000 VOG XTREAM - CL BK SLM Cluster 4 3 2 318750 NHK PREDATOR 2 VISOR SOLID - 2V FLT/BK YOG
Cluster 1 1 22 145000 VOG XTREAM - CL BK/DF YOG Cluster 4 3 2 350000 NHK GP 1000 SOLID - 2V PP SLM
Cluster 1 1 34 145000 VOG XTREAM - CL GUN MET SLM Cluster 4 3 2 371000 GM AIRBORNE SOLID - 2V GUN MET SLM
Cluster 1 1 43 145000 VOG XTREAM - CL ICE BL SLM Cluster 4 3 3 371000 GM AIRBORNE SOLID - 2V WH YOG
Cluster 1 1 24 145000 VOG XTREAM - CL PINK CT GKD Cluster 4 4 2 403500 NHK TERMINATOR SOLID 2V - RED F SLM
Cluster 1 1 21 145000 VOG XTREAM - CL PP SLM Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V GUN SLM
Cluster 1 1 35 145000 VOG XTREAM - CL R. RED KUL Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V WH SLM
Cluster 1 1 41 145000 VOG XTREAM - CL WH SLM Cluster 4 4 3 418750 GM SUPERCROSS NEUTRON - NV WH/SIL SLM
Cluster 1 1 19 157750 MAZ VISTRO SOLID 2V - BK GKD Cluster 4 4 3 420500 NHK TERMINATOR RX 805 - 2V WH/SIL SLM
Cluster 1 1 20 157750 MAZ VISTRO SOLID 2V - RYL RED GKD Cluster 4 4 2 422000 NHK GODZILLA SOLID - 2V RYL RED SLM
Cluster 1 1 21 157750 MAZ VISTRO SOLID 2V - WH GKD Cluster 4 4 1 425500 NHK TERMINATOR STARBASE - 2V WH GKD
Cluster 1 1 34 167500 GM EVO SOLID - SR BK SLM
Cluster 1 1 22 167500 GM EVO SOLID - SR PP SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 26 167500 GM EVO SOLID - SR RYL RED KUL Cluster 5 1 4 103500 ASCA ASTRO SOLID WH KUL
Cluster 1 2 22 204000 GM FIGHTER SOLID - SR BK SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN KUL
Cluster 1 2 27 204000 GM FIGHTER SOLID - SR WH SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RYL RED KUL
Cluster 5 1 4 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 5 1 4 170250 VOG TURBO SOLID - CL BK SLM
Cluster 2 1 15 101500 ASCA ASTRO SOLID RYL RED KUL Cluster 5 1 3 170250 VOG TURBO SOLID - CL WH SLM
Cluster 2 1 15 103500 ASCA ASTRO SOLID BK KUL Cluster 5 1 3 180250 MAZ PRIUSS*SOLID R -2V RY RED GKD
Cluster 2 1 13 103500 ASCA ASTRO SOLID GUN KUL Cluster 5 1 4 190500 GM EVO HELLO KITTY #5 - SR PINK YOG
Cluster 2 1 17 114000 GM TEEN ANGRY BIRD #1 - SR WH/RED KUL Cluster 5 1 3 190500 GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED KUL
Cluster 2 1 11 114000 GM TEEN ANGRY BIRD #1 - SR WH/YL KUL Cluster 5 2 4 204000 GM FIGHTER SOLID - RED F SLM
Cluster 2 1 16 114000 GM TEEN HELLO KITTY #3 - SR WH YOG Cluster 5 2 3 209750 VOG NAVIGATOR SOLID - 2V ICE BL SLM
Cluster 2 1 10 131500 ASCA PREMIER SOLID - 2V BK GKD Cluster 5 2 3 237500 NHK R-6 BEYOND WH/GR SLM
Cluster 2 1 8 131500 ASCA PREMIER SOLID - 2V WH GKD Cluster 5 2 3 237500 NHK R6 RALLY - BK/SIL YOG
Cluster 2 1 11 133750 ASCA PREMIER SOLID - 2V GUN GKD Cluster 5 2 3 237500 NHK R-6 RALLY - CL WH/SIL SLM
Cluster 2 1 17 145000 VOG XTREAM - CL RED F SLM Cluster 5 2 4 241250 GM INTERCEPTOR SOLID - 2V RYL RED KUL
Cluster 2 1 8 155250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V WH YOG Cluster 5 2 4 244500 GM INTERCEPTOR SOLID - 2V BK/DOF KUL
Cluster 2 1 9 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL SLM Cluster 5 2 4 252750 NHK X-2 SOLID - 2V GUN SLM
Cluster 2 1 9 157750 MAZ VISTRO SOLID 2V - RED GKD Cluster 5 2 4 270250 NHK GLADIATOR SOLID - 2V WH SLM
Cluster 2 1 8 158500 MAZ VISTRO SOLID - PINK GKD Cluster 5 2 3 272000 NHK PREDATOR SOLID - CL FLAT BK YOG
Cluster 2 1 17 167500 GM EVO SOLID - SR BL YOG Cluster 5 2 3 286250 NHK REVENTOR SOLID 2V - BK SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR DGM SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR GUN M SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 2 1 13 167500 GM EVO SOLID - SR WH YOG Cluster 6 2 2 209750 VOG NAVIGATOR SOLID - 2V RED F GKD
Cluster 2 2 12 204000 GM FIGHTER SOLID - SR DGM SLM Cluster 6 2 2 213500 GM CITYLIGHT SOLID - 2 V - RED F SLM
Cluster 2 2 14 206750 VOG NAVIGATOR SOLID - 2V BK GKD Cluster 6 2 1 221000 NHK R-6 SOLID - CL WH GKD
Cluster 2 2 13 206750 VOG NAVIGATOR SOLID - 2V GUN M GKD Cluster 6 2 2 224000 NHK R-6 SOLID - CL RYL RE GKD
Cluster 2 2 10 207000 GM FIGHTER SOLID - SR RYL RED KUL Cluster 6 2 2 237500 NHK R-6 LOTUS - CL WH SLM
Cluster 2 2 11 209750 VOG NAVIGATOR SOLID - 2V PP SLM Cluster 6 2 1 240750 NHK R6 BEYOND - WH/RED SLM
Cluster 2 2 8 209750 VOG NAVIGATOR SOLID - 2V WH GKD Cluster 6 2 2 240750 NHK R6 RALLY - CL BK/BL KUL
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/BL KUL Cluster 6 2 1 240750 NHK R-6 RALLY - CL WH/BL SLM
Cluster 2 2 11 222750 VOG NAVIGATOR PICLET - 2V BK/RED YOG Cluster 6 2 2 252750 NHK X-2 SOLID - 2V RYL RED SLM
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/SIL YOG Cluster 6 2 1 264250 GM STARTECH SOLID BK SLM
Cluster 2 2 8 241250 GM INTERCEPTOR SOLID - 2V WH YOG Cluster 6 2 1 264250 GM STARTECH SOLID GUN KUL
Cluster 2 2 8 270250 NHK GLADIATOR SOLID - 2V GUN SLM Cluster 6 2 2 272000 GM NEW IMPREZZA SOLID - 2V BK/DOF KUL
Cluster 2 2 8 272000 GM NEW IMPREZZA SOLID - 2V BK SLM Cluster 6 2 1 272000 NHK PREDATOR SOLID - CL WH YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V GUN SLM Cluster 6 2 1 275500 GM NEW IMPREZZA SOLID - 2V BL YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V RYL RED KUL Cluster 6 2 2 281500 NHK R-6 X-807 - CL YL FLO/BK KUL
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V WH SLM Cluster 6 2 2 286250 NHK REVENTOR SOLID WH SLM
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - NV WH/GOLD YOG Cluster 6 2 2 294750 GM NEW IMPREZZA GEN - 2V BL MET BK GKD
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/GREEN SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V RED/BK KUL
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/RED SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V WH/BK GKD
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - WH/PP GKD
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 7 1 1 145000 ASCA MOTIF PROTECH - 2V WH/YL YOG
Cluster 3 1 6 133750 ASCA PREMIER SOLID - 2V PP KUL Cluster 7 1 1 155000 VOG XTRAIL SOLID - CL RED F GKD
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL GUN M GKD Cluster 7 1 1 170250 VOG TURBO SOLID - CL GUN M SLM
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL WH GKD Cluster 7 1 1 180500 VOG FREEWAY SOLID - 2V ICE BL SLM
Cluster 3 1 7 155250 VOG XTREAM 2VSR SOLID/MEKANIK-2V BK KUL Cluster 7 1 1 190500 GM EVO MICKEY MOUSE # 10 - WH SLM
Cluster 3 1 6 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK GKD
Cluster 3 1 6 167500 GM EVO SOLID - SR PINK CUTE SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 3 1 6 180250 MAZ PRIUSS * SOLID R - 2V GUN GKD Cluster 8 1 2 116000 GM TEEN SNOW WHITE #2 - SR WH GKD
Cluster 3 2 6 206750 VOG NAVIGATOR SOLID - 2V RYL RED GKD Cluster 8 1 2 133750 ASCA PREMIER SOLID - 2V RED F KUL
Cluster 3 2 6 209750 VOG NAVIGATOR SOLID - 2V BK/DOF GKD Cluster 8 1 2 145000 ASCA MOTIF X-3 - 2V WH/GR KUL
Cluster 3 2 5 225750 VOG NAVIGATOR PICLET - 2V WH/BL YOG Cluster 8 1 2 147250 VOG XTREAM - CL PINK GKD
Cluster 3 2 6 225750 VOG NAVIGATOR PICLET - 2V WH/SIL YOG Cluster 8 1 2 151250 MAZ TREVIA HELLO KITTY #3 WH KUL
Cluster 3 2 7 241250 GM INTERCEPTOR SOLID - 2V BK KUL Cluster 8 1 2 153750 MAZ TREVIA ANGRY BIRD # 1 SR - WH/RED YOG
Cluster 3 2 5 241250 GM INTERCEPTOR SOLID - 2V GUN M YOG Cluster 8 1 2 155000 VOG XTRAIL SOLID - CL BK GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V BK SLM Cluster 8 1 2 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V BLUE GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V PP SLM Cluster 8 1 2 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F KUL
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL BK YOG Cluster 8 1 2 170250 VOG TURBO SOLID - CL PP SLM
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL GUN M YOG Cluster 8 1 2 171250 MIX SPORTY SOLID - 2V BK GKD
Cluster 3 2 5 272000 NHK PREDATOR SOLID - CL RYL RED YOG Cluster 8 1 2 172250 VOG TURBO SOLID - CL BK/DOF GKD
Cluster 3 2 6 277750 NHK R6 LOTUSS - ORG/FLO SLM Cluster 8 1 2 173750 MIX SPORTY SOLID - 2V RYL RED KUL
Cluster 3 2 5 277750 NHK R-6 ROSSI - CL GR/FLO SLM Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V BK GKD
Cluster 3 3 5 350000 NHK GP 1000 SOLID - 2V WH YOG Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V WH GKD
Cluster 3 4 7 417000 NHK GODZILLA SOLID - 2V BK SLM Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V PP SLM
Cluster 3 4 5 425500 NHK TERMINATOR LOTUS 2V - WH YOG Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V RYL RED KUL
Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V WH KUL
Cluster 8 1 2 187750 GM EVO ANGRY BIRD #3 - SR WH/RED GKD
Cluster 8 1 2 187750 GM EVO HELLO KITTY # 3 - WH YOG
Cluster 8 1 2 187750 GM EVO ROSSI - SR BK KUL
Cluster 8 1 2 190500 GM EVO HELLO KITTY #4 WH KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster
Kelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 30 114000 GM TEEN BATMAN #2 - SR WH KUL Cluster 4 3 2 314750 NHK PREDATOR 2 VISOR SOLID - 2V PP SLM
Cluster 1 1 24 114000 GM TEEN HELLO KITTY #1 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V R. RED SLM
Cluster 1 1 50 114000 GM TEEN HELLO KITTY #2 - SR WH YOG Cluster 4 3 4 314750 NHK PREDATOR 2 VISOR SOLID - 2V WH SLM
Cluster 1 1 46 145000 VOG XTREAM - CL BK SLM Cluster 4 3 2 318750 NHK PREDATOR 2 VISOR SOLID - 2V FLT/BK YOG
Cluster 1 1 22 145000 VOG XTREAM - CL BK/DF YOG Cluster 4 3 2 350000 NHK GP 1000 SOLID - 2V PP SLM
Cluster 1 1 34 145000 VOG XTREAM - CL GUN MET SLM Cluster 4 3 2 371000 GM AIRBORNE SOLID - 2V GUN MET SLM
Cluster 1 1 43 145000 VOG XTREAM - CL ICE BL SLM Cluster 4 3 3 371000 GM AIRBORNE SOLID - 2V WH YOG
Cluster 1 1 24 145000 VOG XTREAM - CL PINK CT GKD Cluster 4 4 2 403500 NHK TERMINATOR SOLID 2V - RED F SLM
Cluster 1 1 21 145000 VOG XTREAM - CL PP SLM Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V GUN SLM
Cluster 1 1 35 145000 VOG XTREAM - CL R. RED KUL Cluster 4 4 2 417000 NHK GODZILLA SOLID - 2V WH SLM
Cluster 1 1 41 145000 VOG XTREAM - CL WH SLM Cluster 4 4 3 418750 GM SUPERCROSS NEUTRON - NV WH/SIL SLM
Cluster 1 1 19 157750 MAZ VISTRO SOLID 2V - BK GKD Cluster 4 4 3 420500 NHK TERMINATOR RX 805 - 2V WH/SIL SLM
Cluster 1 1 20 157750 MAZ VISTRO SOLID 2V - RYL RED GKD Cluster 4 4 2 422000 NHK GODZILLA SOLID - 2V RYL RED SLM
Cluster 1 1 21 157750 MAZ VISTRO SOLID 2V - WH GKD Cluster 4 4 1 425500 NHK TERMINATOR STARBASE - 2V WH GKD
Cluster 1 1 34 167500 GM EVO SOLID - SR BK SLM
Cluster 1 1 22 167500 GM EVO SOLID - SR PP SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 1 1 26 167500 GM EVO SOLID - SR RYL RED KUL Cluster 5 1 4 103500 ASCA ASTRO SOLID WH KUL
Cluster 1 2 22 204000 GM FIGHTER SOLID - SR BK SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V GUN KUL
Cluster 1 2 27 204000 GM FIGHTER SOLID - SR WH SLM Cluster 5 1 4 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RYL RED KUL
Cluster 5 1 4 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PP KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 5 1 4 170250 VOG TURBO SOLID - CL BK SLM
Cluster 2 1 15 101500 ASCA ASTRO SOLID RYL RED KUL Cluster 5 1 3 170250 VOG TURBO SOLID - CL WH SLM
Cluster 2 1 15 103500 ASCA ASTRO SOLID BK KUL Cluster 5 1 3 180250 MAZ PRIUSS*SOLID R -2V RY RED GKD
Cluster 2 1 13 103500 ASCA ASTRO SOLID GUN KUL Cluster 5 1 4 190500 GM EVO HELLO KITTY #5 - SR PINK YOG
Cluster 2 1 17 114000 GM TEEN ANGRY BIRD #1 - SR WH/RED KUL Cluster 5 1 3 190500 GM EVO LOLA BUNNY & BUGS BUNNY #1 WH/RED KUL
Cluster 2 1 11 114000 GM TEEN ANGRY BIRD #1 - SR WH/YL KUL Cluster 5 2 4 204000 GM FIGHTER SOLID - RED F SLM
Cluster 2 1 16 114000 GM TEEN HELLO KITTY #3 - SR WH YOG Cluster 5 2 3 209750 VOG NAVIGATOR SOLID - 2V ICE BL SLM
Cluster 2 1 10 131500 ASCA PREMIER SOLID - 2V BK GKD Cluster 5 2 3 237500 NHK R-6 BEYOND WH/GR SLM
Cluster 2 1 8 131500 ASCA PREMIER SOLID - 2V WH GKD Cluster 5 2 3 237500 NHK R6 RALLY - BK/SIL YOG
Cluster 2 1 11 133750 ASCA PREMIER SOLID - 2V GUN GKD Cluster 5 2 3 237500 NHK R-6 RALLY - CL WH/SIL SLM
Cluster 2 1 17 145000 VOG XTREAM - CL RED F SLM Cluster 5 2 4 241250 GM INTERCEPTOR SOLID - 2V RYL RED KUL
Cluster 2 1 8 155250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V WH YOG Cluster 5 2 4 244500 GM INTERCEPTOR SOLID - 2V BK/DOF KUL
Cluster 2 1 9 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V ICE BL SLM Cluster 5 2 4 252750 NHK X-2 SOLID - 2V GUN SLM
Cluster 2 1 9 157750 MAZ VISTRO SOLID 2V - RED GKD Cluster 5 2 4 270250 NHK GLADIATOR SOLID - 2V WH SLM
Cluster 2 1 8 158500 MAZ VISTRO SOLID - PINK GKD Cluster 5 2 3 272000 NHK PREDATOR SOLID - CL FLAT BK YOG
Cluster 2 1 17 167500 GM EVO SOLID - SR BL YOG Cluster 5 2 3 286250 NHK REVENTOR SOLID 2V - BK SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR DGM SLM
Cluster 2 1 13 167500 GM EVO SOLID - SR GUN M SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 2 1 13 167500 GM EVO SOLID - SR WH YOG Cluster 6 2 2 209750 VOG NAVIGATOR SOLID - 2V RED F GKD
Cluster 2 2 12 204000 GM FIGHTER SOLID - SR DGM SLM Cluster 6 2 2 213500 GM CITYLIGHT SOLID - 2 V - RED F SLM
Cluster 2 2 14 206750 VOG NAVIGATOR SOLID - 2V BK GKD Cluster 6 2 1 221000 NHK R-6 SOLID - CL WH GKD
Cluster 2 2 13 206750 VOG NAVIGATOR SOLID - 2V GUN M GKD Cluster 6 2 2 224000 NHK R-6 SOLID - CL RYL RE GKD
Cluster 2 2 10 207000 GM FIGHTER SOLID - SR RYL RED KUL Cluster 6 2 2 237500 NHK R-6 LOTUS - CL WH SLM
Cluster 2 2 11 209750 VOG NAVIGATOR SOLID - 2V PP SLM Cluster 6 2 1 240750 NHK R6 BEYOND - WH/RED SLM
Cluster 2 2 8 209750 VOG NAVIGATOR SOLID - 2V WH GKD Cluster 6 2 2 240750 NHK R6 RALLY - CL BK/BL KUL
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/BL KUL Cluster 6 2 1 240750 NHK R-6 RALLY - CL WH/BL SLM
Cluster 2 2 11 222750 VOG NAVIGATOR PICLET - 2V BK/RED YOG Cluster 6 2 2 252750 NHK X-2 SOLID - 2V RYL RED SLM
Cluster 2 2 12 222750 VOG NAVIGATOR PICLET - 2V BK/SIL YOG Cluster 6 2 1 264250 GM STARTECH SOLID BK SLM
Cluster 2 2 8 241250 GM INTERCEPTOR SOLID - 2V WH YOG Cluster 6 2 1 264250 GM STARTECH SOLID GUN KUL
Cluster 2 2 8 270250 NHK GLADIATOR SOLID - 2V GUN SLM Cluster 6 2 2 272000 GM NEW IMPREZZA SOLID - 2V BK/DOF KUL
Cluster 2 2 8 272000 GM NEW IMPREZZA SOLID - 2V BK SLM Cluster 6 2 1 272000 NHK PREDATOR SOLID - CL WH YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V GUN SLM Cluster 6 2 1 275500 GM NEW IMPREZZA SOLID - 2V BL YOG
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V RYL RED KUL Cluster 6 2 2 281500 NHK R-6 X-807 - CL YL FLO/BK KUL
Cluster 2 2 9 272000 GM NEW IMPREZZA SOLID - 2V WH SLM Cluster 6 2 2 286250 NHK REVENTOR SOLID WH SLM
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - NV WH/GOLD YOG Cluster 6 2 2 294750 GM NEW IMPREZZA GEN - 2V BL MET BK GKD
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/GREEN SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V RED/BK KUL
Cluster 2 4 17 414000 GM SUPERCROSS NEUTRON - NV WH/RED SLM Cluster 6 2 2 294750 GM NEW IMPREZZA GENT - 2V WH/BK GKD
Cluster 2 4 9 414000 GM SUPERCROSS NEUTRON - WH/PP GKD
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah Cluster 7 1 1 145000 ASCA MOTIF PROTECH - 2V WH/YL YOG
Cluster 3 1 6 133750 ASCA PREMIER SOLID - 2V PP KUL Cluster 7 1 1 155000 VOG XTRAIL SOLID - CL RED F GKD
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL GUN M GKD Cluster 7 1 1 170250 VOG TURBO SOLID - CL GUN M SLM
Cluster 3 1 5 155000 VOG XTRAIL SOLID - CL WH GKD Cluster 7 1 1 180500 VOG FREEWAY SOLID - 2V ICE BL SLM
Cluster 3 1 7 155250 VOG XTREAM 2VSR SOLID/MEKANIK-2V BK KUL Cluster 7 1 1 190500 GM EVO MICKEY MOUSE # 10 - WH SLM
Cluster 3 1 6 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V PINK GKD
Cluster 3 1 6 167500 GM EVO SOLID - SR PINK CUTE SLM ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 3 1 6 180250 MAZ PRIUSS * SOLID R - 2V GUN GKD Cluster 8 1 2 116000 GM TEEN SNOW WHITE #2 - SR WH GKD
Cluster 3 2 6 206750 VOG NAVIGATOR SOLID - 2V RYL RED GKD Cluster 8 1 2 133750 ASCA PREMIER SOLID - 2V RED F KUL
Cluster 3 2 6 209750 VOG NAVIGATOR SOLID - 2V BK/DOF GKD Cluster 8 1 2 145000 ASCA MOTIF X-3 - 2V WH/GR KUL
Cluster 3 2 5 225750 VOG NAVIGATOR PICLET - 2V WH/BL YOG Cluster 8 1 2 147250 VOG XTREAM - CL PINK GKD
Cluster 3 2 6 225750 VOG NAVIGATOR PICLET - 2V WH/SIL YOG Cluster 8 1 2 151250 MAZ TREVIA HELLO KITTY #3 WH KUL
Cluster 3 2 7 241250 GM INTERCEPTOR SOLID - 2V BK KUL Cluster 8 1 2 153750 MAZ TREVIA ANGRY BIRD # 1 SR - WH/RED YOG
Cluster 3 2 5 241250 GM INTERCEPTOR SOLID - 2V GUN M YOG Cluster 8 1 2 155000 VOG XTRAIL SOLID - CL BK GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V BK SLM Cluster 8 1 2 156250 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V BLUE GKD
Cluster 3 2 7 270250 NHK GLADIATOR SOLID - 2V PP SLM Cluster 8 1 2 157750 VOG XTREAM 2 VSR SOLID/MEKANIK - 2V RED F KUL
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL BK YOG Cluster 8 1 2 170250 VOG TURBO SOLID - CL PP SLM
Cluster 3 2 6 272000 NHK PREDATOR SOLID - CL GUN M YOG Cluster 8 1 2 171250 MIX SPORTY SOLID - 2V BK GKD
Cluster 3 2 5 272000 NHK PREDATOR SOLID - CL RYL RED YOG Cluster 8 1 2 172250 VOG TURBO SOLID - CL BK/DOF GKD
Cluster 3 2 6 277750 NHK R6 LOTUSS - ORG/FLO SLM Cluster 8 1 2 173750 MIX SPORTY SOLID - 2V RYL RED KUL
Cluster 3 2 5 277750 NHK R-6 ROSSI - CL GR/FLO SLM Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V BK GKD
Cluster 3 3 5 350000 NHK GP 1000 SOLID - 2V WH YOG Cluster 8 1 2 180250 MAZ PRIUSS * SOLID R - 2V WH GKD
Cluster 3 4 7 417000 NHK GODZILLA SOLID - 2V BK SLM Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V PP SLM
Cluster 3 4 5 425500 NHK TERMINATOR LOTUS 2V - WH YOG Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V RYL RED KUL
Cluster 8 1 2 180500 VOG FREEWAY SOLID - 2V WH KUL
Cluster 8 1 2 187750 GM EVO ANGRY BIRD #3 - SR WH/RED GKD
Cluster 8 1 2 187750 GM EVO HELLO KITTY # 3 - WH YOG
Cluster 8 1 2 187750 GM EVO ROSSI - SR BK KUL
Cluster 8 1 2 190500 GM EVO HELLO KITTY #4 WH KUL
ClusterKelompok
Harga
Total
Quantity
Harga
JualNama Barang Wilayah
Cluster 7 1 1 145000 ASCA MOTIF PROTECH - 2V WH/YL YOG
Cluster 7 1 1 155000 VOG XTRAIL SOLID - CL RED F GKD
Cluster 7 1 1 170250 VOG TURBO SOLID - CL GUN M GKD
Cluster 7 1 1 180500 VOG FREEWAY SOLID - 2V ICE BL GKD
Cluster 7 1 1 190500 GM EVO MICKEY MOUSE # 10 - WH SLM
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
Gambar 22 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 Jumlah anggota
Cluster 1 20
Cluster 2 29
Cluster 3 31
Cluster 4 13
Cluster 5 22
Cluster 6 18
Cluster 7 5
Cluster 8 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:
noFaktur kodeBarangnamaBarang satuan size hargaJualquantity discount discountRealdiscount2 total urut hpp hppdpp hargasatuansisapesan statusReturOrderstatusNotaKreditnourut kodeCanvaserKelompokHarga
MC11501230070201006047ASCA ASTRO SOLID RYL RED pcs 20 101500 1 0 0 0 101500 2 92000 92000 101500 0 N N 980 KUL 0
MC11501140070609707311GM TEEN HELLO KITTY #2 - SR WH pcs 20 116000 2 0 0 0 232000 2 208000 208000 116000 0 N N 800 YOG 0
MC11501300010503328154VOG XTREAM - CL ICE BL pcs 20 147250 2 0 0 0 294500 1 265000 265000 147250 0 N N 432 SLM 0
MC11501150030502604106VOG XTRAIL SOLID - CL GUN M pcs 20 155000 2 0 0 0 310000 5 277000 277000 155000 0 N N 272 GKD 0
MC11501080010605707227GM EVO SOLID - SR WH pcs 20 167500 1 0 0 0 167500 2 153500 153500 167500 0 N N 624 SLM 0
MC11503020020605730219GM EVO SOLID - SR DGM pcs 20 170000 2 0 0 0 340000 8 307000 307000 170000 0 N N 830 SLM 0
MC11501130030502307090VOG FREEWAY SOLID - 2V WH pcs 20 180500 2 0 0 0 361000 10 325000 325000 180500 0 N N 220 KUL 0
MC11501070010604501199GM FIGHTER SOLID - SR BK pcs 20 204000 2 0 0 0 408000 4 374000 374000 204000 0 N N 157 SLM 0
MC11501220030502828122VOG NAVIGATOR SOLID - 2V ICE BL pcs 20 209750 1 0 0 0 209750 15 189500 189500 209750 0 N N 975 SLM 0
MC11501190030503212143VOG NAVIGATOR PICLET - 2V BK/SIL pcs 20 225750 2 0 0 0 451500 4 409000 409000 225750 0 N N 900 YOG 0
MC11501210010604004181GM INTERCEPTOR SOLID - 2V GUN M pcs 20 241250 1 0 0 0 241250 3 221500 221500 241250 0 N N 919 YOG 0
MC11501200010609217298GM STARTECH SOLID GUN pcs 20 264250 1 0 0 0 264250 8 240000 240000 264250 0 N N 304 KUL 0
MC11501070040604106193GM NEW IMPREZZA SOLID - 2V RYL RED pcs 20 275500 1 0 0 0 275500 11 250000 250000 275500 0 N N 602 KUL 0
MC11501140060603866495GM NEW IMPREZZA GEN - 2V BL MET BK pcs 20 294750 1 0 0 0 294750 7 267500 267500 294750 0 N N 786 GKD 0
MC11501090040713207407NHK PREDATOR 2 VISOR SOLID - 2V WH pcs 20 314750 1 0 0 0 314750 4 290000 290000 314750 0 N N 700 SLM 0
MC11501070050713207407NHK PREDATOR 2 VISOR SOLID - 2V WH pcs 20 318750 1 0 0 0 318750 12 290000 290000 318750 0 N N 621 SLM 0
MC11501190040712107360NHK GP 1000 SOLID - 2V WH pcs 20 350000 1 0 0 0 350000 1 317000 317000 350000 0 N N 902 YOG 0
MC11501130040608913287GM SUPERCROSS NEUTRON - NV WH/RED pcs 20 418750 1 0 0 0 418750 4 380500 380500 418750 0 N N 745 SLM 0
MC11501120010713822423NHK TERMINATOR RX 805 - 2V WH/SIL pcs 20 420500 1 0 0 0 420500 12 386000 386000 420500 0 N N 191 SLM 0
MC11501230040717007476NHK TERMINATOR LOTUS 2V - WH pcs 20 425500 2 0 0 0 851000 7 772000 772000 425500 0 N N 373 YOG 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Gambar 23 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.
Cluster Lama Cluster Cluster Cluster baruASCA ASTRO SOLID RYL RED Cluster 2 Cluster 2 ASCA ASTRO SOLID RYL RED
GM TEEN HELLO KITTY #2 - SR WH Cluster 1 Cluster 1 GM TEEN HELLO KITTY #2 - SR WH
VOG XTREAM - CL ICE BL Cluster 1 Cluster 1 VOG XTREAM - CL ICE BL
VOG XTRAIL SOLID - CL GUN M Cluster 3 Cluster 3 VOG XTRAIL SOLID - CL GUN M
GM EVO SOLID - SR WH Cluster 2 Cluster 2 GM EVO SOLID - SR WH
GM EVO SOLID - SR DGM Cluster 2 Cluster 2 GM EVO SOLID - SR DGM
GM FIGHTER SOLID - SR BK Cluster 1 Cluster 1 GM FIGHTER SOLID - SR BK
VOG NAVIGATOR PICLET - 2V BK/SIL Cluster 2 Cluster 2 VOG NAVIGATOR PICLET - 2V BK/SIL
GM NEW IMPREZZA SOLID - 2V RYL RED Cluster 2 Cluster 2 GM NEW IMPREZZA SOLID - 2V RYL RED
VOG NAVIGATOR SOLID - 2V ICE BL Cluster 5 Cluster 5 VOG NAVIGATOR SOLID - 2V ICE BL
GM INTERCEPTOR SOLID - 2V GUN M Cluster 3 Cluster 3 GM INTERCEPTOR SOLID - 2V GUN M
GM STARTECH SOLID GUN Cluster 6 Cluster 6 GM STARTECH SOLID GUN
NHK GP 1000 SOLID - 2V WH Cluster 3 Cluster 3 NHK GP 1000 SOLID - 2V WH
NHK TERMINATOR RX 805 - 2V WH/SIL Cluster 4 Cluster 4 NHK TERMINATOR RX 805 - 2V WH/SIL
NHK TERMINATOR LOTUS 2V - WH Cluster 3 Cluster 3 NHK TERMINATOR LOTUS 2V - WH
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
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 Tabel 6.1. Rencana pengujian Blackbox
No. Kelas Uji Butir Uji Jenis Pengujian
1 HalamanUtama Melakukan input range batas
kelompok harga
Blackbox
Menampilkan data dari file yang
berekstensi .csv
Blackbox
Melakukan clustering Blackbox
Menampilkan hasil clustering Blackbox
Menjalankan fungsi simpan hasil
pengelompokan
Blackbox
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
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 Aktifitas yang
dilakukan
Keluaran yang
diharapkan
Hasil yang
diharapkan
Kesimpulan
1 Input nilai batas
atas dan batas
bawah mulai dari
kelompok 1
sampai kelompok
5
Data berhasil di
simpan kedalam
tabel
kategori_nilai
Data berhasil
di simpan
kedalam tabel
kategori_nilai
Diterima
Kasus dan Hasil Uji (Data Salah)
1 Input nilai batas
atas dan batas
bawah pada
masing-masing
kelompok
mengandung sifat
gabungan
Menampilkan
pesan error
bahwa nilai
range harga
mengandung
gabungan
Pesan
kesalahan
berhasil
ditampilkan
Diterima
2 Input nilai batas
atas dan batas
bawah pada
setiap kelompok
ada yang kosong
Menampilkan
pesan error
bahwa nilai
range harga
tidak boleh
kosong
Pesan
kesalahan
berhasil
ditampilkan
Diterima
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
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 Aktifitas yang
dilakukan
Keluaran yang
diharapkan
Hasil yang
diharapkan
Kesimpulan
1 Memasukan data
dari file yang
berekstensi .csv
Data berhasil di
seleksi dan
ditampilkan
dalam tabel
Data
ditampilkan
dalam tabel
Diterima
Kasus dan Hasil Uji (Data Salah)
1 Memasukan data
dari file yang
berekstensi selain
.csv
Menampilkan
pesan error
bahwa file yang
dimaksukan
tidak sesuai
dengan format
Pesan
kesalahan
berhasil
ditampilkan
Diterima
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
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 Aktifitas yang
dilakukan
Keluaran yang
diharapkan
Hasil yang
diharapkan
Kesimpulan
1 Menekan button
simpan dan
melakukan
penyimpanan
file dengan
ekstensi .doc
directory yang
telah di pilih
oleh
user berhasil
tersimpan file
dengan ekstensi
.doc
File berhasil
tersimpan
dengan ekstensi
.doc
Diterima
Menekan button
simpan dan
melakukan
penyimpanan
file dengan
ekstensi .xls
directory yang
telah di pilih
oleh
user berhasil
tersimpan file
dengan ekstensi
.xls
File berhasil
tersimpan
dengan ekstensi
.xls
Diterima
Kasus dan Hasil Uji (Data Salah)
1
- - - -
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
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 ‟,‟.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
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:
Clustering Methods”. Available at:
http://www.ise.bgu.ac.il/faculty/liorr/hbchap15.pdf [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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
LAMPIRAN 1
DIAGRAM USE CASE
Input kelompo Harga
Input data
Proses ClusteringUser
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 Deskripsi
001 Input kelompok
harga
Use case ini menentukan range kelompok 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
cluster
Use case ini menggambarkan user melakukan
simpan hasil pola cluster yang telah dilakukan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
Langkah 7: User menginputkan
batas bawah kelompok satu dan
batas atas harga kelompok 5.
Langkah 8: User mengklik
tombol “Simpan”.
Langkah 9: sistem akan
menyimpan range harga
kelompok 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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
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: Sistem
menampilkan file chooser
untuk memasukan file.
Langkah 3: User sistem
melakukan pencarian file yang
akan digunakan.
Langkah 4: Sistem
menampilkan data yang
dimasukan kedalam tabel data
Langkah 5: User mengklik
tombol “Submit”.
Langkah 6: Sistem mensleksi
atribut yang diperlukan
terhadap penelitian, lalu sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
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 akan
melakukan proses
pengelompokan nama barang
yang sama dan menjumlahkan
quantity-nya
Berdasarkan tiap
kelompoknya.
Langkah 7: Sistem akan
menampilkah hasil data
preprosesing.
Langkah 8: User mengklik
tombol “Cluster”
Langkah 9: sistem akan
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
LAMPIRAN 3
DIAGRAM AKTIVITAS
1. Diagram aktivitas input range harga
user menginputkan nilai batas atah dan batas bawah harga tiap kelompok
Sistem menyimpan nilai kelompok
harga di database
Mengecek nilai inputan masing-masing kelompok
Y
T
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
2. Diagram aktivitas input data file
Menklik timbol "Pilih file"
menyeleksi atribut lalu menampilkan data pada tabel
data sesuai dengan isi file
menampilkan file chooseruntuk memasukkan file
mencari file yang digunakan
mengklik tombol "Submit"
melakukan treanformasi data lalu menampilkan hasil
preprosesing pada tabel di tab Clustering
mengklik tombol "proses"
melakukan proses clustering
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
3. Diagram Aktivitas clustering
melakukan proses cluster
menampilkan hasli cluster pada tabel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
4. Diagram Aktivitas Simpan Hasil Deteksi Outlier
mengklik tombol "SIMPAN"
menampilkan dialog pemilihan direktori
penyimpanan
menyimpan hasil cluster kedalam file dalam direktori yang terpilih
mengisikan nama file
menentukan lokasi penyimpanan
memilih ekstensi penyimpanan file
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
LAMPIRAN 4
Diagram Sequence Input nilai Range harga
User<<view>>
HalamanUtama
1. Menampilkan HalamanUtama Tab Range Harga
2. HalamanUtama.lihatRangeHarga()
4. cekInputRangeHarga()
<<Controller>>controlRangeHar
ga
5. cekIsiData()
<<Entity>>RangeHarga
6. prosesInsertRange(RangeHarga range)
7. prosesUpdateRange(RangeHarga range)
3. mengisi semua nilai-nilai batas kelompok
Diagram Sequence Input Data File
User<<view>
HalamanUtama
1. Menekan tombol "Pilih File"
2. Menampilkan kotak dialog File chooser
3. Memilih file bertipe .csv
4. pilihFileButtonActionPerformed(java.awt.event.ActionEvent evt)
5. Menapilkan data inputan di tabel data
6. Menekan tombol "Submite"
7.InputPreprosesData(tabelInputData);
8. Menapilkan data Seleksi di tabel seleksi
9. Menekan tombol "Preprocessing"
10.SubmitPreprosesing();
11. Menapilkan data preprocessing di tabel preprocessing
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
Diagram Sequence Proses Cluster
User <<view>>HalamanUtama
1. Menekan tombol "Cluster"
<<Control>>ControlRangeHarga
2. crlharga.deletePreproses();
3. graph.inputData(dataKelompokHargaTable);
<<Entity>>Graph
4. graph.LostClustering();
5. LostClustering2(int iterasi)
6. SimpanCluster(ArrayList<String> list, int Iter,
Double Data, double sse)
8. LostClustering3(int iterasi)
9. SimpanCluster(ArrayList<String> list, int Iter,
Double Data, double sse)
10. SimpanSubCluster(ArrayList<String> list, int
Iter, Double Data, double sse)
11. TampilLabel();
12. TampilJML();
13. TampilSSE();
14. pop_tree();
7. SimpanSubCluster(ArrayList<String> list, int
Iter, Double Data, double sse)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
Diagram Sequence Simpan Hasil Cluster
User<<view>>
HalamanUtama
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
7. Menampilkan pesan berhasil di simpan
jButtonSimpanActionPerformed(java.awt.event.ActionEvent evt)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
LAMPIRAN 5
DIAGRAM KELAS DESAIN
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
95
LAMPIRAN 6
1. Rincian algoritma pada setiap method pada kelas KoneksiDB
Nama Method Fungsi Algoritma
KoneksiDB() Method ini digunakan
untuk
mengkoneksikan
sistem ke
database MySql
1. Mengambil parameter url, userid, dan
password untuk membuat koneksi.
2. Jika benar, sistem akan mengembalikan nikai
koneksi dan berhasil terkoneksi dengan database
MySql .
bukaKoneksi() Method ini digunakan
untuk membuka
koneksi baru.
1. Mengambil parameter url, userid, dan
password untuk membuat koneksi.
2. Jika benar, sistem akan mengembalikan nikai
koneksi dan berhasil terkoneksi dengan database
MySql.
lihatData(String sql) Method ini digunakan
untuk mengeksekusi
sebuah query
1. Mengambil parameter inputan yang berupa
query.
2. Jika benar, Sistem akan menampilkan query
tersebut.
2. Rincian algoritma pada setiap method pada kelas graph
Nama Method Fungsi Algoritma
addVerteks(String,
List)
Method ini digunakan
untuk membuat
sebuah vertex untuk
membentuk graph
1. Membaca inputan parameter label dan nilai.
2. Mendeklarasikan sebuah vertex baru dengan
memasukan nilai label dan nilai kedalam vertex.
addEdge(int, int,
Double)
Method ini digunakan
untuk mengisi setiap
nilai edge pada vertex
1. Membaca inputan nilai parameter x, y, dan nilai.
2. memasukan nilai-nilai dari parameter tersebut
kedalam variabel adjMatt untuk mengisi nilai
edge.
cariJarakEcludian(int,
int)
Method ini digunakan
untuk mencari nilai
kemiripan obyek
1. Membaca parameter indexAwal dan
indexTujuan.
2. Membuat obyek a dan obyek b untuk
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
menggunakan
perhitungan euclidean
distance
menampung nilai dari indexAwal dan
1.Membaca parameter indexAwal dan
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
graph hasil
perhitungan euclidean
distance
1. Selama nilai i kurang dari panjang vertexList,
maka akan ditampilkan
label dari vertex tersebut.
2. Selama nilai i kurang dari panjang adjMat, maka
akan di tampilkan perhitungan jarak
Euclidian Distance.
inputData(JTable ) Method ini digunakan
untuk menginputkan
data dari Jtabel ke
dalam matriks dan
kedalam graph
1. Membaca inputan parameter tabel.
2. Selama i kurang dari
jumlah baris pada tabel, maka di buat obyek
listNilai bertipe ArrayList.
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
EcluidianDistance pada method
cariJarakEcludian.
LostClustering () Method ini berisi
algoritma divisive
yang digunakan untuk
tahapan pertama
proses
pengelompokan data.
1. Membersihkan obyek mapClsuter.
2. Memanggil method SpDelete().
3. Membuat obyek iterasi bertipe int mengset nilai
iterasi menjadi 1.
4. Memanggil method getadjMat.
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
98
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
algoritma divisive
yang digunakan untuk
tahapan kedua proses
pengelompokan data
jika kemolpok splinter
masih memiliki nilai
positif.
1. Membaca inputan parameter iterasi.
2. Memanggil method getadjMat
3. Memanggil method getDataMatriks
4. Memanggil method getDataSplinter
5. Memanggil method getVerteksList
6. Memanggil method getLabelMatriks
7. Memanggil method Averagematrix
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
99
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
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
algoritma divisive
yang digunakan untuk
tahapan kedua proses
pengelompokan data
jika kemolpok splinter
masih memiliki nilai
negatif.
1. Membaca inputan parameter iterasi.
2. Memanggil method getadjMat
3. Memanggil method getDataSplinter
4. Memanggil method getDataMatriks
5. Memanggil method getVerteksList
6. Memanggil method getLabelMatriks
7. Memanggil method Averagematrix
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
101
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
102
UpdateMatriks(Array
List, ArrayList,
double[][],
Verteks[])
Method ini digunakan
untuk mengupdate isi
array DataMatriks dan
adSplinter yang
nantinya digunakan
untuk proses
clustering slanjutnya
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
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
103
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(
ArrayList, ArrayList,
double[][],
Verteks[])
Method ini digunakan
untuk mengupdate isi
array
DataMatriksAkhir dan
DataSplinterAkhir
yang nantinya
digunakan untuk
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
m1 menjadi 0
4. Membuat obyek countMatrix bertipe ArrayList
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
105
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
106
uble[], Verteks[]) untuk mengambil nilai
minimum dari hasil
perhitungan selisih
kelompok matrik
dengan kelompok
splinter
2. Membaut obyek tempIndex bertipe ArrayList
3. Membuat obyek minValueCounter bertipe int,
set nilai sama dengan 0
4. Membuat obyek index bertipe int, set nilai sama
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
untuk untuk mencari
1. Membaca inputan parameter label.
2. Selama i kurang dari panjang verteksList
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
107
label sampel 3. Jika label sama dengan elemen verteksList
4. Mengembalikan nilai i
5. Jika tidak mengembalikan nilai -1
CariObjekTerbesar
(double[], Verteks[])
Method ini digunakan
untuk menghirung
nilai rata-rata splinter
grup.
1. Membaca inputan parameter data dan label.
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. Set splinter dengan niali idxMax
11. Mengembalikan nilai splinter
Averagematrix
(double[][],
Verteks[], ArrayList)
Method ini digunakan
untuk mencari nilai ra-
rata dari semua
sample pada matriks.
1. Membaca inputan parameter data, list dan
listSize.
2. Membuat obyek rerata beripe array
3. Selama i dan j kurang dari panjang data,
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
(double[][],
Verteks[], ArrayList)
Method ini digunakan
untuk memisah matrik
yang memiliki nilai
rata-rata terbesar.
1. Membaca inputan parameter data, list dan
listSize.
2. Membuat obyek rerata beripe array
3. Selama i dan j kurang dari panjang data dan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
108
listSize, jumlahkan semua nilai pada masing-
masing 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
[], double[],
Verteks[])
Method ini digunakan
untuk menghitung
selisih antara
kelompok matrik
dengan kelompok
splinter
1. Membaca inputan parameter obyekMatrix,
objekSplinter dan list.
2. Membuat obyek rerata beripe array
3. Membuat obyek ave beripe array.
4. Membuat obyek nilaiMax beripe double.
5. Membuat obyek idxMax beripe int.
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
rray(double[])
Method ini digunakan
untuk membulatkan
hasil nilai yang bertipe
array
1. Membaca inputan parameter val.
2. Selama i kurang dari panjang data val
3. Membuat obyek bd bertipe BigDecimal, set
elemen val di bd
4. Memanggil method setScale
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
109
5. Set elemen val dengan bd
6. Mengembalikan nilai val
RoundTo2DecimalsS
ingle(double)
Method ini digunakan
untuk membulatkan
hasil nilai bertipe
double
1. Membaca inputan parameter val.
2. Membuat obyek bd bertipe BigDecimal, set
elemen val di bd
3. Memanggil method setScale
4. Set elemen val dengan bd
5. Mengembalikan nilai val
MaxCluster_C(doubl
e[][])
Digunakan untuk
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
(double[][],ArrayList
)
Method ini digunakan
untuk mencari nilai
bobot dari matrik itu
sendiri
1. Membaca inputan parameter data dan list.
2. Membuat obyek mean bertipe int.
3. Membuat obyek sum bertipe array
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
110
tampung di obyek ave
8. Mengembalikan nilai ave
akurasi(double[][]) Method ini digunakan
untuk menghitung
sum of square.
1. Membaca inputan parameter data.
2. Membuat obyek mean bertipe int.
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
111
Nama Method Fungsi Algoritma
cekIsiData() Method ini digunakan
untuk mengecek isi
data pada tabel
kategori_nilai dalam
database
1. membuat obyek baru koneksi.
2. Membuat obyek jumlah bertipe int.
3. membuka koneksi
4. Membuat obyek baru range harga
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
ngeHarga range)
Method ini digunakan
untuk menyimpan
nilai batas range harga
kelompok ke dalam
tabelKategoriNilai
dengan menggunakan
storage procedure
1. membaca input parameter range
2. membuat obyek koneksi bertipe koneksi.
3. Memanggil storage procedure spUpdateRangeH
4. Mengambil nilai batas harga bawah1 dari obyek
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
112
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(
RangeHarga range)
Method ini digunakan
untuk mengupdate
nilai batas range harga
kelompok ke dalam
tabelKategoriNilai
dengan menggunakan
storage procedure
1. membaca input parameter range
2. membuat obyek koneksi bertipe koneksi.
3. Memanggil storage procedure
spSimpanRangeHarga
4. Mengambil nilai batas harga bawah1 dari obyek
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
113
range
13. Mengambil nilai batas harga atas5 dari obyek
rang
14. Meneksekusi query
tampilkanRangeNilai
(String kategori)
Method ini digunakan
untuk menampilkan
nilai batas atas dan
batas bawah pada
setiap kategori
keompok dari tabel
kategoriNilai.
1. Membuat obyek conn bertipe koneks
2. Membuat obyek rs bertipe ResultSet
3. Membuka koneksi
4. Membuat query “select batas_bwh, batas_atas
from kategori_nilai where kode_range like '" +
kategori + "'"
5. Mengeksekusi query
6. Mengembalikan hasil rs
deleteIsiData() Method ini digunakan
untuk menghapus isi
tabel kategori nilai
1. Membuat obyek conn bertipe koneks
2. Memanggil Storage procedure spdeleteKategori
3. Mengeksekusi query
tampilJumlahCluster(
)
Method ini digunakan
untuk menampilkan
jumlah cluster yang
dihasilkan dari proses
divisive
1. Membuat obyek conn bertipe koneks
2. Membuat obyek rs bertipe ResultSet
3. Membuka koneksi
4. Membuat query “SELECT
Count(datacluster.cluster) FROM datacluster"
5. Mengeksekusi query
6. Mengembalikan hasil rs
SimpanCluster(Array
List, int, Double,
double)
Method ini digunakan
untuk mentimpan
hasil cluster ke dalam
database
1. Baca parameter inputan list, Iter, Data, sse
2. Membuat obyek bertipe koneksi
3. Membuat obyek sql bertipe srting,
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,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
114
Data, sse)
8. Memanggil method tutupKoneksi
SimpanSubCluster
(ArrayList, int,
Double, double)
Method ini digunakan
untuk menyimpan
semua anggota cluster
dalam tabel
sub_datacluster.
1. Membaca parameter inputan list, Iter, Data, sse
2. Membuat obyek koneksi beripe koneksi
3. Untuk i=0, selama I kurang dari panjang list
4. Membuat obyek sql beripe string
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
untuk menghapus data
pada tabel dataCluster
dan sub_dataCluster.
1. Membuat obyek koneksi bertipe koneksi
2. Memanggil SP spdelete
3. Mengeksekusi query
4. Rincian algoritma pada setiap method pada kelas Halaman Utama
Nama Method Fungsi Algoritma
lihatRangeHarga() Method ini digunakan
untuk mengecek isi
nilai reange
kolompok-kelompok
harga tabel
kategoriNilai,
kemudian ditampilkan
kedalam sistem
1. memanggil method tampilkanRangeNilai untuk
mengambil nilai-nilai dari kategori kelompok 1
2. tampung hasil dalam rs
3. selama membaca isi rs, set bawah1filed dan
atas1filed dengan nilai rs.
4. memanggil method tampilkanRangeNilai untuk
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
115
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
untuk memulai proses
clustering
1. Cek apakah text field JumlahCluster kosong, jika
ya, cetak “Jumlah Cluster tidak boleh kosong”.
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
116
12. memanggil method tampilSSE
13. memanggil method pop_tree.
tampilCluster() Method ini digunakan
untuk menampilkan
isi tabel sub_cluster
menggunakan SP
1. nama password dengan isi "1234"
2. Buat obyek tipe ArrayList bernama
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
117
untuk menampilkan
cluster dan anggola
dari cluster itu sendiri
dari tabel
sub_dataClusterr.
columnNames
2. Buat obyek tipe ArrayList bernama data
3. Buat obyek bertipe String dengan nama sql isi "
SELECT sub_datacluster.cluster,
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
untuk menampilkan
jumlah dari angota
yang dimiliki cluster
masing-masing cluster
1. Buat obyek tipe ArrayList bernama
columnNames
2. Buat obyek tipe ArrayList bernama data
3. Buat obyek bertipe String dengan nama sql isi "
select `sub_datacluster`.`cluster` AS `Cls`, count
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
118
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
untuk menampilkan
jumlah total SSE
1. Buat obyek tipe ArrayList bernama
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
119
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
untuk menampilkan
JFileChooser untuk
memilih file excel
bertipe .csv kemudian
membaca file lalu
menampilkan ke
dalam tabel data.
1. Menampilkan JFileChooser open file
2. Mendapatkan nilai atribut nama_file yang dipilih
3. Deklarasi array bertipe String bernama
potong_nama_file untuk memberi nama file
dengan pemisah “\\”
4. Jika potong_nama_file.equals (“csv”)
5. Membuat vector baru bernama columnName.
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
120
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
untuk memulah tahap
preprocessing
mengolah data agar
siap untu k di mining.
1. Untuk i=0, selama I kurang dari panjang data
Objekdat
2. Buat obyek st bertipe StringTokenizer berisi
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
121
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
122
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]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
123
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
124
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
untuk menyimpan
hasil clustering
kedalam file
1. Menampilkan filechooser untuk lokasi
penyimpanan file hasil clustering.
2. Mengatur file filter agar hanya bisa disimpan
dalam tipe file doc, dan xls.
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
125
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 SSE
AVG P1 P2 P3 P4 P5
1 2 328195,65 1255753,346 821891,83 326564,11 326564,11 611793,8
2 3 62465,727 67127,071 58150,59 58018,005 67127,071 62577,69
3 4 47805,751 48929,494 42545,224 41290,008 48929,494 45899,99
4 5 40875,609 46019,204 40004,988 38748,327 46044,137 42338,45
5 6 38820,685 43346,701 36243,742 36407,959 43371,634 39638,14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
126
6 7 38255,563 42899,059 35907,797 36078,589 42923,992 39213
7 8 38092,636 42735,546 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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
127
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());
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
128
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
129
+ "'";
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) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
130
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());
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
131
}
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();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
132
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;
/**
*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
133
* @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;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
134
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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
135
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++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
136
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) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
137
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() {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
138
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");
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
139
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();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
140
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[];
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
141
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 {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
142
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);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
143
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 "
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
144
+ "\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)) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
145
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));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
146
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++;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
147
}
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);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
148
}
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];
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
149
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++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
150
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;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
151
}
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();
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
152
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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
153
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;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
154
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) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
155
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();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
156
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))
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
157
.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()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
158
.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)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
159
.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);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
160
/**
* 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)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
161
.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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
162
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) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
163
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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
164
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
*/
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
165
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));
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
166
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));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
167
}
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();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
168
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;";
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
169
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();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
170
} 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++) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
171
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())))
{
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
172
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
173
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 {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
174
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();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
175
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);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
176
}
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
177
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;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
178
}
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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
179
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<>();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
180
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);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
181
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);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
182
}
}
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) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
183
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();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
184
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"));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
185
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);
}
}
});
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI