PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DETEKSI OUTLIER MENGGUNAKAN ALGORITMA NAIVE NESTED LOOP (STUDI KASUS : DATA AKADEMIK MAHASISWA PROGRAM STUDI TEKNIK INFORMATIKA, UNIVERSITAS SANATA DHARMA, YOGYAKARTA) Skripsi Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika Oleh : Setyo Resmi Probowati NIM : 095314039 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2013 i PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI OUTLIER DETECTION USING NAÏVE NESTED LOOP ALGORITHM (CASE STUDY : STUDENT ACADEMIC DATA OF INFORMATICS ENGINEERING STUDY PROGRAM, SANATA DHARMA UNIVERSITY, YOGYAKARTA) A Thesis Presented as Partial Fullfillment of the Requirements To Obtain Sarjana Komputer Degree in Informatics Engineering Study Program By : Setyo Resmi Probowati NIM : 095314039 INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2013 ii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI iii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI iv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSEMBAHAN And now these three remain : faith, hope and love. But the greatest of these is love ~ 1 Corinthians 13:13 ~ my Lord and Saviour, Thank you for everything v PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI vi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRAK Penambangan data merupakan ekstraksi pola terhadap data yang menarik dalam jumlah yang besar. Pola tersebut dikatakan menarik apabila tidak diketahui sebelumnya dan berguna bagi perkembangan ilmu pengetahuan. Data tersebut dapat diolah dengan berbagai teknik penambangan data seperti asosiasi, klasifikasi, clustering dan deteksi outlier. Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam penambangan data. Penelitian tersebut bermanfaat untuk menemukan outlier yang mungkin berguna bagi pengguna. Outlier merupakan sebuah data yang berbeda dibandingkan dengan sifat umum yang dimiliki data lain pada suatu kumpulan data Pada tugas akhir ini, pendeteksian outlier dilakukan menggunakan algoritma Naïve Nested Loop. Data yang digunakan adalah data akademik mahasiswa program studi Teknik Informatika Universitas Sanata Dharma, Yogyakarta tahun angkatan 2007 dan 2008. Data tersebut terdiri dari data numerik nilai hasil seleksi masuk mahasiswa yang diterima melalui jalur tes tertulis maupun jalur prestasi dan nilai indeks prestasi dari semester satu sampai empat. Hasil dari penelitian ini adalah sebuah perangkat lunak yang dapat digunakan sebagai alat bantu untuk mendeteksi outlier menggunakan algoritma Naïve Nested Loop. Pengujian terhadap sistem ini meliputi tiga metode pengujian, yaitu pengujian blackbox, pengujian efek perubahan nilai atribut penambangan data, dan pengujian review dan validitas oleh pengguna. Berdasarkan pengujian blackbox yang telah dilakukan dapat disimpulkan bahwa sistem pendeteksi outlier ini secara fungsional dapat berjalan dengan baik dan menghasilkan keluaran yang sesuai dengan yang diharapkan. Dari hasil pengujian efek perubahan nilai atribut penambangan data disimpulkan bahwa penentuan nilai parameter pada algoritma Naïve Nested Loop yaitu nilai M dan dmin berpengaruh terhadap jumlah outlier yang dihasilkan. Berdasarkan hasil pengujian review dan validitas oleh pengguna dapat disimpulkan bahwa sistem dapat menghasilkan data yang dinyatakan sebagai outlier. Kata kunci : penambangan data, deteksi outlier, naïve nested loop vii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRACT Data mining is an extraction of interesting pattern in large numbers of data. The pattern is said to be interesting if the data is previously unknown and it is useful for the development of knowledge in data mining. The data can be processed by a variety of data mining techniques such as association, classification, clustering and outlier detection. Outlier detection is one of important researches in data mining. This research is useful to discover outliers which might be useful for users. Outlier is a data which is different from other data in a dataset. In this thesis, Naïve Nested Loop algorithm was used to perform outlier detection. The data used in this thesis are academic data of students batch 2007 and 2008 of Informatics Engineering Department of Sanata Dharma University. The dataset consists of student admission data from regular admission track as well as students from outstanding track, and student academic data (Grade Point Average) of those students from first semester until fourth semester. The results of this research is a software that can be used as a tool to determine outliers using Naïve Nested Loop algorithm. The testing of this system includes three testing methods, namely blackbox testing, the effects of attribute changes of M (the maximum number of objects within the dmin neighbourhood of an outlier) and dmin (the maximum distance between any pair of objects that define as a neighbour), and validation testing by users. Based on blackbox testing, it can be concluded that the outlier detection‟s system could perform properly and produce output as expected. Based on the second testing, it can be concluded that the value of M and dmin influence the number of generated outliers. Based on the user‟s validation, it can be concluded that the results of the system are confirmed as outliers. Keywords: data mining, outlier detection, naïve nested loop viii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ix PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI KATA PENGANTAR Puji dan syukur penulis panjatkan atas Kehadirat Tuhan Yang Maha Esa, karena atas limpahan berkat dan rahmat-Nya penulis dapat menyelesaikan tugas akhir yang berjudul “Deteksi Outlier Menggunakan Algoritma Naïve Nested Loop (Studi Kasus : Data Akademik Mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta)“ dan selalu memberikan kekuatan untuk berkembang menjadi lebih baik. Tugas akhir ini ditulis sebagai salah satu syarat memperoleh gelar sarjana komputer program studi Teknik Informatika, Fakultas Sains dan Teknologi Universitas Sanata Dharma. Penulis mengucapkan terima kasih sebesar-besarnya kepada semua pihak yang turut memberikan dukungan, semangat, dan bantuan dalam bentuk apapun sehingga tugas akhir ini dapat terselesaikan : 1. Tuhan Yesus Kristus, Bunda Maria, dan Santa Natalia yang telah memberikan anugerah sehingga penulis dapat menyelesaikan tugas akhir ini dengan tepat waktu. 2. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. selaku dosen pembimbing atas kesabaran, bimbingan, waktu, saran dan terlebih dukungan serta semangat yang diberikan. 3. Kedua orang tua saya, bapak Ir. Susi Prabowo dan ibu Resmi Astuti yang telah memberikan kasih sayang, perhatian, semangat, dan doa sehingga penulis dapat menyelesaikan tugas akhir ini. x PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4. Oto Lelono Prabowo adik saya dan semua anggota keluarga besar yang telah memberikan semangat, doa, dan perhatian sehingga penulis dapat menyelesaikan tugas akhir ini. 5. Sahabat dan teman-teman seperjuangan, TI angkatan 2009 yang selalu memberikan keceriaan, semangat, doa, dan dukungan dalam menyelesaikan tugas akhir ini 6. Semua pihak yang berperan baik secara langsung maupun tidak langsung yang tidak bisa disebutkan satu per satu sehingga penulis dapat menyelesaikan tugas akhir ini. Dengan rendah hati, penulis menyadari bahwa tugas akhir ini masih memiliki banyak kekurangan dan jauh dari sempurna, oleh karena itu diperlukan saran dan kritik yang penulis harapkan untuk perbaikan-perbaikan tugas akhir ini. Akhir kata, penulis berharap semoga tugas akhir ini memberikan banyak manfaat bagi semua pihak. Terima Kasih. Yogyakarta, Agustus 2013 Penulis Setyo Resmi Probowati xi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR ISI HALAMAN JUDUL ............................................................................................... i HALAMAN JUDUL (INGGRIS) ........................................................................... ii HALAMAN PERSETUJUAN ............................................................................... iii HALAMAN PENGESAHAN ................................................................................ iv HALAMAN PERSEMBAHAN ............................................................................. v PERNYATAAN KEASLIAN ILMIAH ................................................................ vi ABSTRAKSI ........................................................................................................ vii ABSTRACT ......................................................................................................... viii LEMBAR PERNYATAAN PERSETUJUAN ...................................................... ix KATA PENGANTAR ............................................................................................ x DAFTAR ISI ......................................................................................................... xii DAFTAR TABEL .............................................................................................. xviii DAFTAR GAMBAR ........................................................................................... xix DAFTAR LISTING PROGRAM ....................................................................... xxiii BAB I ...................................................................................................................... 1 PENDAHULUAN .................................................................................................. 1 1.1 Latar Belakang .................................................................................................. 1 1.2 Rumusan Masalah ............................................................................................. 3 1.3 Batasan Masalah................................................................................................ 4 1.4 Tujuan Penelitian .............................................................................................. 4 1.5 Luaran ............................................................................................................... 5 1.6 Manfaat Penelitian ............................................................................................ 5 1.7 Metodologi Penelitian ....................................................................................... 6 1.8 Sistematika Penulisan ....................................................................................... 7 BAB II ................................................................................................................... 10 LANDASAN TEORI ............................................................................................ 10 2.1 Penambangan Data .......................................................................................... 10 2.1.1 Definisi ................................................................................................... 10 xii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.1.2 Permasalahan dalam Penambangan Data ................................................ 10 2.1.3 Fungsionalitas Penambangan Data ......................................................... 11 2.2 Knowledge Discovery in Databases (KDD) ................................................... 14 2.2.1 Kaitan Penambangan Data dengan KDD ................................................ 14 2.2.2 Tahapan dalam Knowledge Discovery in Databases (KDD) .................. 14 2.3 Analisa Outlier ................................................................................................ 16 2.3.1 Definisi Outlier........................................................................................ 16 2.3.2 Hubungan Antara Penambangan Data dengan Outlier ........................... 17 2.3.3 Penyebab Outlier ..................................................................................... 18 2.3.4 Manfaat Outlier ....................................................................................... 18 2.3.5 Berbagai Macam Pendekatan Pendeteksi Outlier ................................... 19 2.4 Metode Pendeteksi Outlier dengan Pendekatan Distance-Based .................... 23 2.4.1 Algoritma Naïve Nested Loop ................................................................. 24 BAB III ................................................................................................................. 26 METODOLOGI PENELITIAN ............................................................................ 26 3.1 Data ................................................................................................................. 26 3.2 Pengolahan Data.............................................................................................. 27 3.3 Contoh Implementasi Deteksi Outlier dengan Algoritma Naïve Nested Loop 32 BAB IV ................................................................................................................. 37 ANALISIS DAN PERANCANGAN SISTEM .................................................... 37 4.1 Identifikasi Sistem........................................................................................... 37 4.1.1 Diagram Use Case ................................................................................... 39 4.1.2 Narasi Use Case....................................................................................... 41 4.2 Perancangan Sistem Secara Umum ................................................................. 41 4.2.1 Pemrosesan Data Awal ............................................................................ 41 4.2.2 Input Sistem ............................................................................................. 47 4.2.3 Proses Sistem ........................................................................................... 49 xiii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.2.4 Output Sistem ......................................................................................... 52 4.3 Perancangan Sistem ........................................................................................ 52 4.3.1 Diagram Konteks ..................................................................................... 52 4.3.2 Diagram Aktivitas ................................................................................... 53 4.3.3 Diagram Kelas Analisis ........................................................................... 54 4.3.4 Diagram Sequence ................................................................................... 56 4.3.5 Perancangan Struktur Data ...................................................................... 56 4.3.5.1 Matriks Dua Dimensi ..................................................................... 57 4.3.5.2 Graf ................................................................................................ 59 4.3.6 Diagram Kelas Desain ............................................................................. 60 4.3.7 Rincian Algoritma Setiap Method Pada Tiap Kelas ............................... 62 4.3.7.1 Rincian Algoritma pada Method di Kelas DatabaseConnection ... 62 4.3.7.2 Rincian Algoritma pada Method di Kelas Graph_NaiveNL .......... 63 4.3.7.3 Rincian Algoritma pada Method di Kelas CheckBoxTableModel 65 4.3.7.4 Rincian Algoritma pada Method di Kelas DatabaseController ..... 65 4.3.7.5 Rincian Algoritma pada Method di Kelas DiagramBatang ........... 66 4.3.7.6 Rincian Algoritma pada Method di Kelas HalamanUtama ........... 67 4.3.7.7 Rincian Algoritma pada Method di Kelas HalamanDistribusiAtribut .................................................................................................................... 76 4.3.7.8 Rincian Algoritma pada Method di Kelas HalamanPilihDatabase 78 4.3.7.9 Rincian Algoritma pada Method di Kelas HalamanTampilTabel.. 80 4.4 Perancangan Antarmuka ................................................................................. 82 BAB V................................................................................................................... 92 IMPLEMENTASI PENAMBANGAN DATA ..................................................... 92 5.1 Implementasi Antarmuka ................................................................................ 92 5.1.1 Implementasi Halaman Awal .................................................................. 92 5.1.2 Implementasi Halaman Utama ................................................................ 93 5.1.3 Implementasi Halaman Distribusi Atribut ............................................ 101 xiv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5.1.4 Implementasi Halaman Pilih Database.................................................. 102 5.1.5 Implementasi Halaman Tampil Tabel ................................................... 104 5.1.6 Implementasi Halaman Bantuan ........................................................... 105 5.1.7 Implementasi Antarmuka Halaman Missing Values ............................. 106 5.1.8 Implementasi Halaman Konfirmasi Keluar ........................................... 107 5.1.9 Implementasi Pengecekan Masukan ..................................................... 108 5.2 Implementasi Dataset yang Akan Diuji ........................................................ 112 5.3 Implementasi Kelas ....................................................................................... 113 5.3.1 Implementasi Kelas DatabaseConnection ............................................. 114 5.3.2 Implementasi Kelas Graph_NaiveNL ................................................... 115 5.3.3 Implementasi Kelas CheckBoxTableModel .......................................... 118 5.3.4 Implementasi Kelas DatabaseController ............................................... 120 5.3.5 Implementasi Kelas DiagramBatang ..................................................... 121 5.3.6 Implementasi Kelas HalamanUtama ..................................................... 122 5.3.7 Implementasi Kelas HalamanDistribusiAtribut .................................... 135 5.3.8 Implementasi Kelas HalamanPilihDatabase ......................................... 137 5.3.9 Implementasi Kelas HalamanTampilTabel ........................................... 141 5.4 Implementasi Struktur Data .......................................................................... 143 5.4.1 Implementasi Kelas Vertex_NaiveNL.java ........................................... 143 5.4.2 Implementasi Kelas Graph_ NaiveNL.java........................................... 144 BAB VI ............................................................................................................... 147 PENGUJIAN DAN ANALISA HASIL PENGUJIAN ....................................... 147 6.1 Fase Implementasi Pengujian ........................................................................ 147 6.1.1 Rencana Pengujian ................................................................................ 147 6.1.1.1 Hasil Pengujian Blackbox .................................................................. 149 6.1.1.1.1 Pengujian Input Data ................................................................. 149 xv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6.1.1.1.2 Pengujian Koneksi Database ..................................................... 150 6.1.1.1.3 Pengujian Seleksi Atribut.......................................................... 152 6.1.1.1.4 Pengujian Deteksi Outlier ......................................................... 153 6.1.1.1.5 Pengujian Lihat Grafik Distribusi Atribut................................. 153 6.1.1.1.6 Pengujian Simpan Hasil Deteksi Outlier .................................. 154 6.1.1.1.7 Kesimpulan Hasil Pengujian Blackbox ..................................... 155 6.1.1.2 Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data ... 155 6.1.1.2.1 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis ............................................................. 156 6.1.1.2.2 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Prestasi ............................................................. 157 6.1.1.2.3 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 .......................................................................................... 158 6.1.1.2.4 Kesimpulan Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data ................................................................................... 159 6.1.1.3 Hasil Pengujian Validitas dan Review oleh Pengguna ....................... 159 6.1.1.3.1 Perbandingan Perhitungan Manual dan Hasil Sistem ............... 159 6.1.1.3.2 Hasil Deteksi dari Sistem untuk Pengujian Review dan Validitas oleh Pengguna ......................................................................................... 162 6.1.1.3.3 Kesimpulan Hasil Pengujian Review dan Validitas oleh Pengguna .................................................................................................................. 164 6.2 Kelebihan dan Kekurangan Sistem ............................................................... 168 6.2.1 Kelebihan Sistem ................................................................................... 168 6.2.2 Kekurangan Sistem................................................................................ 169 BAB VII .............................................................................................................. 170 KESIMPULAN DAN SARAN ........................................................................... 170 7.1 Kesimpulan ................................................................................................... 170 7.2 Saran .............................................................................................................. 171 DAFTAR PUSTAKA ......................................................................................... 172 LAMPIRAN I Deskripsi Usecase ....................................................................... 174 LAMPIRAN II Narasi Use Case ......................................................................... 176 xvi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN III Diagram Aktivitas .................................................................... 184 LAMPIRAN IV Diagram Sequence ................................................................... 193 LAMPIRAN V Diagram Kelas .......................................................................... 200 LAMPIRAN VI Listing Program........................................................................ 208 xvii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL Tabel 4.1 Tabel Nama Kelas ................................................................................ 55 Tabel 5.1 Tabel Implementasi Kelas .................................................................. 113 Tabel 6.1 Tabel Rencana Pengujian ................................................................... 148 Tabel 6.2 Tabel Pengujian Input Data ................................................................ 149 Tabel 6.3 Tabel Pengujian Koneksi Database ................................................... 151 Tabel 6.4 Tabel Pengujian Seleksi Atribut ......................................................... 152 Tabel 6.5 Tabel Pengujian Deteksi Outlier ........................................................ 153 Tabel 6.6 Tabel Pengujian Lihat Grafik Distribusi Atribut................................ 154 Tabel 6.7 Tabel Pengujian Simpan Hasil Deteksi Outlier ................................. 154 Tabel 6.8 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M dan dmin yang berubahubah ..................................................................................................................... 156 Tabel 6.9 Tabel Jumlah Outlier Mahasiswa Teknik InformartikaAngkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan Nilai M dan dmin yang berubah-ubah …………………………………………………………………………………..157 Tabel 6.10 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan nilai M dan dmin yang berubah-ubah ....................................................................................................... 158 Tabel 6.11 Tabel Perbandingan Hasil Outlier Mahasiswa Program Studi Teknik Informatika Angkatan 2007 Jalur Tes Tertulis ................................................... 160 Tabel 6.12 Tabel Nilai per Atribut Hasil Outlier Mahasiswa Program Studi Teknik Informatika Angkatan 2007 Jalur Tes Tertulis ....................................... 160 Tabel 6.13 Tabel Hasil Outlier untuk Data Mahasiswa Program Studi Teknik Informatika angkatan 2007 dan 2008 Jalur Tes Tertulis ..................................... 162 Tabel 6.14 Tabel Hasil Outlier untuk Data Mahasiswa Program Studi Teknik Informatika angkatan 2007 dan 2008 Jalur Prestasi ........................................... 163 xviii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 6.15 Tabel Hasil Outlier untuk Data Mahasiswa Program Studi Teknik Informatika angkatan 2007 dan 2008 Jalur Tes Tertulis dan Prestasi ................ 163 DAFTAR GAMBAR Gambar 2.1 Tahapan dalam Knowledge Discovery in Databases (Han & Kamber,2006)........................................................................................................ 16 Gambar 2.2 Scatterplot dari data dan objek (Hatta, 2012) .................................. 19 Gambar 3.1 Dekripsi Tabel pada Gudang Data „data_mahasiswa‟ ..................... 27 Gambar 3.2 Dekripsi Tabel „fact_lengkap2‟ ....................................................... 28 Gambar 3.3 Data pada Tabel „fact_lengkap2‟ ..................................................... 29 Gambar 3.4 Gambar Data Akademik Mahasiswa ............................................... 33 Gambar 3.5 Perhitungan jarak antar objek dengan rumus euclidean distance .... 34 Gambar 3.6 Pencarian jumlah tetangga dalam radius D dan penentuan outlier . 35 Gambar 3.7 Hasil Pencarian Outlier.................................................................... 36 Gambar 4.1 Diagram Use Case ........................................................................... 40 Gambar 4.2 Dekripsi Tabel pada Basisdata „data_mahasiswa‟ ........................... 42 Gambar 4.3 Dekripsi Tabel „fact_lengkap2‟ ....................................................... 42 Gambar 4.4 Data pada Tabel „fact_lengkap2‟ .................................................... 43 Gambar 4.5 Proses Umum Sitem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop ................................................................................................ 51 Gambar 4.6 Diagram Konteks ............................................................................. 52 Gambar 4.7 Diagram Kelas Analisis ................................................................... 54 Gambar 4.8 Ilustrasi Struktur Data Matriks Dua Dimensi .................................. 58 Gambar 4.9 Ilustrasi Struktur Data Matriks Dua Dimensi Setelah Dilakukan Perhitungan Jarak antar Vertex.............................................................................. 58 xix PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.10 Ilustrasi Struktur Data Graf .......................................................... 59 Gambar 4.11 Diagram Kelas Desain .................................................................. 61 Gambar 4.12 Tampilan Halaman Awal ............................................................... 83 Gambar 4.13 Tampilan Halaman Awal (Bagian Preprocess) ............................. 85 Gambar 4.14 Tampilan Halaman Utama (Bagian Deteksi Outlier) .................... 86 Gambar 4.15 Tampilan Halaman Pilih Database ................................................ 87 Gambar 4.16 Tampilan Halaman Tampil Tabel .................................................. 88 Gambar 4.17 Tampilan Halaman Distribusi Atribut ........................................... 89 Gambar 4.18 Tampilan Halaman Konfirmasi Keluar ......................................... 90 Gambar 4.19 Tampilan Halaman Bantuan .......................................................... 91 Gambar 5.1 Antarmuka Halaman Awal .............................................................. 93 Gambar 5.2 Antarmuka Halaman Utama (tabbed pane Preprocess) .................. 94 Gambar 5.3 Antarmuka Halaman Utama (tabbed pane Deteksi Outlier) ........... 94 Gambar 5.4 Kotak Dialog Saat Memilih File .xls ............................................... 95 Gambar 5.5 Antarmuka Halaman Utama (data file .xls tertampil) ...................... 95 Gambar 5.6 Kotak Dialog Saat Memilih File .csv .............................................. 96 Gambar 5.7 Antarmuka Halaman Utama (data file .csv tertampil) ..................... 96 Gambar 5.8 Antarmuka Halaman Utama (sebelum dilakukan fungsi Seleksi Atribut) .................................................................................................................. 97 Gambar 5.9 Antarmuka Detail Fungsi Seleksi Atribut (pada Halaman Utama) . 98 Gambar 5.10 Antarmuka Halaman Utama (setelah dilakukan fungsi Seleksi Atribut) .................................................................................................................. 98 Gambar 5.11 Antarmuka Halaman Utama (tabbed pane Deteksi Outlier) ......... 99 Gambar 5.12 Kotak Dialog Simpan Hasil Outlier ............................................ 100 Gambar 5.13 Pesan Ketika Proses Penyimpanan Hasil Outlier Berhasil Dilakukan ............................................................................................................ 100 Gambar 5.14 Antarmuka Halaman Distribusi Atribut ...................................... 101 Gambar 5.15 Antarmuka Grafik Distribusi Atribut .......................................... 102 Gambar 5.16 Antarmuka Halaman Pilih Database ........................................... 103 xx PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 5.17 Antarmuka Halaman Pilih Database (Setelah pengguna memilih basisdata) ............................................................................................................. 103 Gambar 5.18 Pesan Koneksi Berhasil ............................................................... 104 Gambar 5.19 Antarmuka Halaman Tampil Tabel ............................................. 104 Gambar 5.20 Antarmuka Halaman Utama Beserta Data dari Tabel dalam Basisdata ............................................................................................................. 105 Gambar 5.21 Antarmuka Halaman Bantuan ..................................................... 106 Gambar 5.22 Antarmuka Halaman Missing Values .......................................... 107 Gambar 5.23 Antarmuka Halaman Konfirmasi Keluar ..................................... 107 Gambar 5.24 Pesan Berhasil Keluar dari Sistem .............................................. 108 Gambar 5.25 Pesan Kesalahan (1) ..................................................................... 108 Gambar 5.26 Pesan Kesalahan (2) ..................................................................... 109 Gambar 5.27 Pesan Kesalahan (3) ..................................................................... 109 Gambar 5.28 Pesan Kesalahan (4) ..................................................................... 110 Gambar 5.29 Pesan Kesalahan (5) ..................................................................... 110 Gambar 5.30 Pesan Kesalahan (6)..................................................................... 111 Gambar 5.31 Pesan Kesalahan (7) ..................................................................... 111 Gambar 5.32 Pesan Kesalahan (8) ..................................................................... 111 Gambar 5.33 Pesan Kesalahan (9) ..................................................................... 112 Gambar 6.1a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M = 1 dan dmin berubah-ubah ................ 156 Gambar 6.1b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M = 2 dan dmin berubah-ubah ................ 156 Gambar 6.2a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M berubah-ubah dan dmin = 1 ................ 156 Gambar 6.2b Grafik Hasil Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Masuk Semester 1 dengan Nilai M berubah-ubah dan dmin = 2 ........................ 156 Gambar 6.3a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M = 2 dan dmin berubah-ubah ................ 157 Gambar 6.3b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M = 3 dan dmin berubah-ubah ................ 157 Gambar 6.4a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin = 1 ................ 157 xxi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 6.4b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin = 2 ................ 157 Gambar 6.5a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M=4 dan dmin berubah-ubah .. 158 Gambar 6.5b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M=5 dan dmin berubah-ubah .. 158 Gambar 6.6a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin=1 .. 158 Gambar 6.6b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin=2 .. 158 xxii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR LISTING PROGRAM Listing Program 5.1 Kelas DatabaseConnection.java...................................... 114 Listing Program 5.2 Kelas Graph_NaiveNL.java ............................................. 116 Listing Program 5.3 Kelas CheckBoxTableModel.java .................................... 118 Listing Program 5.4 Kelas DatabaseController.java ....................................... 120 Listing Program 5.5 Kelas DiagramBatang.java .............................................. 121 Listing Program 5.6 Kelas HalamanUtama.java............................................... 122 Listing Program 5.7 Kelas HalamanDistribusiAtribut.java .............................. 135 Listing Program 5.8 Kelas HalamanPilihDatabase.java ................................... 138 Listing Program 5.9 Kelas HalamanTampilTabel.java. ................................... 141 Listing Program 5.10 Kelas Vertex_NaiveNL.java ........................................... 143 Listing Program 5.11 Implementasi Pembentukan Matriks Dua Dimensi ....... 145 Listing Program 5.12 Method addVertex .......................................................... 145 Listing Program 5.13 Method addEdge ........................................................... 146 Listing Program 5.14 Method euclideanDistance ........................................... 146 xxiii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB I PENDAHULUAN 1.1 Latar Belakang Data merupakan sesuatu yang belum mempunyai arti bagi penerimanya dan masih memerlukan adanya suatu pengolahan. Data bisa berwujud suatu keadaan, gambar, suara, huruf, angka, bahasa ataupun simbol-simbol lainnya yang bisa kita gunakan sebagai bahan untuk melihat lingkungan, obyek, kejadian ataupun menemukan suatu konsep dan pengetahuan baru. Perkembangan teknologi informasi memungkinkan kita untuk menyimpan data dalam jumlah yang besar tetapi dari sekumpulan data tersebut belum tentu kita mengetahui informasi yang tersembunyi di dalamnya. Penambangan data adalah ekstraksi pola yang menarik dari data dalam jumlah besar. Suatu pola dikatakan menarik apabila pola tersebut tidak sepele, implisit, tidak diketahui sebelumnya, dan berguna. Penambangan data merupakan salah satu dari rangkaian KDD (Knowledge Discovery in Databases). Tahapan proses dalam KDD adalah pembersihan data, integrasi data, pemilihan data, transformasi data, evaluasi pola, dan penyajian pola (Han & Kamber 2006). Setelah tahap preprocessing, data dapat diolah dengan berbagai teknik dalam penambangan data untuk menemukan asosiasi, klasifikasi, clustering (pengelompokan), maupun untuk mendeteksi adanya outlier. Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam penambangan data. Penelitian tersebut bermanfaat untuk mendeteksi 1 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2 perilaku langka seperti penipuan menggunakan kartu kredit, deteksi penyusupan pada jaringan komunikasi, diagnosa medis, dan lain-lain. Outlier sendiri merupakan sebuah data pada sekumpulan data yang sangat berbeda dibandingkan dengan sifat umum dari sekumpulan data lainnya. Pendeteksian outlier berusaha untuk mengenali data yang langka tersebut karena kemungkinan memiliki informasi yang bermanfaat. Banyak cara yang digunakan untuk mendeteksi outlier dengan pendekatan penambangan data antara lain metode grafis, metode statistik, metode distance based, metode density based, dan metode deviation based. Pendekatan distance based merupakan sebuah metode pencarian outlier yang populer dengan menghitung jarak pada objek tetangga terdekat. Dalam pendekatan ini, satu objek melihat objek-objek lain dalam lokal ketetanggaannya. Apabila ketetanggaannya relatif dekat maka dikatakan sebagai objek normal, akan tetapi jika ketetanggaan antar objek relatif sangat jauh maka dikatakan objek tersebut tidak normal. Pendekatan distance based menyediakan beberapa algoritma pencarian outlier, salah satunya adalah algoritma Naïve Nested Loop. Algoritma Naïve Nested Loop mencari tetangga dari masing-masing objek dalam radius jarak yang ditentukan di sekitar objek tersebut. Penambangan data juga bergerak dalam bidang pendidikan dengan mengembangkan metode untuk menemukan pengetahuan baru dari data yang diambil dari lingkup dunia pendidikan. Data dapat diperoleh dari rekaman data siswa atau mahasiswa yang ada di institusi pendidikan. Dalam penelitian Tair dan El-Halees (2012) dilakukan deteksi outlier dalam bidang pendidikan yang berguna PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3 untuk mencari mahasiswa dengan permasalahan pembelajarannya. Data yang digunakan adalah data mahasiswa dan memakai pendekatan distance based dan density based. Hasil yang diperoleh berupa pengetahuan mengenai outlier yang menggambarkan kejadian langka, contohnya beberapa outlier adalah mahasiswa dengan nilai indeks prestasi tinggi namun terletak pada kumpulan yang berbeda dengan kebanyakan mahasiswa lain yang juga memiliki indeks prestasi tinggi. Maka pada penelitian ini akan dilakukan pendeteksian outlier menggunakan algoritma Naïve Nested Loop pada kumpulan data mahasiswa Universitas Sanata Dharma, Yogyakarta. Data tersebut diperoleh dari gudang data akademik mahasiswa Universitas Sanata Dharma, Yogyakarta hasil penelitian Rosa, dkk (2013). Data mahasiswa terdiri atas data nilai hasil seleksi masuk dan data indeks prestasi selama empat semester pertama dan pendeteksian outlier dilakukan untuk melihat mahasiswa mana saja yang menjadi anggota outlier pada setiap semesternya. Hasil penelitian diharapkan dapat memberikan pengetahuan baru pada bidang pendidikan untuk melihat kejadian langka dari data akademik mahasiswa. Setelah menemukan outlier dari sekumpulan data akademik tersebut, selanjutnya hasil outlier akan dianalisa. 1.2 Rumusan Masalah Berdasarkan latar belakang di atas, rumusan masalah yang diidentifikasi adalah : Bagaimana mendeteksi outlier menggunakan algoritma Naïve Nested Loop dengan studi kasus data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta ? PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4 1.3 Batasan Masalah Batasan masalah pada penelitian ini adalah sebagai berikut : 1. Penggunaan algoritma Naïve Nested Loop yang digunakan sebagai sarana untuk mendeteksi outlier pada kumpulan data numerik nilai hasil seleksi masuk dan nilai indeks prestasi semester satu sampai empat mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta. 2. Data yang digunakan adalah kumpulan data numerik nilai hasil seleksi masuk dan nilai indeks prestasi semester satu sampai empat mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta tahun angkatan 2007 dan 2008. Nilai hasil seleksi masuk terdiri dari dua macam yaitu nilai hasil penerimaan mahasiswa yang masuk melalui jalur prestasi dan tes tertulis. Untuk mahasiswa yang menempuh jalur prestasi, nilai terdiri dari nilai kognitif rapor SMA yang telah dihitung rata-ratanya. Sedangkan untuk mahasiswa yang menempuh jalur masuk tes tertulis, nilai tes terdiri dari nilai penalaran numerik, nilai penalaran verbal, nilai hubungan ruang, nilai bahasa Inggris, dan nilai kemampuan numerik. 1.4 Tujuan Penelitian Tujuan dari penelitian ini adalah sebagai berikut : 1. Menerapkan algoritma Naïve Nested Loop untuk mendeteksi outlier pada kumpulan data numerik nilai hasil seleksi masuk dan nilai indeks PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5 prestasi semester satu sampai empat mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta. 2. Menganalisis hasil deteksi outlier pada kumpulan data numerik nilai hasil seleksi masuk dan nilai indeks prestasi semester satu sampai empat mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta. 1.5 Luaran Sebuah sistem berbasis teknologi informasi yang mampu mendeteksi outlier pada sekumpulan data numerik nilai hasil seleksi masuk dan nilai indeks prestasi semester satu sampai empat mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta menggunakan algoritma Naïve Nested Loop. 1.6 Manfaat Penelitian Manfaat dari penelitian ini adalah sebagai berikut : 1. Penelitian ini digunakan untuk menambah pengetahuan mengenai langkah-langkah penerapan algoritma Naïve Nested Loop dalam mendeteksi outlier berdasarkan kumpulan data numerik nilai hasil seleksi masuk dan nilai indeks prestasi semester satu sampai empat mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta. 2. Penelitian ini dapat memberikan informasi secara tertulis maupun sebagai referensi terhadap penelitian yang berhubungan dengan kegiatan analisis outlier yang bersumber pada data dibidang pendidikan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6 3. Penelitian ini dapat memberikan pengetahuan baru kepada pembaca mengenai kemungkinan adanya kejadian langka pada data nilai seleksi masuk dan nilai indeks prestasi semester mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta. 1.7 Metodologi Penelitian Dalam penyelesaian tugas akhir ini, langkah-langkah kerja yang akan ditempuh adalah sebagai berikut : 1. Studi Pustaka Studi pustaka, yaitu salah satu metode penelitian yang dilakukan dengan cara mempelajari hal-hal yang berkaitan dengan deteksi outlier menggunakan algoritma Naïve Nested Loop dan mengumpulkan informasi yang didapat dari buku, artikel, karya ilmiah, dan website internet. 2. Teknik Penambangan Data Metodologi kedua dilakukan dengan menggunakan teknik penambangan data yang langkah-langkahnya seperti di bawah ini (Han & Kamber 2006): a. Penggabungan Data ( Data Integration ) Proses menggabungkan data dari beberapa sumber agar data dapat terangkum ke dalam tempat penyimpanan / satu tabel yang utuh. b. Seleksi Data ( Data Selection ) Proses pemilihan atribut-atribut yang relevan untuk dilakukan penambangan data. Sedangkan, atribut yang tidak sesuai akan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7 dihilangkan karena atribut yang diperlukan adalah atribut yang saling bergantung. c. Transformasi Data (Data Transformation) Pada proses ini, data yang sudah diseleksi selanjutnya ditransformasikan ke dalam bentuk yang sesuai untuk ditambang. d. Penambangan Data ( Data Mining ) Proses mengaplikasikan metode yang tepat untuk mendapatkan pola pada suatu kumpulan data. Dalam penelitian ini, metode yang digunakan adalah metode analisis outlier dengan menggunakan pendekatan distance based. Algoritma yang digunakan untuk mendeteksi outlier adalah algoritma Naïve Nested Loop. e. Evaluasi Pola ( Pattern Evaluation ) Tahap ini merupakan bagian dari proses pencarian pengetahuan yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada sebelumnya. f. Presentasi Pengetahuan ( Knowledge Presentation ) Pada tahap ini pola yang telah didapat selanjutnya direpresentasikan kepada pengguna ke dalam bentuk yang lebih mudah untuk dipahami. 1.8 Sistematika Penulisan Adapun sistematika penulisan tugas akhir ini adalah sebagai berikut : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI - 8 BAB I PENDAHULUAN Bab ini menjelaskan latar belakang peneltian, rumusan masalah yang digunakan sebagai acuan, batasan-batasan masalah, tujuan penelitian, luaran, manfaat, metodologi penelitian dan sistematika penulisan. - BAB II LANDASAN TEORI Bab ini menjelaskan dasar-dasar teori yang digunakan sebagai referensi dan acuan dalam penulisan Tugas Akhir, meliputi : pengertian penambangan data, pengertian tentang analisis outlier, hubungan outlier dengan penambangan data, teori-teori yang digunakan untuk penentuan outlier dalam berbagai pendekatan, rangkaian proses KDD (Knowledge Discovery in Databases) kaitannya dengan penambangan data, dan algoritma pedeteksi outlier yaitu, Naïve Nested Loop. - BAB III METODOLOGI PENELITIAN Bab ini menjelaskan mengenai metode yang dipakai dalam penelitian dan pembuatan aplikasi sebagai implementasi. Juga disebutkan pengertian dan hal-hal yang terkait dengan metode yang dipakai tersebut. - BAB IV ANALISIS DAN PERANCANGAN SISTEM Bab ini berisi tentang indentifikasi sistem, pemrosesan data awal, input, proses, dan output, perancangan sistem, perancangan struktur data serta perancangan antarmuka yang akan dibuat. - BAB V IMPLEMENTASI PENAMBANGAN DATA PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9 Bab ini dapat berisi mengenai listing program dari hasil implementasi yang telah dibuat beserta penjelasan singkat dan output hasil dari implementasi tersebut. - BAB VI PENGUJIAN DAN ANALISIS HASIL PENGUJIAN Bab ini berisi tentang pembahasan pengujian program dan analisis dari hasil pengujian program yang telah diimplementasikan. - BAB VII KESIMPULAN DAN SARAN Bab ini berisi kesimpulan yang merupakan rangkaian dari hasil analisis kinerja pada bab sebelumnya dan saran untuk pengembangan penelitian selanjutnya. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB II LANDASAN TEORI Pada bab ini akan dipaparkan pengertian penambangan data, pengertian tentang analisis outlier, hubungan outlier dengan penambangan data, teori-teori yang digunakan untuk penentuan outlier dalam berbagai pendekatan. Dibahas pula serangkaian proses KDD (Knowledge Discovery in Databases) kaitannya dengan penambangan data. Teori penentuan outlier yang dipaparkan akan secara khusus membahas algoritma pedeteksi outlier Distance-Based, khususnya algoritma Naïve Nested Loop. 2.1 Penambangan Data 2.1.1 Definisi Definisi umum dari penambangan data adalah serangkaian proses untuk menggali nilai tambah berupa pengetahuan yang selama ini tidak diketahui secara manual dari suatu kumpulan data (Iko, 2007). Penambangan data mengekstraksi pola yang menarik dari data dalam jumlah besar. Suatu pola dikatakan menarik apabila pola tersebut tidak sepele, implisit, tidak diketahui sebelumnya, dan berguna. 2.1.2 Permasalahan dalam Penambangan Data Istilah penambangan data sudah berkembang jauh dalam mengadaptasi setiap bentuk analisa. Pada dasarnya penambangan data berhubungan dengan analisa data dan penggunaan teknik-teknik perangkat lunak untuk mencari pola dan keteraturan dalam himpunan 10 data yang sifatnya tersembunyi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11 Dengan diperolehnya informasi-informasi yang berguna dari data-data yang ada, hubungan antar item dalam transaksi maupun informasi potensial lain yang ada di dalamnya dapat diekstrak dan dianalisa serta diteliti secara lebih lanjut dari berbagai sudut pandang. Permasalahan dalam penambangan data dilatarbelakangi oleh kondisi dimana data ada pada jumlah yang sangat besar sehingga menimbulkan ledakan informasi yang dialami oleh perusahaan, institusi atau organisasi. Kondisi data dalam jumlah yang besar tersebut merupakan salah satu akumulasi dari data yang terekam bertahun-tahun dalam suatu transaksi. Peranan penambangan data dibutuhkan dalam menangani ledakan volume data, dengan menggunakan teknik penambangan data yang dapat digunakan untuk menghasilkan informasi tertentu yang dibutuhkan dari kumpulan data tersebut. 2.1.3 Fungsionalitas Penambangan Data Berikut fungsionalitas dan tipe pola yang dapat ditemukan dengan penambangan data (Han & Kamber,2006) : a. Deskripsi konsep / kelas : Karaterisasi dan diskriminasi Data dapat diasosiasikan dengan suatu kelas atau konsep. Contoh : Sebuah toko elektronik dapat membuat kelas item seperti komputer, printer, dan konsep untuk konsumen seperti bigspenders dan budgetspenders. Hal ini bermanfaat untuk mendeskripsikan masingmasing kelas atau konsep tersebut dengan deskripsi kelas atau konsep. Deskripsi ini didapat melalui karakterisasi data dengan meringkas data-data dari kelas dalam pembelajaran secara umum PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 12 atau diskriminasi data dengan membandingkan target kelas dengan satu atau lebih kelas lain. b. Analisis Asosiasi (Korelasi dan kausalitas) Analisis asosiasi adalah pencarian aturan-aturan asosiasi yang menunjukkan kondisi-kondisi nilai atribut yang sering terjadi bersama-sama dalam sekumpulan data. Analisis asosiasi sering digunakan untuk menganalisa data transaksi. c. Klasifikasi dan Prediksi Klasifikasi adalah proses menemukan model atau fungsi yang menjelaskan dan membedakan kelas-kelas atau konsep, dengan tujuan agar model yang diperoleh dapat digunakan untuk memprediksi kelas atau objek yang memiliki label kelas yang tidak diketahui. Model yang diturunkan didasarkan pada analisis dari data training (objek data yang memiliki label kelas yang diketahui). Model yang diturunkan dapat direpresentasikan dalam berbagai bentuk seperti aturan IF-THEN klasifikasi, pohon keputusan, formula ,matematika atau jaringan syaraf tiruan. d. Analisis Klaster Tidak seperti klasifikasi dan prediksi, yang menganalisis objek data yang diberi label kelas, clustering menganalisis objek data dimana label kelas tidak diketahui. Clustering dapat digunakan untuk menentukan label kelas yang tidak diketahui dengan cara mengelompokkan data untuk membentuk kelas baru. Prinsip dalam PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 clustering adalah memaksimalkan kemiripan intra-class dan meminimumkan kemiripan inter-class. Clustering sering disebut segmentasi data karena clustering mempartisi data yang besar ke dalam grup sesuai dengan kesamaannya. Clustering dapat digunakan untuk deteksi outlier, dimana outlier adalah suatu nilai yang jauh dari semua klaster lain. e. Analisis Outlier Database dapat mengandung objek data yang tidak sesuai dengan sifat umum atau model data. Objek data tersebut adalah outlier. Outlier merupakan objek data yang tidak mengikuti perilaku umum dari data. Outlier dapat dianggap sebagai pengecualian atau noise. Analisis data outlier dinamakan outlier mining. Teknik ini berguna untuk fraud detection (deteksi penipuan) dan rare events analysis (analisis kejadian langka). Outlier dapat dideteksi dengan menggunakan tes statistik yang mengasumsikan distribusi atau probabilitas model data menggunakan distance measures, dimana objek yang memiliki jarak yang jauh dari klaster-klaster lainnya dianggap outlier atau anomali. f. Analisis Trend dan Evolusi Analisis evolusi data menjelaskan dan memodelkan tren dari objek yang memiliki perilaku yang berubah setiap waktu. Teknik ini dapat meliputi karateristik, diskriminasi, asosiasi, klasifikasi, atau clustering dari data yang berkaitan dengan waktu. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 14 2.2 Knowledge Discovery in Databases (KDD) 2.2.1 Kaitan Penambangan Data dengan KDD Penambangan data merupakan salah satu dari rangkaian Knowledge Discovery in Database (KDD) yang umumnya meliputi data preprocessing, data mining, dan post processing (Han & Kamber, 2006). Knowledge Discovery in Databases berhubungan dengan teknik integrasi dan penemuan ilmiah, interpretasi dan visualisasi dari pola-pola pada sejumlah data. 2.2.2 Tahapan dalam Knowledge Discovery in Databases (KDD) Berikut ini merupakan serangkaian proses yang dalam tahapan KDD (Tan, 2005): 1. Pembersihan data dan integritas data (Cleaning & Integration) Proses ini digunakan untuk menghilangkan data yang tidak konsisten dan bersifat noise dari data yang terdapat di berbagai basisdata yang mungkin berbeda format maupun platform yang kemudian diintegrasikan dalam satu tempat penyimpanan yang utuh. 2. Seleksi dan transformasi data (Selection and Transformation) Data yang ada dalam basisdata kemudian direduksi untuk mendapatkan hasil yang akurat. Beberapa cara seleksi, antara lain: Sampling, adalah seleksi subset yang mewakili suatu sifat populasi data yang besar Denoising, adalah proses menghilangkan noise dari data yang akan ditranformasikan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15 Feature extraction, adalah proses mengekstraksi spesifikasi data yang sesuai dengan konteks tertentu. Transformasi data diperlukan sebagai tahap pre-processing agar data siap untuk ditambang. 3. Penambangan data (Data Mining) Data yang telah ditransformasi, kemudian ditambang dengan berbagai teknik. Proses penambangan data adalah proses mencari pola atau informasi menarik dalam data terpilih dengan menggunakan fungsi-fungsi tertentu. Fungsi atau algoritma dalam data mining sangat bervariasi, dimana pemilihannya bergantung pada tujuan dan proses pencarian pengetahuan secara menyeluruh. 4. Evaluasi pola dan presentasi pengetahuan Tahap ini merupakan bagian dari proses pencarian pengetahuan yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada sebelumnya. Langkah terakhir KDD adalah mempresentasikan pengetahuan dalam bentuk yang mudah dipahami pengguna. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 16 Gambar 2.1 Tahapan dalam Knowledge Discovery in Databases (Han & Kamber,2006) 2.3 Analisa Outlier 2.3.1 Definisi Outlier Outlier merupakan kumpulan data yang dianggap memiliki sifat yang berbeda, tidak konsisten dibandingkan dengan kebanyakan data lainnya (Han & Kamber, 2006). Outlier sering dianggap sebagai noise , namun untuk kasuskasus tertentu justru informasi yang tidak konsisten tersebut bisa dikatakan lebih menarik dan bermanfaat. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 17 Dalam analisis outlier terdapat dua masalah besar yaitu penentuan data apa yang dapat dipertimbangkan sebagai outlier dan menemukan metode yang efisien untuk menggali outlier yang ditetapkan. 2.3.2 Hubungan Antara Penambangan Data dengan Outlier Kecanggihan dan kemungkinan otomatisasi algoritma penambangan data dibutuhkan untuk mendukung kinerja ilmuwan dan ahli statistika. Sekumpulan data yang ada dapat meningkat secara drastis, hal ini memperjelas bahwa perangkat penambangan data yang baik akan dibutuhkan untuk pemanfaatan data dalam kebutuhan strategi penelitian (Knoor,2002). Walaupun secara tradisional ilmuwan mampu menyelesaikan pengolahan data dengan jumlah atribut yang sedikit secara efektif, namun ukuran kumpulan data dan jumlah dimensi dalam jumlah yang besar telah terbukti menjadi kunci penghambat pada analisis data (Han & Kamber, 2006). Salah satu permasalahan dalam penambangan data adalah identifikasi outlier secara efisien pada sekumpulan data yang memiliki lebih dari satu jumlah atribut. Permasalahan lain adalah jumlah informasi tambahan yang dapat disediakan oleh algoritma pendeteksi outlier. Dalam beberapa teknik deteksi outlier yang ada, terdapat tahapan identifikasi untuk menyediakan penjelasan atau deskripsi data mana saja yang menjadi outlier pada sebuah kumpulan data dan menyediakan informasi mengenai makna hubungan antar outlier. Meskipun dapat dikatakan bahwa outlier merupakan data yang cukup berbeda dari data lain, masih sedikit PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 18 persetujuan yang menyatakan seperti apakah ketentuan outlier yang bermakna (Knorr, 2002). 2.3.3 Penyebab Outlier Outlier dapat disebabkan karena data berasal dari sumber yang berbeda, variasi alami dari data itu sendiri, dan kesalahan saat pengukuran atau eksekusi data. Adanya data outlier ini akan membuat analisis terhadap serangkaian data menjadi bias, atau tidak mencerminkan fenomena yang sebenarnya. Istilah outlier juga sering dikaitkan dengan nilai esktrem, baik ekstrem besar maupun ekstrem kecil. Sebagai ilustrasi, jika ada empat mahasiswa, mahasiswa pertama mempunyai uang saku per bulan Rp. 500 ribu, mahasiswa kedua Rp. 600 ribu, mahasiswa ketiga Rp. 700 ribu, dan mahasiswa keempat karena merupakan anak orang kaya, mempunyai uang saku per bulan sampai dengan Rp. 5 juta. Secara sekilas tampak bahwa nilai 5 juta relatif jauh dibandingkan uang saku ketiga mahasiswa yang lain. 2.3.4 Manfaat Outlier Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam topik penambangan data. Penelitian ini bermanfaat untuk mendeteksi perilaku yang tidak normal seperti deteksi penyalahgunaan kartu kredit, deteksi adanya penyusupan pada jaringan komunikasi, analisis medis, segmentasi data pelanggan yang berkaitan dengan pemasaran barang. Banyak metode telah dikembangkan untuk menyelesaikan masalah ini, namun kebanyakan hanya fokus pada data dengan atribut yang seragam, yaitu data numerik atau data kategorikal saja. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 19 2.3.5 Berbagai Macam Pendekatan Pendeteksi Outlier 1. Metode Grafis Metode ini dilakukan dengan cara memotong data dengan observasi ke-i (i=1, 2, 3,…,n). Dalam beberapa software statistika, metode ini dilakukan dalam menu scatterplot. Dari plot tersebut, pencilan akan nampak memisahkan diri dari kumpulan sebagian besar data. Gambar 2.2 Scatterplot dari data dan objek (Hatta, 2012) Panah pada plot tersebut menunjuk pada data yang diduga menjadi outlier. Keuntungan dari metode ini adalah mudah dipahami (tanpa melibatkan perhitungan yang rumit) dan menarik karena menampilkan data secara grafis (gambar). Kelemahan metode ini adalah keputusan bahwa data tersebut termasuk pencilan atau tidak bergantung pada kebijakan (judgement) peneliti, karena hanya mengandalkan visualisasi grafis (Hatta, 2012). 2. Metode Statistik Cara paling sederhana adalah dengan cara statistik. Perlu dilakukan perhitungan rata-rata dan standar deviasi. Kemudian berdasarkan nilai PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 20 tersebut dibuat fungsi threshold yang berpotensi untuk dinyatakan sebagai outlier. Pendekatan distribusi statistik untuk deteksi outlier mengasumsikan model distribusi dan probabilitas untuk sekumpulan data (misalnya, distribusi normal atau Poisson) untuk selanjutnya mengidentifikasi outlier menggunakan model tes discordancy (kejanggalan). Pengujian membutuhkan pengetahuan dari parameter kumpulan data (seperti distribusi data), pengetahuan distribusi parameter (seperti rata-rata), dan perkiraan jumlah outlier. 3. Metode Distance-based Sebuah metode pencarian outlier yang popular dengan menghitung jarak pada objek tetangga terdekat (nearest neighbor). Dalam pendekatan ini, satu objek melihat objek-objek local neighborhood yang didefinisikan dengan k-nearest neighbor. Jika ketetanggaan antar objek relatif dekat maka dikatakan objek tersebut normal, akan tetapi jika ketetanggaan antar objek relatif sangat jauh maka dikatakan objek tersebut tidak normal. Dengan menggunakan pendekatan Distance Based, objek O pada dataset D adalah distance based outlier (DB) dengan parameter pct dan dmin. Outlier DB adalah objek O pada kumpulan data T sedemikian rupa bahwa setidaknya ada sebagian kecil pct objek dalam T terletak pada jarak lebih besar dari D dari O. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 21 Objek data dikatakan sebagai outlier apabila objek tersebut memiliki objek tetangga yang sangat sedikit pada jarak tertentu dan memiliki jarak jauh dibandingkan dengan jarak rata-rata objek data tetangga terdekat. Kelebihan dari Metode Distance-Based adalah pendekatannya yang cukup sederhana. Sedangkan, kekurangan Metode DistanceBased adalah a. Untuk basisdata yang besar akan memakan biaya yang besar b. Sangat tergantung pada nilai parameter yang dipilih c. Tidak dapat menangani kasus himpunan data yang memiliki kepadatan berbeda pada daerah yang berbeda d. Waktu proses deteksi dan hasil deteksi kurang akurat dibandingkan dengan metode Density-Based (Handriyani et al., 2009) 4. Metode Density-Based Metode density-based tidak secara eksplisit mengklasifikasikan sebuah objek adalah outlier atau bukan, akan tetapi lebih kepada pemberian nilai kepada objek sebagai derajat kekuatan objek tersebut dapat dikategorikan sebagai outlier. Ukuran derajat kekuatan ini adalah local outlier factor (LOF). Pendekatan untuk pencarian outlier ini hanya membutuhkan satu parameter yaitu MinPts, dimana MinPts adalah jumlah tetangga terdekat yang digunakan untuk mendefinisikan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 22 local neighborhood suatu objek. MinPts diasumsikan sebagai jangkauan dari nilai batas bawah dan batas atas parameter MinPts. Untuk selanjutnya semua objek dalam sekumpulan data akan dihitung nilai LOF-nya. Objek data akan dianggap memiliki nilai outlier yang tinggi jika pada jarak k tetangga terdekat memiliki kepadatan yang sangat kecil. Semakin banyak objek – objek tetangga dalam jarak k-tetangga terdekat, objek ini memiliki nilai LOF mendekati 1 dan tidak seharusnya diberi label sebagai outlier. Kelebihan Metode Density Based adalah dapat digunakan untuk data yang kepadatannya berbeda. Sedangkan, kekurangan Metode Density Based adalah : a. Pemilihan parameter juga menjadi satu penentu yang kuat dalam menentukan nilai kepadatan b. Tanpa LOF maka objek yang berada pada klaster yang berbeda dapat dianggap outlier 5. Metode Deviation Based Pada dasarnya metode Deviation-Based lebih memiliki akurasi yang baik dalam mengidentifikasi outlier karena metode ini menggunakan data cubes untuk mengidentifikasi daerah-dearah anomali pada data multidimensional yang besar.Metode Deviation Based mengindentifikasi outlier dengan menentukan karateristik utama dari objek dalam sebuah grup. Objek yang memiliki deviasi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 23 dari deskripsi tersebut akan dianggap sebagai outlier (Han & Kamber, 2006). Terdapat dua teknik yang digunakan dalam pendekatan deviation based, yaitu a. Teknik Sequential Exception, dengan mensimulasikan cara manusia membedakan objek yang berbeda dari sederetan objek normal b. Teknik OLAP (OnLine Analysis Processing) data cube : menggunakan data cube untuk mengindentifikasi daerah-daerah outlier pada data multidimensional yang besar Data preprocessing dalam deteksi outlier merupakan hal yang penting untuk diperhatikan karena data yang akan dihasilkan dalam deteksi outlier ini khusus pada kasus data berdimensi sangat tinggi. Reduksi dimensi merupakan satu hal yang sangat menarik untuk diteliti lebih lanjut. 2.4 Metode Pendeteksi Outlier dengan Pendekatan Distance-Based Sebuah objek, o pada kumpulan data, D , adalah distance-based (DB) outlier dengan parameter pct dan dmin, jika setidaknya ada bagian dari pct , dalam objekobjek pada D terletak lebih jauh dari jarak dmin ke o. Dengan kata lain, daripada mengandalkan uji statistik, kita bisa memikirkan outlier berbasis jarak seperti objek-objek tersebut yang tidak memiliki cukup tetangga, dimana tetangga didefinisikan berdasarkan jarak dari objek yang diberikan. Dibandingkan dengan metode pendekatan statistik , deteksi outlier berbasis jarak menyamaratakan ide PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 24 dibalik pengujian discordancy (kejanggalan) untuk berbagai macam standar distribusi. Deteksi outlier berbasis jarak menghindari perhitungan yang berlebihan yang dapat dikaitkan dengan ketepatan distribusi yang diamati ke dalam beberapa distribusi standar dan dalam memilih pengujian discordancy (kejanggalan) (Han & Kamber, 2006). Deteksi outlier berbasis jarak mengharuskan pengguna untuk mengatur kedua parameter pct dan dmin. Menemukan pengaturan yang cocok untuk parameter tersebut dapat melibatkan banyak percobaan dan kesalahan. Dalam penentuan parameter pct dan dmin keterlibatan pengguna diperlukan untuk mengubahnya secara berkelanjutan dalam menentukan outlier diberbagai variasi pengujian. Terdapat tiga algoritma pendeteksi outlier dalam pendekatan Distance Based, yaitu algoritma index based, naïve nested loop, block-based nested loop dan cell based. Pada penelitian tugas akhir ini akan menggunakan algoritma naïve nested loop. 2.4.1 Algoritma Naïve Nested Loop Prinsip kerja algoritma Naïve Nested Loop adalah mendeteksi outlier pada sekumpulan data lalu mencari tetangga untuk masing-masing objek dalam radius dmin disekitaran objek tersebut. M adalah jumlah maksimum objek dalam ketetanggaan dmin dari sebuah outlier dan dmin adalah radius atau jarak maksimum ketetanggaan antar objek o. Oleh karena itu, saat sejumlah M+1 tetangga dari objek o ditemukan, jelas bahwa o bukan outlier. Pencarian dilakukan pada semua objek o dalam sekumpulan data tersebut, lalu dihitung jumlah tetangganya dalam radius jarak dmin. Pencarian jumlah tetangga akan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 25 dihentikan saat jumlah tetangga objek o dalam radius dmin sudah mencapai M+1, selanjutnya beralih ke objek selanjutnya. Dalam penelitian yang dilakukan oleh Knoor (2002) nilai M juga dinyatakan sebagai n(1-p), dimana n merupakan jumlah data, p atau disebut juga pct merupakan jumlah minimum objek yang terletak lebih jauh dari jarak o ke dmin. Berikut merupakan cara kerja algoritma Naïve Nested Loop (Jian Pei, 2009) : for j = 1 to n do - set countj = 0 ; - for k=1 to n do if (dist(j,k)<D) then countj++ ; - if countj <= |n(1-p)| then output j as an outlier dimana dist merupakan jarak antara objek j dengan k, dan D yang bernilai sama dengan dmin adalah radius atau jarak maksimum ketetanggaan antar objek o. Sedangkan nilai n(1-p) sama dengan M. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB III METODOLOGI PENELITIAN Pada bab ini akan dipaparkan mengenai perancangan penelitian yang digunakan untuk mencapai tujuan dalam penelitian tugas akhir ini. Tujuan dari penelitian ini adalah menerapkan algoritma Naïve Nested Loop untuk mendeteksi outlier pada kumpulan data numerik hasil seleksi masuk mahasiswa dan nilai indeks prestasi semester satu sampai empat. Kemudian dilanjutkan dengan penjelasan mengenai pengolahan data, penyelesaian data yang ada dengan algoritma Naïve Nested Loop, analisis dan evaluasi hasil outlier yang diperoleh. 3.1 Data Hal yang terpenting dalam suatu penelitian adalah data. Dalam penelitian tugas akhir ini memakai data numerik nilai hasil seleksi masuk dan nilai indeks prestasi semester satu sampai empat mahasiswa program studi Teknik Informatika Universitas Sanata Dharma, Yogyakarta tahun angkatan 2007 dan 2008. Data tersebut diperoleh dari gudang data akademik mahasiswa Universitas Sanata Dharma, Yogyakarta hasil penelitian Rosa, dkk (2013) dalam bentuk skrip kueri .sql. Skrip kueri sql ini berisi data akademik lengkap mahasiswa Universitas Sanata Dharma, namun hanya data yang disebutkan di atas yang akan digunakan dalam kebutuhan penelitian tugas akhir ini. Data akademik ini dipilih karena upaya penelitian deteksi outlier pada mahasiswa dapat memberikan pengetahuan baru mengenai penambangan data yang bergerak dalam bidang pendidikan. 26 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 27 Data akademik mahasiswa program studi Teknik Informatika angkatan 2007-2008 terdiri dari 126 buah. Mahasiswa tersebut telah diterima di Universitas Sanata Dharma melalui dua macam jalur seleksi masuk yaitu, jalur prestasi dan jalur tes tertulis. 3.2 Pengolahan Data Berikut merupakan tahapan yang dilakukan dalam pengolahandata: 1. Penggabungan Data ( Data Integration ) Data yang telah terkumpul akan diolah ke dalam database, data mentah tersebut berbentuk skrip .sql sehingga diolah terlebih dahulu menggunakan perangkat lunak SQLyog agar diketahui data dan tabel apa saja yang ada dalam database tersebut. Setelah skrip dijalankan melalui SQLyog , diketahui bahwa gudang data yang digunakan bernama “data_mahasiswa” dan terdiri dari tabel dim_angkatan, dim_daftarsmu, dim_fakultas, dim_jeniskel, dim_kabupaten, dim_prodi, dim_prodifaks, dim_statustes, dan fact_lengkap2. Gambar 3.1 Dekripsi Tabel pada Gudang Data ‘data_mahasiswa’ 2. Seleksi Data ( Data Selection ) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 28 Setelah dilakukan proses penggabungan data tabel dalam gudang data „data_mahasiswa‟. Selanjutnya dilakukan seleksi data untuk mengambil data dalam tabel „fact_lengkap2‟ karena dalam tabel inilah memuat atribut nilai hasil seleksi tes masuk dan nilai indeks prestasi semester satu hingga empat disimpan. Sedangkan tabel-tabel selain „fact_lengkap2‟ tidak digunakan. Gambar 3.2 Dekripsi Tabel ‘fact_lengkap2’ Pada tabel „fact_lengkap2‟ terdiri atas data akademik mahasiswa diseluruh program studi , sedangkan dalam penelitian ini hanya akan memakai data mahasiswa prodi Teknik Informatika angkatan 2007 dan 2008. Atribut yang tidak dipakai adalah nomor, jumsttb, jummsttb, jumnem, jummtnem, sttb, sk_jeniskelamin, sk_status, sk_kabupaten, sk_daftarsmu, sk_prodi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 29 Gambar 3.3 Data pada Tabel ‘fact_lengkap2’ 3. Transformasi Data (Data Transformation) Pada proses ini, data yang sudah diseleksi untuk selanjutnya ditransformasikan ke dalam bentuk yang sesuai untuk ditambang. Data ditransformasikan dengan metode normalisasi. Dalam tahap ini, diketahui bahwa atribut yang akan digunakan dalam perhitungan deteksi outlier adalah ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, nil15, dan final. Jangkauan nilai atribut ips1, ips2, ips3,dan ips4 adalah 0.00 sampai dengan 4.00. Sedangkan untuk jangkauan nilai atribut nil11, nil12, nil13, nil14, dan nil15 adalah 0 sampai 10. Sementara itu, jangkauan nilai final adalah 0 sampai 100. Sehingga perlu dilakukan normalisasi data untuk menyamaratakan persebaran nilai keseluruhan atribut dengan menggunakan rumus min-max normalization : v' v minA (new _ maxA new _ minA) new _ minA maxA minA Tahapan normalisasi data untuk atribut nil11, nil12, nil13, nil14, nil15, dan final dilakukan untuk menyamakan jangkauan nilai terhadap PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 30 atribut ips1, ips2, ips3, ips4. Sehingga pada saat perhitungan deteksi outlier persebaran nilai atribut hanya berkisar antara 0.00 sampai 4.00. Proses normalisasi data berikut ini berlaku untuk atribut nil11, nil12, nil13, nil14, dan nil15 menggunakan min-max normalization, semisal nil11 adalah 7.00 maka proses normalisasinya adalah : maxA = 10, minA= 0, new_maxA = 4, new_minA= 0, dan v = nil11 dalam hal ini bernilai 7.00 , sehingga proses perhitungannya v1 = (70)/(10-0)*(4-0)+0 = 7/10*4 = 2.80. Sehingga hasil normalisasi nil11 yang awalnya bernilai 7.00 sekarang menjadi 2.80. Berikutnya adalah proses normalisasi data berikut berlaku untuk atribut final menggunakan min-max normalization, semisal nilai final adalah 61.00 maka proses normalisasinya adalah : maxA = 100, minA= 0, new_maxA = 4, new_minA= 0, dan v = final dalam hal ini bernilai 61.00 , sehingga proses perhitungannya v1= (610)/(100-0)*(4-0)+0 = 61/100*4 = 2.44. Sehingga hasil normalisasi nilai final yang awalnya bernilai 61.00 sekarang menjadi 2.44. Setelah nilai atribut nil11, nil12, nil13, nil14, nil15, dan final di normalisasikan dalam kisaran nilai 0.00 - 4.00 maka nilai yang sudah dinormalisasikan inilah yang nantinya akan digunakan sebagai input dalam proses deteksi outlier. 4. Penambangan Data ( Data Mining ) Data yang telah diolah akan dianalisa menggunakan algoritma Naïve Nested Loop. Data yang diteliti dibatasi pada data mahasiswa PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 31 Teknik Informatika, Universitas Sanata Dharma tahun angkatan 2007 dan 2008 selama empat semester. Pada tahap ini, akan ditentukan pula input dan output yang akan digunakan untuk menambang data, antara lain sebagai berikut : 1. Input terdiri dari : a. Nilai hasil seleksi masuk mahasiswa, baik mahasiswa yang menempuh jalur prestasi maupun jalur tes tertulis. Masukan tersebut diperoleh dari atribut yang ada pada tabel „fact_lengkap2‟ yaitu nil11, nil12, nil13, nil14, nil15, dan final. Atribut nil11, nil12, nil13, nil14, dan nil15 hanya dimiliki oleh mahasiswa yang masuk melalui jalur tes tertulis. Sedangkan atribut final dimiliki oleh mahasiswa yang masuk melalui jalur tes tertulis maupun jalur prestasi. b. Indeks prestasi mahasiswa dari semester satu hingga empat. Masukan tersebut diperoleh dari atribut yang ada pada tabel „fact_lengkap2‟ yaitu ips1, ips2, ips3, dan ips4. 2. Output, yaitu data mahasiswa yang menjadi outlier dari perhitungan yang diambil dari data numerik nilai hasil seleksi masuk dan nilai indeks prestasi selama empat semester. 5. Evaluasi Pola ( Pattern Evaluation ) Tahap ini merupakan bagian dari proses pencarian pengetahuan yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 32 sebelumnya. Melalui sistem pendeteksi outlier akan diperoleh luaran berupa data-data outlier menggunakan algoritma Naïve Nested Loop dan dianalisa kembali oleh pemilik data itu apakah hipotesa outlier yang mereka miliki sama atau tidak dengan hasil yang diperoleh sistem, sehingga dapat diketahui seperti apa tingkat keberhasilan pencarian outlier tersebut. 6. Presentasi Pengetahuan ( Knowledge Presentation ) Pada tahap ini pola yang telah didapat selanjutnya direpresentasikan kepada pengguna ke dalam bentuk sistem pendeteksi dengan antarmuka yang lebih mudah untuk dipahami. Melalui sistem pendeteksi outlier ini diharapkan pengguna dalam hal ini pihak internal Universitas Sanata Dharma dapat mencari tahu data-data yang bersifat langka dan berbeda dari kebanyakan data lainnya untuk selanjutnya dianalisa mengapa data-data tersebut bisa muncul. Tidak bisa dipungkiri bahwa outlier sendiri akan didefinisikan dan dianalisa oleh orang yang ahli dan mengerti tentang data itu. 3.3 Contoh Implementasi Deteksi Outlier dengan Algoritma Index Based Setelah melalui proses pengumpulan dan pengolahan data, pada tahap ini akan dilakukan perhitungan menggunakan algoritma Naïve Nested Loop kemudian melihat hasil outlier pada sekumpulan data mahasiswa tersebut. Tahap-tahap perhitungan menggunakan algoritma Naïve Nested Loop adalah sebagai berikut ini : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 33 1. Pencarian outlier akan dilakukan pada sekumpulan data mahasiswa yang masuk melalui jalur tes tertulis. Dalam hal ini adalah data akademik mahasiswa program studi teknik informatika tahun angkatan 2007. Atribut yang akan digunakan terdiri dari ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, nil15. Sehingga akan dilihat kaitan nilai tes masuk dengan nilai indeks prestasi dari semester satu sampai 4 dan akan dicari mahasiswa dengan pola apa saja yang akan masuk sebagai outlier. Gambar 3.4 Data Akademik Mahasiswa 2. Menghitung jarak antar objek data mahasiswa, dalam kasus ini terdapat 13 mahasiswa sehingga akan dicari jarak satu objek terhadap dua belas objek lainnya dengan rumus euclidean distance. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 34 Sehingga diperoleh jarak satu objek dengan objek yang lainnya dan perhitungan jarak memakai iterasi sebanyak tiga belas kali. Atribut yang dimasukkan ke dalam perhitungan jarak ini adalah atribut nil11, nil12, nil13, nil14, nil15, ips1, ips2, ips3, dan ips4. Nilai tes masuk dikaitankan dengan nilai indeks prestasi masing-masing semester sehingga perhitungan jarak dengan atribut ips1 dilakukan pada perhitungan semester 1, sampai atribut ips4 pada perhitungan semester 4. Gambar 3.5 Perhitungan jarak antar objek dengan rumus euclidean distance 3. Selanjutnya menentukan nilai dmin dan nilai M. Di mana dmin adalah radius atau jarak maksimum ketetanggaan antar objek o. Sedangkan M merupakan jumlah maksimum tetangga objek dalam radius dmin. Dalam kasus ini nilai dmin adalah 2 dan M adalah 4. Satu per satu objek mahasiswa akan dicari jumlah tetangganya dalam radius dmin jika jarak kedua objek tersebut ≤ 2 dan jumlah tetangganya sudah ditemukan sebanyak M+1, maka objek tersebut adalah bukan outlier dan pencarian tetangga dihentikan. Sebaliknya, jika tidak lebih dari M objek dalam kumpulan data ditemukan (dalam ketetanggaan dmin) , maka objek tersebut adalah outlier. Lalu, pencarian dilakukan ke objek PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 35 mahasiswa selanjutnya. Dalam simulasi ini dilakukan perhitungan jumlah tetangga hingga objek terakhir untuk memastikan jumlah total tetangga pada masing-masing objek mahasiswa. Pada iterasi 1 dilakukan pengecekan jarak pada data mahasiswa pertama terhadap keduabelas data mahasiswa lainnya. Dan diperoleh jumlah tetangga dalam radius dmin sebanyak 2 tetangga karena jumlah tetangga mahasiswa pertama lebih dari M, yaitu 9 maka dapat disimpulkan mahasiswa pertama bukan outlier. Perhitungan serupa dilakukan hingga data ke-13 dan berakhir pada iterasi 13 berlaku untuk perhitungan jarak menggunakan atribut ips1, ips2, ips3, dan ips4. Gambar 3.6 Pencarian jumlah tetangga dalam radius D dan penentuan outlier 4. Setelah diketahui semua jumlah tetangga masing-masing objek dalam perhitungan dari semester satu hingga semester empat, dapat diperoleh kumpulan data yang masuk ke ke dalam outlier seperti yang ada pada gambar di bawah ini : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 36 Gambar 3.7 Hasil Pencarian Outlier Dari perhitungan yang telah dilakukan dapat diketahui data yang masuk ke dalam outlier dari perhitungan pada semester 1 adalah mahasiswa dengan nomor urut 2, 8, dan 10. Untuk perhitungan pada semester 2 yang termasuk outlier adalah mahasiswa dengan nomor urut 2,8, dan 10. Untuk perhitungan pada semester 3 yang termasuk outlier adalah mahasiswa dengan nomor urut 2,5,8, dan 10. Dan untuk perhitungan pada semester 4 diperoleh outlier mahasiswa dengan nomor urut 2,8, dan 10. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB IV ANALISIS DAN PERANCANGAN SISTEM Pada bab ini akan dipaparkan mengenai analisa dan perancangan sistem. Analisa sistem dimulai dari idenfitikasi sistem yang akan dibuat, berlanjut pada pemrosesan data awal yang akan digunakan dalam penelitian lalu pembahasan mengenai input, proses, dan output sistem. Selain itu akan dipaparkan pula perancangan sistem yang terdiri dari perancangan struktur data, pembuatan diagram usecase, diagram kelas, diagram aktivitas, atribut dan method yang akan dipakai, model analisis, dan perancangan antar muka. 4.1 Identifikasi Sistem Universitas Sanata Dharma membuka pendaftaran untuk penerimaan mahasiswa baru setiap tahunnya. Penerimaan mahasiswa baru Universitas Sanata Dharma dilakukan melalui dua jalur, yaitu jalur prestasi dan jalur tes tertulis. Untuk jalur prestasi syarat utama yang harus disiapkan oleh calon mahasiswa adalah nilai hasil belajar siswa SMA / sederajat pada saat kelas XI semester 1 dan 2, nilai-nilai hasil belajar tersebut kemudian akan dihitung rata-rata sehingga didapat nilai final dari seorang siswa yang mendaftar melalui jalur prestasi. Nilai final tersebut digunakan sebagai pertimbangan siswa SMA / sederajat nantinya diterima atau tidak sebagai mahasiswa Universitas Sanata Dharma. Sedangkan untuk calon mahasiswa yang masuk melalui jalur tes tertulis akan memiliki lima komponen nilai dari tes yang diberikan, yaitu nilai penalaran numerik, nilai penalaran verbal, nilai 37 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 38 hubungan ruang, nilai bahasa Inggris, dan nilai kemampuan numerik. Calon mahasiswa yang masuk melalui jalur tes tertulis juga akan memiliki nilai final berdasarkan rata-rata lima komponen tes tersebut. Nilai final ini juga digunakan sebagai pertimbangan calon mahasiswa tersebut diterima atau tidak sebagai mahasiswa Universitas Sanata Dharma. Calon mahasiswa yang berhasil lolos seleksi penerimaan mahasiswa baru baik yang melalui jalur prestasi maupun jalur tes tertulis akan menjadi mahasiswa yang harus mengikuti kegiatan perkuliahan dan setiap semesternya akan memperoleh nilai indeks prestasi sebagai kalkulasi dari prestasi akademiknya. Namun, akan muncul pertanyaan apakah nilai indeks prestasi mahasiswa yang tinggi juga dipengaruhi oleh nilai hasil seleksi masuk yang tinggi pula atau apakah ada mahasiswa yang memiliki nilai indeks prestasi rendah tetapi nilai hasil seleksi masuknya tinggi. Hal ini menjadi sesuatu yang menarik untuk dicari kejadian langkanya atau dalam hal ini berkaitan dengan deteksi outlier. Dari nilai hasil seleksi masuk dan nilai indeks prestasi selama empat semester diharapkan dapat digunakan sebagai bahan untuk melihat kejadian langka pada data akademik mahasiswa. Sebuah sistem pendeteksi outlier yang akan dibangun diharapkan mampu untuk mengenali mahasiswa mana saja yang tergolong menjadi outlier dibandingkan dengan mahasiswa lain. Sistem pendeteksi ini menerapkan algoritma Naïve Nested Loop yang merupakan algoritma berpendekatan distance based yang berguna untuk mencari outlier. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 39 4.1.1 Diagram Use Case Sebuah sistem membutuhkan pengguna sebagai pelaku utama untuk melakukan aksinya supaya sistem dapat menjalankan fungsi yang sesuai dengan keinginan pengguna tersebut. Diagram use case berikut menggambarkan interaksi terdapat pada Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop ini. Pelaku utama dari sistem ini hanya satu yaitu pengguna. Terdapat tiga fungsi utama yang dapat dijalankan oleh pengguna yaitu fungsi input data, fungsi pendeteksian outlier , dan fungsi simpan hasil deteksi outlier. Ketiga fungsi tersebut saling berkaitan sehingga dalam menjalankan fungsi ini pengguna harus melakukannya secara beurutan. Pada fungsi input data, pengguna dapat memasukan berbagai jenis data yang akan diproses dalam deteksi outlier yaitu data berformat .xls , .csv , dan data yang berasal dari tabel dalam basisdata. Fungsi berikutnya adalah fungsi deteksi outlier terhadap data yang telah dimasukkan oleh pengguna. Dalam fungsi ini pengguna memasukan dua nilai paramater input yaitu M dan dmin. M adalah jumlah maksimum objek dalam ketetanggaan dmin dari sebuah outlier dan dmin adalah radius atau jarak maksimum ketetanggaan antar objek o. Setelah itu sistem akan menampilkan hasil deteksi outlier dan selanjutnya pengguna dapat menyimpan hasil tersebut ke dalam file yang berformat .txt atau .doc. Selain ketiga fungsi utama tersebut, sistem ini menyediakan fungsi pilihan yang tidak wajib dilakukan pengguna yaitu fungsi seleksi atribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 40 dan fungsi lihat grafik distribusi per atribut. Kedua fungsi ini hanya dapat dilakukan jika pengguna sudah memasukan input data. Fungsi seleksi atribut merupakan fungsi yang disediakan sistem jika pengguna akan menghapus beberapa atribut yang tidak dipakai dalam perhitungan deteksi outlier. Sedangkan fungsi lihat grafik distribusi per atribut dilakukan apabila pengguna ingin melihat distribusi data yang ada dalam satu atribut dalam bentuk diagram batang. Diagram use case untuk sistem pendeteksi outlier menggunakan algoritma Naïve Nested Loop dapat dilihat pada gambar di bawah ini sedangkan deskripsinya dapat dilihat pada lampiran 1: <<extends >> Input data file .xls, csv atau tabel basisdata <<extends >> <<depends on>> Deteksi outlier Pengguna Seleksi atribut <<depends on>> Simpan hasil deteksi outlier Gambar 4.1 Diagram Use Case Lihat grafik distribusi per atribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 41 4.1.2 Narasi Use Case Untuk detil narasi secara keseluruhan dari setiap use case dapat dilihat pada lampiran dalam tugas akhir ini pada lampiran 2. 4.2 Perancangan Sistem Secara Umum 4.2.1 Pemrosesan Data Awal Dalam penelitian tugas akhir ini akan dipakai data numerik nilai hasil seleksi masuk mahasiswa dan nilai indeks prestasi semester satu hingga empat dari mahasiswa Teknik Informatika Universitas Sanata Dharma Yogyakarta tahun angkatan 2007 dan 2008. Data diperoleh dari gudang data akademik mahasiswa Universitas Sanata Dharma hasil penelitian Rosa, dkk (2013) dalam bentuk skrip kueri .sql. Berikut merupakan tahapan yang dilakukan dalam pengolahan data: 1. Penggabungan Data ( Data Integration ) Data yang telah terkumpul akan diolah ke dalam database, data mentah tersebut berbentuk skrip .sql sehingga diolah terlebih dahulu menggunakan perangkat lunak SQLyog agar diketahui data dan tabel apa saja yang ada dalam database tersebut.Setelah skrip dijalankan melalui SQLyog , diketahui bahwa gudang data yang digunakan bernama “data_mahasiswa” dan terdiri dari tabel dim_angkatan, dim_daftarsmu, dim_kabupaten, dim_prodi, fact_lengkap2. dim_fakultas, dim_jeniskel, dim_prodifaks, dim_statustes, dan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 42 Gambar 4.2 Dekripsi Tabel pada Basisdata ‘data_mahasiswa’ 2. Seleksi Data ( Data Selection ) Setelah dilakukan proses penggabungan data tabel dalam gudang data „data_mahasiswa‟. Selanjutnya dilakukan seleksi data untuk mengambil data dalam tabel „fact_lengkap2‟ karena dalam tabel inilah memuat atribut nilai hasil seleksi tes masuk dan nilai indeks prestasi semester satu hingga empat disimpan. Sedangkan tabeltabel selain „fact_lengkap2‟ tidak digunakan. Gambar 4.3 Dekripsi Tabel ‘fact_lengkap2’ PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 43 Pada tabel „fact_lengkap2‟ terdiri atas data akademik mahasiswa diseluruh program studi , sedangkan dalam penelitian ini hanya akan memakai data mahasiswa prodi Teknik Informatika angkatan 2007 dan 2008. Atribut yang tidak dipakai adalah nomor, jumsttb, jummsttb, jumnem, jummtnem, sttb, sk_jeniskelamin, sk_status, sk_kabupaten, sk_daftarsmu, sk_prodi. Gambar 4.4 Data pada Tabel ‘fact_lengkap2’ 3. Transformasi Data (Data Transformation) Pada proses ini, data yang sudah diseleksi untuk selanjutnya ditransformasikan ke dalam bentuk yang sesuai untuk ditambang. Data ditransformasikan dengan metode normalisasi. Dalam tahap ini, diketahui bahwa atribut yang akan digunakan dalam perhitungan deteksi outlier adalah ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, nil15, dan final. Jangkauan nilai atribut ips1, ips2, ips3,dan ips4 adalah 0.00 sampai dengan 4.00. Sedangkan untuk jangkauan nilai atribut nil11, nil12, nil13, nil14, dan nil15 adalah 0 sampai 10. Sementara itu, jangkauan nilai final adalah 0 sampai 100. Sehingga PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 44 perlu dilakukan normalisasi data untuk menyamaratakan persebaran nilai keseluruhan atribut dengan menggunakan rumus min-max normalization : v' v minA (new _ maxA new _ minA) new _ minA maxA minA Tahapan normalisasi data untuk atribut nil11, nil12, nil13, nil14, nil15, dan final dilakukan untuk menyamakan jangkauan nilai terhadap atribut ips1, ips2, ips3, ips4. Sehingga pada saat perhitungan deteksi outlier persebaran nilai atribut hanya berkisar antara 0.00 sampai 4.00. Proses normalisasi data berikut ini berlaku untuk atribut nil11, nil12, nil13, nil14, dan nil15 menggunakan min-max normalization, semisal nil11 adalah 7.00 maka proses normalisasinya adalah : maxA = 10, minA= 0, new_maxA = 4, new_minA= 0, dan v = nil11 dalam hal ini bernilai 7.00 , sehingga proses perhitungannya v1 = (70)/(10-0)*(4-0)+0 = 7/10*4 = 2.80. Sehingga hasil normalisasi nil11 yang awalnya bernilai 7.00 sekarang menjadi 2.80. Berikutnya adalah proses normalisasi data berikut berlaku untuk atribut final menggunakan min-max normalization, semisal nilai final adalah 61.00 maka proses normalisasinya adalah : maxA = 100, minA= 0, new_maxA = 4, new_minA= 0, dan v = final dalam hal ini bernilai 61.00 , sehingga proses perhitungannya v1= (61-0)/(100-0)*(4-0)+0 = 61/100*4 = 2.44. Sehingga hasil PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 45 normalisasi nilai final yang awalnya bernilai 61.00 sekarang menjadi 2.44. Setelah nilai atribut nil11, nil12, nil13, nil14, nil15, dan final dinormalisasikan dalam kisaran nilai 0.00 - 4.00 maka nilai yang sudah dinormalisasikan inilah yang nantinya akan digunakan sebagai input dalam proses deteksi outlier. 4. Penambangan Data ( Data Mining ) Data yang telah diolah akan dianalisa menggunakan algoritma Naïve Nested Loop. Data yang diteliti dibatasi pada data mahasiswa Teknik Informatika, Universitas Sanata Dharma tahun angkatan 2007 dan 2008 selama empat semester. Pada tahap ini, akan ditentukan pula input dan output yang akan digunakan untuk menambang data, antara lain sebagai berikut : 1. Input terdiri dari : a. Nilai hasil seleksi masuk mahasiswa, baik mahasiswa yang menempuh jalur prestasi maupun jalur tes tertulis. Masukkan tersebut diperoleh dari atribut yang ada pada tabel „fact_lengkap2‟ yaitu nil11, nil12, nil13, nil14, nil15, dan final. Atribut nil11, nil12, nil13, nil14, dan nil15 hanya dimiliki oleh mahasiswa yang masuk melalui jalur tes tertulis. Sedangkan atribut final dimiliki oleh mahasiswa yang masuk melalui jalur tes tertulis maupun jalur prestasi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 46 b. Indeks prestasi mahasiswa dari semester satu hingga empat. Masukkan tersebut diperoleh dari atribut yang ada pada tabel „fact_lengkap2‟ yaitu ips1, ips2, ips3, dan ips4. 2. Output, yaitu data mahasiswa yang menjadi outlier dari perhitungan yang diambil dari data numerik nilai hasil seleksi masuk dan nilai indeks prestasi selama empat semester. 5. Evaluasi Pola ( Pattern Evaluation ) Tahap ini merupakan bagian dari proses pencarian pengetahuan yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada sebelumnya. Melalui sistem pendeteksi outlier akan diperoleh luaran berupa data-data outlier menggunakan algoritma Naïve Nested Loop dan dianalisa kembali oleh pemilik data itu apakah hipotesa outlier yang mereka miliki sama atau tidak dengan hasil yang diperoleh sistem, sehingga dapat diketahui seperti apa tingkat keberhasilan pencarian outlier tersebut. 6. Presentasi Pengetahuan ( Knowledge Presentation ) Pada tahap ini pola direpresentasikan kepada yang telah didapat selanjutnya pengguna ke dalam bentuk sistem pendeteksi dengan antarmuka yang lebih mudah untuk dipahami. Melalui sistem pendeteksi outlier ini diharapkan pengguna dalam hal ini pihak internal Universitas Sanata Dharma dapat mencari tahu data-data yang bersifat langka dan berbeda dari kebanyakan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 47 data lainnya untuk selanjutnya dianalisa mengapa data-data tersebut bisa muncul. Tidak bisa dipungkiri bahwa outlier sendiri akan didefinisikan dan dianalisa oleh orang yang ahli dan mengerti tentang data itu. 4.2.2 Input Sistem Data akademik mahasiswa Teknik Informatika angkatan 20072008 terdiri dari 126 buah. Mahasiswa tersebut telah diterima di Universitas Sanata Dharma melalui dua macam jalur seleksi masuk yaitu, jalur prestasi dan jalur tes. Untuk masing-masing jalur seleksi masuk tersebut akan dicari outlier-nya karena memiliki struktur data yang berbeda. Berikut ini merupakan rincian data yang akan dalam penelitian antara lain sebagai berikut: a. Data Hasil Seleksi Masuk Jalur Prestasi No Nama Atribut Penjelasan 1 Atribut nomor urut nomor Nilai ini merupakan 1 – 126 alias menunjukkan untuk objek mahasiswa 2 Final Atribut ini merupakan rata- 0-4.00 rata dari nilai kognitif rapor siswa SMA/sederajat b. Data Hasil Seleksi Masuk Jalur Tes Tertulis No Nama Atribut Penjelasan Nilai PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1 nomor urut Atribut ini nomor merupakan 1 – 126 alias menunjukkan 48 untuk objek mahasiswa 2 nil11 Atribut ini merupakan 0-4.00 nilai komponen tes 1 3 nil12 Atribut ini merupakan 0-4.00 nilai komponen tes 2 4 nil13 Atribut ini merupakan 0-4.00 nilai komponen tes 3 5 nil14 Atribut ini merupakan 0-4.00 nilai komponen tes 4 6 nil15 Atribut ini merupakan 0-4.00 nilai komponen tes 5 7 Final Atribut ini merupakan 0-4.00 nilai akhir hasil kalkulasi semua nilai tes c. Data Indeks Prestasi Semester No Nama Penjelasan Nilai Atribut 1 Nomor urut Atribut ini merupakan nomor alias 1 - 126 untuk menunjukkan objek mahasiswa 2 ips1 Atribut ini menunjukkan mahasiswa semester 1 3 ips2 Atribut ini menunjukkan mahasiswa semester 2 4 ips3 Atribut ini menunjukkan mahasiswa semester 3 IP 0.00 – 4.00 IP 0.00 – 4.00 IP 0.00 4.00 – PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5 ips4 Atribut ini menunjukkan mahasiswa semester 4 IP 0.00 49 – 4.00 4.2.3 Proses Sistem Setelah data dimasukkan dan dilakukan pemrosesan data. Proses yang terjadi pada sistem adalah : 1. Pengambilan data Mengambil data pada direktori tertentu yang disimpan dalam bentuk file excel (.xls) , .csv atau mengambil data pada tabel dalam database dan selanjutnya ditampilkan pada tabel view. Data yang telah tertampil pada tabel data dapat diseleksi atributnya sehingga hanya atribut yang dipilih pengguna tersebut yang akan dimasukkan dalam perhitungan deteksi outlier. Selain itu, menyediakan fungsi pilihan untuk melihat distribusi nilai data untuk masung-masing atribut. 2. Perhitungan jarak objek data Data yang telah dimasukkan merupakan data yang telah diseleksi atributnya. Selanjutnya akan dilakukan perhitungan jarak antar objek data dengan rumus euclidean distance. Sehingga akan diperoleh jarak satu objek dengan objek yang lainnya dan perhitungan jarak memakai iterasi sebanyak jumlah data yang dimasukkan. Atribut yang dimasukkan ke dalam perhitungan data disesuaikan dengan pilihan pengguna. 3. Pencarian outlier berdasarkan parameter masukkan M dan dmin PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 50 Sistem menerima masukan nilai parameter dmin dan M dari pengguna. Dimana dmin adalah radius atau jarak maksimum ketetanggaan antar objek o. Sedangkan M merupakan jumlah maksimum tetangga objek dalam radius dmin. Satu per satu dari objek data akan dicari jumlah tetangganya dalam radius dmin jika jarak antara dua objek ≤ dmin dan jumlah tetangganya sudah ditemukan sebanyak M+1, maka objek tersebut adalah bukan outlier dan pencarian tetangga dihentikan. Sebaliknya, jika tidak lebih dari M objek dalam kumpulan data ditemukan (dalam ketetanggaan dmin) , maka objek tersebut adalah outlier. Lalu, pencarian dilakukan ke objek mahasiswa selanjutnya. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 51 Start Ya Pilih Seleksi atribut Data bertipe .xls Data bertipe .csv Data basisdata Proses seleksi atribut Tidak Ya Pilih Distribu si Proses distribusi atribut Tidak Input parameter M, dmin Proses deteksi outlier Hasil deteksi outlier end Gambar 4.5 Proses Umum Sitem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 52 4.2.4 Output Sistem Sistem yang akan dibuat merupakan sistem yang menghasilkan data yang dinyatakan sebagai outlier beserta atribut yang dimiliki oleh data tersebut. Berikut merupakan keluaran yang akan dihasilkan oleh sistem: a. Proses input menampilkan : 1. Sampel data keseluruhan beserta jumlah baris dan jumlah atribut 2. Daftar atribut yang akan dipakai pada perhitungan b. Proses deteksi outlier menampilkan : 1. Hasil outlier untuk setiap data yang diuji beserta nilai atribut yang dimiliki 2. Parameter dmin dan M yang digunakan dalam perhitungan algoritma 3. Jumlah data 4. Lama deteksi outlier 5. Jumlah outlier 4.3 Perancangan Sistem 4.3.1 Diagram Konteks nilai M, nilai dmin, data .xls,data file .csv , data dari tabel dalam basisdata Pengguna hasil outlier beserta nilai atribut yang dimiliki , nilai M dan dmin yang dipakai, jumlah data, lama deteksi outlier, jumlah outlier Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop Gambar 4.6 Diagram Konteks PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 53 4.3.2 Diagram Aktivitas Diagram aktivitas digunakan untuk menunjukkan kegiatan yang dilakukan oleh pengguna dan sistem dalam setiap usecase yang telah disebutkan pada gambar 4.1. Berikut adalah diagram aktivitas dari setiap use case: 1. Diagram Aktivitas Input data dari file .xls 2. Diagram Aktivitas Input data dari file .csv 3. Diagram Aktivitas Input data dari tabel dalam basisdata 4. Diagram Aktivitas Deteksi Outlier 5. Diagram Aktivitas Simpan hasil deteksi outlier 6. Diagram Aktivitas Lihat Distribusi Atribut per Atribut 7. Diagram Aktivitas Seleksi Atribut 8. Diagram Aktivitas Alternatif Seleksi Atribut (Hapus Semua Atribut) Untuk penjelasan rinci dari masing – masing diagram aktivitas dapat dilihat pada lampiran 3 yang terdapat pada tugas akhir ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 54 4.3.3 Diagram Kelas Analisis DiagramBatang Halaman Distribusi Atribut Halaman PilihDatabase Halaman Awal Pengguna Halaman Utama Halaman TampilTabel DatabaseController DatabaseConnection CheckBoxTableModel Seleksi Atribut Graph_NaiveNL Vertex_ NaiveNL HalamanBantuan HalamanMissingValues HalamanKonfirmasiKeluar Gambar 4.7 Diagram Kelas Analisis PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 55 Tabel 4.1 Tabel Nama Kelas No Nama Kelas Jenis Keterangan 1 DatabaseConnection Entity 2 Graph_NaiveNL Controller 3 Vertex_NaiveNL Entity 4 SeleksiAtribut Entity 5 CheckBoxTableModel Controller 6 DatabaseController Controller 7 DiagramBatang Entity 8 HalamanUtama Boundary 9 HalamanDistribusiAtribut Boundary 10 HalamanPilihDatabase Boundary 11 HalamanTampilTabel Boundary Kelas ini digunakan untuk memuat atribut yang digunakan untuk mengatur koneksi antara sistem dengan basisdata seperti username, password, URL dan mengatur koneksi antara basisdata dengan sistem Kelas ini digunakan untuk melakukan proses perhitungan jarak antar data, pencarian outlier menggunakan algoritma Naïve Nested Loop, dan menampilkannya ke dalam sistem Kelas ini digunakan untuk menyimpan atribut data masukan yang meliputi label,isi data, dan penanda data dianggap outlier ata buka Kelas ini digunakan untuk menyimpan atribut yang dipakai sebagai nama kolom pada tabel SeleksiAtribut Kelas ini merupakan kelas untuk mengatur pembuatan tabel Seleksi Atribut pada Halaman Utama Kelas ini berisi metode yang digunakan untuk menampilkan daftar tabel dan isi tabel berdasarkan basisdata dan tabel yang dipilih pengguna Kelas ini digunakan untuk menampilkan grafik diagram dari rincian data per atribut Kelas ini menyediakan tampilan utama dari sistem dan menampilkan fungsifungsi utama sistem Kelas ini digunakan sebagai tampilan untuk memilih atribut lalu menampilkan detil distribusi atribut yang telah terpilih Kelas ini digunakan sebagai tampilan untuk login ke basisdata sebelum mengambil data pada tabel Kelas ini digunakan sebagai tampilan untuk memilih tabel yang ada pada basisdata PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 12 HalamanAwal Boundary 13 HalamanBantuan Boundary 14 HalamanMissingValues Boundary 15 HalamanKonfirmasiKeluar Boundary 56 Kelas ini digunakan untuk menampilkan halaman saat sistem pertama kali dijalankan Kelas ini digunakan untuk menampilkan petunjuk pemakaian sistem Kelas ini digunakan sebagai tampilan penanganan error saat data .xls mengandung baris kosong dan data bukan angka Kelas ini digunakan untuk menampilkan konfirmasi apakah pengguna benarbenar akan keluar dari sistem 4.3.4 Diagram Sequence Berikut merupakan diagram sequence yang terdapat dalam proses perancangan Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop : 1. Diagram Sequence Input data dari file .xls 2. Diagram Sequence Input data dari file .csv 3. Diagram Sequence Input data dari tabel dalam basisdata 4. Diagram Sequence Deteksi Outlier 5. Diagram Sequence Simpan hasil deteksi outlier 6. Diagram Sequence Lihat Distribusi Atribut per Atribut 7. Diagram Sequence Seleksi Atribut Untuk penjelasan rinci dari masing – masing diagram sequence dapat dilihat pada lampiran 4 yang terdapat pada tugas akhir ini. 4.3.5 Perancangan Struktur Data Konsep struktur data yang akan digunakan dalam sistem ini adalah konsep graf. Graf merupakan sebuah elemen yang dapat terhubung dengan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 57 elemen yang lainnya. Konsep graf digunakan dalam menghubungkan satu objek data dengan yang lain sehingga jika data tersebut saling terhubung maka dapat memudahkan perhitungan jarak antar data. Hal ini dikarenakan algoritma Naïve Nested Loop mempertimbangkan sebuah data dinyatakan sebagai outlier berdasarkan jumlah tetangga yang dimiliki dalam nilai jangkauan tertentu. Graf memiliki vertex dan edge. Sebuah graf adalah sekumpulan vertex yang saling terhubung melalui edge. Setiap edge menghubungkan dua node. Namun, tidak semua node harus saling terhubung. Data akan dianalogikan sebagai vertex dimana vertex tersebut memiliki list yang nantinya dapat diisi dengan banyak nilai atribut pada sebuah objek data. Jarak masing-masing objek data dinyatakan dalam edge dan nilai edge dari satu vertex ke vertex lain disimpan dalam bentuk matriks dua dimensi. Berikut merupakan ilustrasi untuk perancangan struktur data yang akan digunakan dalam sistem pendeteksi outlier. 4.3.5.1 Matriks Dua Dimensi Seperti yang telah disebutkan di atas, jarak masing-masing objek data akan disimpan dalam edge dan masing-masing nilai edge antar dua vertex lalu disimpan dalam matriks dua dimensi. Pada awalnya, edge untuk antar objek data mahasiswa dinyatakan dengan nilai -1 yang artinya jarak antar dua objek mahasiswa tersebut masih belum ada. Sedangkan edge bernilai 0 menyatakan jarak objek data terhadap dirinya sendiri. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 58 Mahasiswa[1] Mahasiswa[2] Mahasiswa[3] Mahasiswa[1] 0 -1 -1 Mahasiswa[2] -1 0 -1 Mahasiswa[3] -1 -1 0 Gambar 4.8 Ilustrasi Struktur Data Matriks Dua Dimensi Kemudian, setelah dilakukan perhitungan jarak antar dua objek data menggunakan rumus Euclidean Distance , jarak dua objek yang awalnya bernilai -1 akan diganti nilainya sesuai dengan hasil perhitungan dari rumus jarak tersebut. Sedangkan edge yang menyatakan jarak objek data terhadap dirinya sendiri tetap bernilai 0. Mahasiswa[1] Mahasiswa [2] Mahasiswa[3] Mahasiswa[1] 0 2.58 3.21 Mahasiswa[2] 2.58 0 1.05 Mahasiswa[3] 3.21 1.05 0 Gambar 4.9 Ilustrasi Struktur Data Matriks Dua Dimensi Setelah Dilakukan Perhitungan Jarak antar Vertex PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 59 4.3.5.2 Graf Sebuah graf berisi kumpulan vertex yang saling terhubung melalui edge. Pada kasus ini objek data mahasiswa dinyatakan sebagai vertex. Vertex tersebut akan berisi list yang nantinya dapat diisi dengan banyak nilai atribut pada sebuah objek data. Pada gambar 4.10 dapat dilihat terdapat vertex mahasiswa 1, mahasiswa 2, dan mahasiswa 3 yang masing-masing memiliki atribut yang menampung nilai dalam bentuk list. Untuk masing-masing objek mahasiswa akan terhubung dengan objek data mahasiswa lain dan jarak antar objek data mahasiswa tersebut dinyatakan sebagai edge. edge : 2.58 Vertex Mahasiswa[1] (List) nilai edge : 2.58 Vertex Mahasiswa[2] edge : 3.21 (List) nilai edge : 3.21 edge : 1.05 Vertex Mahasiswa[3] edge : 1.05 (List) nilai Gambar 4.10 Ilustrasi Struktur Data Graf PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 60 4.3.6 Diagram Kelas Desain Diagram kelas desain menunjukkan daftar kelas yang nantinya akan dipakai dalam pembuatan sistem. Diagram kelas memuat semua kelas untuk menjalankan semua fungsi pada sistem. Untuk rincian atribut dan method masing-masing kelas dapat dilihat pada lampiran 5. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI memanggil 1 1 <<entity>> DiagramBatang <<boundary>> HalamanDistribusiAtribut 1 <<boundary>> HalamanAwal memanggil memanggil 1 1 <<controller >> CheckBoxTableModel 1…* <<entity>> SeleksiAtribut 1…* memanggil 61 memanggil 1 <<boundary>> HalamanUtama 1 1 1 1 <<boundary>> HalamanPilihDatabase <<boundary>> HalamanTampilTabel memanggil memanggil memanggil 1 <<controller >> 1 DatabaseController memanggil 1 1 <<controller>> Graph_NaiveNL memanggil 1 1..* memiliki 1 <<boundary>> HalamanBantuan memanggil 1 memanggil memanggil <<boundary>> HalamanKonfimasiKeluar 1 <<entity>> DatabaseConnection <<boundary>> HalamanMissingValues Gambar 4.11 Diagram Kelas Desain <<entity>> Vertex_NaiveNL PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 62 4.3.7 Rincian Algoritma Setiap Method Pada Tiap Kelas 4.3.7.1 Rincian Algoritma pada Method di Kelas DatabaseConnection Nama method Fungsi method Algoritma method getConnectionSQL( Mendapatkan 1. Buat koneksi ke basisdata String, String, String ) nilai username, mySQL ke dalam method password,dan url setConnection(DriverMan dari inputan ager.getConnection(url, pengguna lalu user, passw))sesuai melakukan login parameter input pengguna ke dalam 2. Jika benar maka sistem basisdata mySQL berhasil terhubung ke basisdata mySQL 3. Kembalikan nilai getConnection() isConnectedSQL( Mengecek apakah 1. Jika parameter String, String, String) sistem sudah url,user,passw!= null , terhubung dengan kembalikan nilai true basisdata mySQL 2. Jika url,user,passw ==null, kembalikan nilai false getConnectionOracle( Mendapatkan 1. Buat koneksi ke basisdata String, String, String) nilai username, Oracle ke dalam method password,dan url setConnection(DriverMan dari inputan ager.getConnection(url, pengguna lalu user, passw)) sesuai melakukan login parameter input pengguna ke dalam 2. Jika benar maka sistem basisdata Oracle berhasil terhubung ke basisdata Oracle 3. Kembalikan nilai getConnection() isConnectedOracle( Mengecek apakah 1. Jika parameter String, String, String) sistem sudah url,user,passw!= null , terhubung dengan kembalikan nilai true basisdata Oracle 2. Jika url,user,passw ==null, kembalikan nilai false PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3.7.2 Rincian Algoritma pada Method di Kelas Graph_NaiveNL Nama method Fungsi method Algoritma method addVertex(String, Membuat vertex 1. Membaca nilai parameter List<Double>) untuk membentuk method berupa list nilai dan graf label 2. Membuat vertex baru dengan label dan nilai masukan setiap nilai size dari vertex bertambah addEdge(int, int, Mengisi nilai edge 1. Membaca nilai parameter double) pada vertex method berupa asal, tujuan, dan jarak 2. Mengisikan nilai jarak kedalam edge[asal][tujuan] dan edge[tujuan][asal] euclideanDistance( Menghitung nilai 1. Membaca nilai paramter int,int) jarak antar dua data input method yaitu asal dan menggunakan rumus tujuan Euclidean Distance 2. Membuat dua buah list bernama awal dan akhir 3. Mengisi vertex[asal].getNilai() ke dalam list awal dan vertex[tujuan].getNilai() ke dalam list akhir 4. Inisialisasi i=0,total=0 5. Selama i< awal.size lakukan perhitungan total = total + (awal.get(i) akhir.get(i)) * (awal.get(i) akhir.get(i)); 6. Return Math.sqrt(total) NaiveNL(double, Mendeteksi sebuah 1. Deklarasi double) data dinyatakan jumlah_tetangga=0 sebagai outlier atau 2. jumlahData = vertex.length tidak 3. selama i<jumlahData 4. jumlah_tetangga=0 5. selama j<jumlahData, lakukan pengecekan: 6. jika matrix[i][j]&&i!=j&&matri ks[i][j] <=D benar lakukan pengecekan apakah jumlah tetangga ==m+1 jika benar break. 7. Jika jumlah_tetangga < 63 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI displayOutlier(dou ble,double,String, JTable,String) Menampilkan hasil deteksi outlier beserta keterangannya m+1 maka vertex[i].setOutlier(true) 8. Jika jumlah_tetangga>=m+1 maka vertex[i].setOutlier(false) 1. Deklarasi String hasil_outlier =””, boolean isi = false, int jumlah outlier = 0 2. deklarasi long t1 = System.nanoTime() 3. panggil method IndexBased(m, D) 4. deklarasi long t2 = System.nanoTime(); 5. memasukan nilai M, dmin, asal data, jumlah data ke dalam atribut hasil_outlier sesuai parameter input method 6. inisialisasi i=0 7. selama i<vertex.length, lakukan pengecekan : jika vertex[i].isOutlier == true, tambahkan jumlah_outlier dengan 1 lalu tampilkan vertex[i].getLabelData 7. Inisialisasi j = 0 8. Selama j < t.getColumnCount() 9. Inisialisasi k = 0 10. Selama k < t.getRowCount(),lakukan pengecekan : Jikavertex[i].getLabelData() ==t.getValueAt(k, 0) maka data pada baris-k tersebut ditampilkan sesuai columnName pada tabel Data nya 11. Jikaboolean isi = true tampilkan hasil outlier 12. Jika isi == false, tampilkan pesan tidak ada hasil outlier 64 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 65 13. Menampilkan jumlah outlier, dan lama deteksi outlier = ((t2 - t1) * java.lang.Math.pow(10, 9)) 4.3.7.3 Rincian Algoritma pada Method di Kelas CheckBoxTableModel Nama method Fungsi method Algoritma method add(int, SeleksiAtribut) Menambahkan 1.membaca parameter input atribut yang nilai a dan field_m diambil dari tabel 2. menambahkan nilai data ke dalam field_m sebagai data di index tabel atribut ke-a ke dalam list lfm removeRow() Menghapus nama 1. Buat array list dengan atribut yang yang nama s telah dihapus dari 2. Selama seleksi < lfm tabel data pada terpenuhi , lakukan cek tabel seleksi atribut yang akan dihapus atribut terpilih. Jika !seleksi.getPilih=true maka nilai seleksi ditambahkan ke list s 3. nilai lfm = s removeRow2() Menghilangkan 1. Buat array list dengan isi tabel seleksi nama s atribut apabila 2. Selama seleksi <lfm akan dimasukan terpenuhi , lakukan cek data baru (pada atribut mana yang tidak Halaman Utama) dipilih untuk dihapus. Jika !seleksi.getPilih()=true maka nilai seleksi atribut dihapus dari list s 3. nilai lfm = s 4.3.7.4 Rincian Algoritma pada Method di Kelas DatabaseController Nama method Fungsi Algoritma method method tampilTableOracle( Menampilkan 1. Buat kueri menampilkan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Connection) tampilTableSQL( Connection) tampilIsiTable( Connection,String) daftar tabel pada basisdata Oracle sesuai tabel yang ada akun yang dimasukkan pengguna Menampilkan daftar tabel pada basisdata mySQL sesuai tabel yang ada pada akun yang dimasukkan pengguna Menampilkan isi tabel berdasarkan tabel yang dipilih pengguna 2. 3. 1. 2. 3. 1. 2. 3. daftar tabel dalam basisdata Oracle dengan sintaks : select * from user_tables Melakukan eksekusi kueri Mengembalikan nilai result (ResultSet) yang berisi daftar tabel yang ada pada basisdata Oracle Buat kueri menampilkan daftar tabel dalam basisdata mySQL dengan sintaks : show tables Melakukan eksekusi kueri Mengembalikan nilai result (ResultSet) yang berisi daftar tabel yang ada pada basisdata mySQL Buat kueri menampilkan data dari tabel dalam basisdata dengan sintaks : “select * from” +namaTabel (sesuai pilihan pengguna) Melakukan eksekusi kueri Mengembalikan nilai result (ResultSet) yang berisi data isi tabel sesuai parameter “namaTabel” pada kueri 4.3.7.5 Rincian Algoritma pada Method di Kelas DiagramBatang Nama method Fungsi method Algoritma method Menampilkan 1. Membaca paramater tampil(int[][], grafik distribusi input (array int v, String[][], String[][]) per atribut sesuai array String n , dan pilihan pengguna array String t) 2. Inisialisasi i=0 3. Selama i <n.length lakukan data.setValue(v[i][1], n[i][0], t[i][0]) 4. createBarChart3D selama langkah 4 terpenuhi 66 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 67 4.3.7.6 Rincian Algoritma pada Method di Kelas HalamanUtama Nama method Fungsi method Algoritma method tampilIsiDataBasisdata(Da Membaca tabel 1. Ambil isi tabel dari tabaseConnection conn, yang dipilih pada basis data dengan String namaTabel) basisdata dan melalui method menampilkan isi tampilIsiTable(conn.g datanya ke dalam etConnection(), tabel data namaTabel) 2. buat vector baru columnName dan data 3. Inisialisasi nilai i = 1 4. Selama i <= columnCount benar, columnName diisi dengan nama kolom ke i yang didapat dari basisdata melalui method getColumnName 5. Selama rs.next benar lakukan langkah 6-9 6. buat vector data2 7. Inisialisasi nilai i = 1, 8. Selama i <= columnCount benar, data2 diisi dengan data pada setiap baris di kolom ke i 9. Tambahkan data2 ke dalam data, lalu kembali ke langkah 5 10. Mengatur model tabel data nama kolom dari vector columnNames dan data dari vector data 11. Inisialisasi nilai i = 0 12. Selama i < model.getColumnCou nt() benar, lanjutkan ke langkah 13 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pilihDB() 68 13. Inisialisasi nilai j = 0 14. Selama j < model.getRowCount() benar, cek i==0 jika benar lanjut ke langkah 15, jika salah ke langkah 16 15. Jika model.getValueAt(j, i) == null, tampilkan pesan label data tidak lengkap, i = model.getColumnCou nt() – 1, this.dispose() lalu break; 16. Jika model.getValueAt(j, i) == null atau !model.getValueAt(j, i).toString().matches(" [0-9.]*") atau model.getValueAt(j, i).toString().matches(" [.]*") benar, maka tampilkan pesan data tidak lengkap lalu i = model.getColumnCou nt() – 1 dan break; 17. i++ lalu ke langkah 11 18. insialisasi i=0 19. selama i<model.getColumnCo unt benar tambahkan nama kolom ke dalam cb_tabel 20. Atur tabel dataPreprocessTable Menanggil kelas 1. Buat objek pilih_db HalamanPilihDatab dari kelas Halaman ase PilihDatabase 2. Objek pilih_db memanggil method setVisible() PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI submitData() distribusiAtribut() pilihFile() 69 Memasukan data 1. Ambil model dari tabel pada tabel data di preprocess dengan tabbed pane method getModel(), Preprocess ke tabel lalu simpan ke variabel data pada tabbed tableModel paneDeteksi 2. Jika Outlier tableModel.getColumn Count() = = 0 maka data belum dimasukkan 3. Jika tidak, isi tableDeteksiOutlier sesuai tableModel 4. Tampilkan tabel pada tabel Deteksi pada tabbed pane Deteksi Outlier dengan jTabbedPane1.setSelec tedComponent(deteksi Panel) dan jTabbedPane1.setEnab ledAt(1, true); Menampilkan 1. Buat List bertipe data distribusi per String dengan nama atribut berdasar daftar_atribut nama kolom pada 2. Inisialisasi nilai i=1 tabel data 3. Selama i<dataPreprocessTable. getColumnCount benar ini daftar_atribut dengan dataPreprocessTable.g etColumnName(i) 4. Mengirim nilai daftar_atribut dan dataPreprocessTable ke HalamanDistribusiAtri but untuk selanjutnya diproses disana Menampilkan 1. Menampilkan kotak kotak dialog untuk dialog Open File memilih file .xls 2. nama_file menangkap atau .csv lalu nama file terpilih membaca file 3. potong_nama_file = tersebut dan nama_file.split("\\."); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI menampilkannya ke dalam tabel data updateCellWidth(JTable) Mengatur ukuran lebar kolom pada tabel data agar disesuaikan dengan ukuran karakter isi kolom yang paling panjang adjustJTableRowSizes (JTable) Mengatur ukuran baris pada tabel data 70 4. Jika potong_nama_file[1].e quals("xls") lakukan langkah pada algoritma pilih file xls (di bawah tabel method HalamanTampilTabel) 5. Jika potong_nama_file[1].e quals("xls")csv lakukan langkah pada tabel pilih file .csv (di bawah tabel method HalamanTampilTabel) 6. Jika tidak keduanya (bukan file .xls dan csv yang dipilih) , tampilkan pesan peringatan 1. panggil method adjustJTableRowSizes (table) 2. inisialisasi nilai i = 0 3. selama i < table.getColumnCount () panggil method adjustColumnSizes(t,i, 2) 1. Inisialisasi nilai row =0 2. Selama row < jTable.getRowCount() lakukan ke langkah 3 3. int maxHeight = 0 4. inisialisasi column = 0 5. Selama column < jTable.getColumnCou nt(), bandingkan tinggi baris ke-row dan kolom ke-column dengan maxHeight lalu masukan ke dalam maxHeight 6. Buat tinggi baris kerow dengan method PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI adjustColumnSizes(JTable ,int,int) Mengatur ukuran kolom pada tabel data 1. 2. 3. 4. 5. prosesDeteksi() Menerima input M dan dmin serta data untuk diproses pencarian outlier nya 71 jTable.setRowHeight( row, maxheight) dan kembali ke langkah 2 TableCellRenderer renderer = col.getHeaderRendere r() Jika renderer = = null maka renderer = table.getTableHeader( ).getDefaultRenderer( ) inisialisasi nilai r = 0 dan width = comp.getPreferredSiz e().width Selama r < table.getRowCount, lebar kolom pada baris ke-r bernilai currentWidth yang diambil dari nilai maksimum antara width dan currentWidth dan dimasukan dalam nilai width Buat ukuran lebar kolom kolom dengan col.setPreferredWidth (width) lalu col.setWidth(width) 1. Jika nilai M atau dmin kosong, lakukan pengisian ulang kedua parameter tersebut 2. Jika nilai M dan dmin isi, lanjutkan ke langkah 3 3. Jika nilaiMdan dmin cocok dengan pola [09.]* lakukan langkah 4 4. Inisialisasi i=0 5. Selama i<baris, lakukan langkah 6-9 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI cek_atribut_hapus(String, List<String>) Mengecek nama atribut yang akan dihapus dari tabel seleksi atribut cek_atribut_kolom(String, Vector) Mengecek nama atribut yang tidak dihapus dari tabel data 72 6. Buat arraylist dengan nama data_nilai 7. Insialisasi j=0 8. Selama j<kolom lakukan pengecekan jika j==0 maka label diisi dengan tableModel.getValueA t(i,j) Jika tidak tambahkan tableModel.getValueA t(i, j).toString() ke dalam variabel data nilai 9. addVertex(label,data_n ilai) 10. Inisialisasi i=0 11. Selama i<baris lakukan langkah 12-13 12. Inisialisasi j=0 13. Selama j<baris, jika i!=j lakukan addEdge 14. hasilDeteksiTextArea diisi dengan hasil deteksi outlier dengan memanggil method displayOutlier pada kelas Graph 1. boolean cek = false 2. inisialisasi nilai i = 0 3. selama i < hapus_atribut.size() maka ke langkah 4, jika kondisi salah kelangkah 5 4. Jika hapus_atribut.get(i).eq uals(atribut), maka cek=true 5. kembalikan nilai cek= false 1. boolean cek = false 2. inisialisasi nilai i = 0 3. selama i <kolom.size() maka ke langkah 4, jika PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI hapusAtribut() Menghapus atribut tabel data sesuai atribut yang dipilih pengguna 73 kondisi salah kelangkah 5 4. Jika kolom.get(i).equals(at ribut), maka cek=true 5. kembalikan nilai cek = false 1. buat list bernama hapus_seleksi 2. inisialisasi nilai i = 0 3. selama i < cb_table.getRowCoun t, lakukan pengecekan langkah ke 4 4. Jika cb_table.getValueAt(i, 1).equals(true), tambah kan nilai cb_table.getValueAt(i, 0) ke dalam atribut hapus_seleksi 5. int kolom= model.getColumnCou nt(); int baris = model.getRowCount() ; 6. buat vector baru namaKolom dan isiData 7. inisialisasi nilai k = 0 8. selama k< cb_table.getRowCoun t, lakukan pengecekan ke langkah 9 9. Jika method cek_atribut_hapus(cb_ table.getValueAt(k,0). toString, hapus_atribut)= = false maka tambahkan cb_table.getValueAt(k ,0) ke 10. inisialisasi a = 0 11. Selama a< baris, buat PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI batalTandaiSemuaAtribut( ) tandaiSemuaAtribut() Menghapus tanda centang pada semua kolom Pilih nama atribut pada tabel seleksi atribut Memberi tanda centang pada semua kolom pilih nama atribut pada tabel seleksi atribut 74 vector baru satu_baris lalu ke langkah 12 12. inisialisasi b = 0 13. Selama b < kolom , lalu lakukan pengecekan ke langkah 14 14. Jika method cek_atribut_kolom(m odel.getColumnName (b).toString, namaKolom) == true maka model.getValueAt(a,b ) ditambahkan ke variabel satu_baris 15. satu_baris ditambahkan pada variabel isiData, lalu kembali ke langkah 8 16. Mengeset model tabel preprocess dengan nama kolom dengan vector namaKolom dan baris dengan vector isiData 17. Lakukan removeRow pada tabel seleksiAtribut sesuai nama atribut yang dihapus 1. inisialisasi nilai i = 0 2. selama i < cb.table.getRowCount , lakukan cb_table.setValueAt(f alse,i,1) 1. inisialisasi i = 0 2. selama i < cb.table.getRowCount , lakukan cb_table.setValueAt(tr ue,i,1) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI simpanFile() Menyimpan hasil deteksi outlier dalam file .txt atau .doc 75 1. Buka kotak dialog Save File 2. Baca lokasi penyimpanan file dan disimpan dalam variabel filename 3. Membaca format file yang dipilih pengguna dengan fileChooser.getFile Filter().getDescript ion() lalu ditampung dalam variabel extension 4. Jika extension = “"Microsoft Word (*.doc)" maka format file yang dipilih “.doc” 5. Jika extension = "Text Documents (*.txt)" maka format file adalah “.txt” 6. Ambil isi teks pada hasilDeteksiTextAr ea.getText() lalu tampung pada variabel hasil_text_area 7. Potong isi hasil_text_area per baris dengan method split("\\n") 8. Tampung isi baris dari hasil_text_area ke dalam variabel array potong_isi 9. Selama i < potong_isi.length, ambil nilai potong_isi ke i, konversi ke tipe data String lalu simpan nilai PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 76 tersebut 4.3.7.7 Rincian Algoritma pada Method di Kelas HalamanDistribusiAtribut Nama method Fungsi method Algoritma method tampilAtribut(List<String, Menampilkan nama 1. inisialisasi nilai i = JTable) atribut yang ada pada 1 tabel data (pada 2. selama i< Halaman Utama) tabel.getColumnC ount() terpenuhi, lakukan penambahan nilai ke I pada atributComboBox yang disesuaikan nama kolom pada tabel data pilihAtributComboBox() Menampilkan distribusi 1. Buat list dengan atribut ke dalam tabel nama isi Data daftar distribusi atribut 2. Inisialisasi nilai i =1 3. Selama i<model.getColum Count() terpenuhi lakukan langkah ke 4 4. Jika atribut pilihan pengguna = model.getColumn Name(i) maka lakukan inisialisasi nilai j=0 5. Selama j<model.getRowC ount, maka massukan seluruh data pada kolom i kedalam list isiData 6. Hapus duplikasi data pada isiData dengan memasukkan isiData ke dalam PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI lihatGrafik() Mengirim data atribut terpilih beserta jumlah 77 HashSet 7. Bersihkan isiData dengan metode clear() 8. Masukan isiData yang telah dihilangkan duplikasinya kedalam isiData = new ArrayList(hashSet ) 9. Inisialisasi nilai k=0 10. Selama k<isiData.size(), lakukan inisialisasi l=0 kemudian lanjutkan ke langkah 11 11. Selama l < model.getRowCou nt(), jika isiData.get(k)= model.getValueAt (l,i) lakukan setCount(count+1) 12. Nilai data[k][0]=isiData .get(k).toString Nilai data[k][l]=Stri ng.valueOf(get Count()) lalu setCount(0) dan kembalik ke langkah 10 13. tabelGrafik diisi dengan data = array data1 dan nama kolom = array nama_kolom 1. inisialisasi nilai i = 0 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI nya ke kelas Diagram batang untuk ditampilkan distribusi atribut dalam bentuk diagram batang 78 2. selama i < row(tabelGrafik.ge tRowCount() terpenuhi, ambil data pada tabelGrafik kolom ke-0 ,baris ke-i, lalu masukkan ke dalam array data, baris ke-i, kolom ke-1 dimasukkan ke array jumlah_data dan baris ke-i, kolom ke-1 dikonversi ke nilai integer lalu dimasukkan ke array jumlah 3. panggil method tampil (v,n ,t) yang ada di kelas DiagramBatang 4.3.7.8 Rincian Algoritma pada Method di Kelas HalamanPilihDatabase Nama method Fungsi method Algoritma method pilihDatabase() Melakukan login ke 1. Jika basisdata sesuai dbComboBox.getSelectedIn masukanp pengguna dex == 0 lakukan langkah ke a-c a. Jika input username atau password atau url kosong , lakukan pengisian kembali b. Jika input username, password , dan url tidak kosong dan benar maka berhasil login ke basisdata Oracle pengecekan dilakukan method isConnectedOracle(url, username, password) c. Tampilkan pesan sukses lalu tampilkan form PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 79 Halaman TampilTabel. Jika tidak berhasil, tampilkan pesan kesalahan 2. Jika dbComboBox.getSelectedIn dex == 1 lakukan langkah ke d-e d. Jika input username atau password , nama database atau url kosong , lakukan pengisian kembali e. Jika input username, password ,nama database dan url tidak kosong dan benar maka berhasil login ke basisdata mySQL pengecekan dilakukan method isConnectedSQL(url + database, username, password) f. Tampilkan pesan sukses lalu tampilkan form Halaman Tampil Tabel. Jika tidak berhasil, tampilkan pesan kesalahan 4.3.7.9 Rincian Algoritma pada Method di Kelas HalamanTampilTabel Nama method Fungsi Algoritma method method tampilTabel(DatabaseCo Menampilkan 1. Jika database == “Oracle” nnection, String) daftar tabel ,tampilkan daftar tabel dalam dalam basisdata Oracle basisdata yang menggunakan method telah dipilih tampilTableOracle(conn.ge pengguna tConnection() 2. Jika database==”MySQL” , tampilkan daftar tabel dalam basisdata mySQL menggunakan method tampilTableMySql(conn.ge tConnection() pilihTabel() Mengirim isi 1. Mengambil nama tabel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI data dari tabel dalam basisdata yang telah dipilih pengguna ke dalam tabel data pada Halaman Utama 80 sesuai pilihan pengguna melalui atribut daftarTableComboBox.get SelectedItem().toString() 2. Mengirim nama tabel terpilih(daftarTableCombo Box.getSelectedItem().toSt ring()) ke dalam kelas Halaman Utama Algoritma pilih file xls 1. 2. 3. 4. Membuat vector baru dengan nama columnNames dan data Objek workbook berisi Workbook.getWorkbook Inisialisasi i=0 Selama i<sheet.getColumns() benar , lakukan langkah ke 5-6 , jika salah ke langkah 7 5. cell diisi dengan sheet.getCell kolom ke i 6. Cell.getContents() ditambahkan ke dalam columnName 7. Inisialisasi j=1 8. Selama j<sheet.getRows benar, lakukan langkah ke 9-13, jika salah ke langkah 14 9. Buat vector data2 10. Inisialisasi i=0 11. Selama i<sheet.getColumns() benar, lakukan langkah 12 12. cell diisi dengan cell pada baris ke i dan kolom ke j, lalu cell.getContents dimasukkan ke data2 13. data2 ditambahkan ke data 14. atur tabel preprocess dengan isi baris yang diambil dari data dan kolom dari columnName 15. inisialisasi i=0 16. selama i<model.getColumnCount benar lanjutkan ke langkah 17 , jika salah ke langkah 22 17. inisialisasi j=0 18. selama j<model.getRowCount benar, lakukan langkah 19, jika salah j++ ke langkah 17 19. jika i==0 dan model.getValueAt(j, 0).toString().isEmpty() benar lakukan langkah 20 jika salah i++ lakukan langkah 15 20. tampilkan peringatan label data kosong i , model.getColumnCount() – 1, this.dispose(),tampilkan halaman Awal, break 21. Jika model.getValueAt(j, i).toString().isEmpty() atau !model.getValueAt(j, i).toString().matches("[0-9.]*") atau model.getValueAt(j, i).toString().matches("[.]*") benar tampilkan Halaman Missing Values jika salah, i++ kembali ke langkah 15 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 81 22. Inisialisasi i=0 23. Selama i<model.getColumnCount() benar tambahkan nama kolom ke cb_table Algoritma Pilih File .csv 1. Membuat vector baru dengan nama columnNames dan data 2. Membaca baris pertama dari file .csv 3. Selama ada cell dengan nilai yg isi,tambahkan setiap nilai pada baris pertama ke vector columnNames. Jika tidak lanjutkan ke langkah 4 4. Selama baris selanjutnya ada, lanjutkan ke langkah 5 jika tidak ke langkah 6 5. Selama ada cell dengan nilai tertentu, menambahkan setiap nilai cell ke vector row. Jika tidak, row ditambahkan ke vector data 6. pindah ke baris berikutnya dan kembali ke langkah 4 7. mengatur model tabel preprocess dengan nama kolom dengan vector columnNames dan data dengan vector data 8. Inisialisasi nilai i = 0 9. Selama i < model.getColumnCount(), ke langkah 10, jika tidak ke langkah 12 10. Inisialisasi nilai j = 0 11. Selama j < model.getRowCount(), ke langkah 10, jika tidak j++ dan ke langkah 10 12. model.getValueAt(j, i).toString().isEmpty() true atau !model.getValueAt(j, i).toString().matches("[0-9.]*") true atau model.getValueAt(j, i).toString().matches("[.]*") true maka panggil HalamanMissingValues, i = model.getColumncount() -1 lalu break Jika false, maka j++ lalu kembali ke langkah 10 13. lalu i++ lalu kembali ke langkah 8 14. Inisialisasi nilai i = 0 15. selama i < model.getColumncount() isikan nama kolom ke cb_table 4.4 Perancangan Antarmuka Perancangan antarmuka merupakan hal yang penting dalam pembuatan sistem, hal ini disebabkan karena antarmuka menjadi sarana interaksi pengguna dengan sistem. Semakin mudah pengguna memahami pemakaian sistem maka semakin baik rancangan antarmuka yang dimiliki sistem tersebut. Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 82 Loop memiliki delapan tampilan utama, masing-masing akan dijelaskan satu per satu sebagai berikut : 1. Tampilan Halaman Awal Halaman Awal merupakan tampilan awal ketika sistem pertama kali dijalankan. Halaman ini berisi nama sistem , tahun pembuatan sistem, dan terdapat tombol „Masuk‟ yang digunakan saat pengguna akan melakukan proses deteksi outlier. SISTEM PENDETEKSI OUTLIER MENGGUNAKAN ALGORITMA i Masu k Universitas Sanata Dharma Yogyakarta -Copyright 2013- Gambar 4.12 Tampilan Halaman Awal PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 83 2. Tampilan Halaman Utama Halaman Utama merupakan halaman dimana fungsi utama dari sistem pendeteksi outlier ini dilakukan oleh pengguna. Pada halaman utama terdapat tombol disamping kiri yaitu „Bantuan‟ dan „Keluar‟. Tombol „Bantuan „ digunakan untuk menuju ke halaman Bantuan , dimana petunjuk pemakaian program dimuat, sedangkan tombol „Keluar‟ digunakan apabila pengguna akan mengakhiri pemakaian sistem. Pada Halaman Utama terdapat tabbed pane Preprocess dan Deteksi Outlier. Pada tabbed pane Preprocess , menyediakan fungsi input data yang dapat dilakukan oleh pengguna. Data yang digunakan sebagai masukan data dapat berasal dari file .xls ,.csv , dan data dari dalam tabel di basisdata. Data tersebut selanjutnya akan dimasukan ke dalam tabel yang ada pada halaman Utama. Selain itu terdapat juga fungsi seleksi atributdan fungsi lihat distribusi data per atribut. Pada tabbed pane Deteksi Outlier memuat tampilan dimana pengguna dapat memasukan nilai parameter yang digunakan sebagai masukan dalam proses deteksi outlier selanjutnya akan ditampilkan hasil outlier pada JTextArea yang ada pada tabbed pane ini. Pengguna dapat pula melakukan penyimpanan outlier ke dalam format file .txt dan .doc dalam tabbed pane Deteksi Outlier. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 84 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 85 SISTEM PENDETEKSI OUTLIER MENGGUNAKAN ALGORITMA NAÏVE NESTED LOOP Deteksi Outlier Preprocess Bantuan Keluar Lokasi File : Tabel Data Pilih File Atribut 1 Atribut 2 Jumlah data : 126 Atribut 3 Jumlah atribut : Pilih Database Atribut 4 4 Seleksi Atribut Atribut Pilih V Hapus Atribut Batal Tandai Semua Atribut Distribusi Atribut Tandai Semua Atribut Submit Data Gambar 4.13 Tampilan Halaman Awal (Bagian Preprocess) 85 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI SISTEM PENDETEKSI OUTLIER MENGGUNAKAN ALGORITMA NAÏVE NESTED LOOP Preprocess Bantuan Deteksi Outlier Proses Algoritma Index Based Keluar M: dmin : Proses Tabel Data Jumlah data : 126 Hasil Deteksi Outlier M = 2, D =5 Data 1 adalah outlier Simpan Hasil Outlier Gambar 4.14 Tampilan Halaman Utama (Bagian Deteksi Outlier) 86 86 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 87 3. Tampilan Halaman Pilih Database Tampilan berikut ini merupakan tampilan dimana pengguna memilih basisdata yang akan digunakan dalam hal ini Oracle atau mySQL kemudian memasukkan username , password , database , dan URL. Jika berhasil login pengguna akan melihat daftar tabel yang ada pada basisdata lalu memilihnya untuk selanjutnya dimasukan sebagai data dideteksi outlier nya. Pilih Koneksi Database Pilih Database : Username : Password : Database : URL Oracle : OK Batal Gambar 4.15 Tampilan Halaman Pilih Database yang akan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 88 4. Tampilan Halaman Tampil Tabel Tampilan ini merupakan rancangan tampilan ketika pengguna sudah login ke dalam basisdata dan memilih tabel yang akan diambil datanya sebagai masukan ke dalam sistem . Daftar Tabel : Pilih Tabel Batal Gambar 4.16 Tampilan Halaman Tampil Tabel 5. Tampilan Halaman Distribusi Atribut Tampilan ini merupakan tampilan dimana pengguna dapat melihat distribusi atribut data dengan memilih salah satu atribut dari masukan data lalu melihat isi data beserta jumlah datanya pada tabel Daftar Distribusi Atribut. Kemudian jika pengguna akan melihat distribusi data per atribut dalam bentuk diagram batang, pengguna dapat menekan tombol „Lihat Grafik‟ PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 89 DaftarAtribut : Tabel Daftar Distribusi Atribut Atribut Lihat Grafik Jumlah Data Keluar Gambar 4.17 Tampilan Halaman Distribusi Atribut 6. Tampilan Halaman Konfirmasi Keluar Tampilan berikut ini merupakan tampilan halaman konfirmasi keluar yang muncul setelah pengguna menekan tombol „Keluar‟ pada Halaman Utama dan memunculkan pernyataan apakah pengguna benar-benar akan keluar dari sistem atau tidak. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 90 Apakah Anda Yakin Untuk Keluar Dari Sitem ? YA TIDAK Gambar 4.18 Tampilan Halaman Konfirmasi Keluar 7. Tampilan Halaman Bantuan Tampilan berikut merupakan tampilan halaman bantuan yang muncul setelah pengguna menekan tombol „Bantuan‟ pada Halaman Utama dan memuat petunjuk penggunaan Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop dengan langkah-langkah rinci untuk masingmasing fungsi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI SISTEM PENDETEKSI OUTLIER MENGGUNAKAN ALGORITMA NAÏVE NESTED LOOP Petunjuk Penggunaan Petunjuk Preprocessing Data Petunjuk Proses Deteksi Outlier Kembali Gambar 4.19 Tampilan Halaman Bantuan 91 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB V IMPLEMENTASI PENAMBANGAN DATA Pada bab ini berisi tentang implementasi sistem yang telah selesai dibangun berdasarkan pada analisis dan perancangan sistem dalam bab sebelumnya. Implementasi aplikasi ini dilakukan dengan menggunakan bahasa pemrograman Java dan perangkat lunak NetBeans IDE 6.9.1 pada komputer dengan spesifikasi processor Intel Dual Core 2.2 Ghz, memori 2.00 GB, dan harddisk 320 GB. 5.1 Implementasi Antarmuka Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop telah diimplementasikan menjadi sebuah aplikasi yang siap digunakan, maka pada bab ini akan ditampilkan antarmuka dari sistem tersebut. 5.1.1 Implementasi Halaman Awal Halaman Awal merupakan halaman yang pertama kali muncul ketika aplikasi dijalankan. Pengguna masuk ke dalam Sistem Deteksi Outlier Menggunakan Algoritma Naïve Nested Loop dengan menekan tombol „Masuk‟ seperti yang ada pada gambar 5.1 di bawah ini : 92 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 93 Gambar 5.1 Antarmuka Halaman Awal 5.1.2 Implementasi Halaman Utama Halaman Utama muncul setelah pengguna menekan tombol „Masuk‟. Halaman ini merupakan halaman inti fungsi-fungsi dilakukan pada aplikasi Sistem Deteksi Outlier Menggunakan Algoritma Naïve Nested Loop. Pada Halaman Utama terdapat dua buah tabbed pane , yaitu Preprocess dan Deteksi Outlier. Di samping kiri tabbed pane tersebut terdapat tombol „Bantuan‟ dan tombol „Keluar‟. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 94 Gambar 5.2 Antarmuka Halaman Utama (tabbed pane Preprocess) Gambar 5.3 Antarmuka Halaman Utama (tabbed pane Deteksi Outlier) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 95 Pada tabbed pane Preprocess pengguna dapat memasukkan data yang berekstensi .xls , .csv , dan data yang berasal dari tabel dalam basisdata. Jika pengguna ingin mengolah data .xls maka pengguna menekan tombol „Pilih Data‟ lalu memilih data yang akan diolah seperti pada gambar 5.4. Gambar 5.4 Kotak Dialog Saat Memilih File .xls Setelah file .xls dipilih maka data tersebut akan ditampilkan dalam tabel seperti tampak pada antarmuka di bawah ini : Gambar 5.5 Antarmuka Halaman Utama (data file .xls tertampil) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Hal yang sama dilakukan jika pengguna ingin mengolah data .csv 96 maka pengguna menekan tombol „Pilih Data‟ lalu memilih data yang akan diolah seperti pada gambar 5.6. Gambar 5.6 Kotak Dialog Saat Memilih File .csv Setelah file .csv dipilih maka data tersebut akan ditampilkan dalam tabel seperti tampak pada antarmuka di bawah ini : Gambar 5.7 Antarmuka Halaman Utama (data file .csv tertampil) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 97 Pada Halaman Utama tabbed pane Preprocess juga terdapat fungsi seleksi atribut. Fungsi ini dilakukan ketika pengguna telah memasukan data dan akan memilih atribut tertentu yang digunakan dalam perhitungan deteksi outlier. Pengguna memberi tanda centang pada kolom Pilih yang terdapat pada tabel Seleksi Atribut lalu menekan tombol Hapus Atribut. Berikut tampilan antarmuka ketika pengguna telah memasukan data dan belum melakukan seleksi atribut. Jika pengguna akan menghapus semua atribut, harus terlebih dahulu menekan tombol „Tandai Semua Atribut‟ sebelum menekan tombol „Hapus Atribut‟. Jika akan membatalkan penghapusan semua atribut , pengguna dapat menekan tombol „Batal Tandai Semua‟. Berikut ini merupakan antarmuka Halaman Utama sebelum pengguna melakukan fungsi seleksi atribut. Gambar 5.8 Antarmuka Halaman Utama (sebelum dilakukan fungsi Seleksi Atribut) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 98 Gambar 5.9 Antarmuka Detail Fungsi Seleksi Atribut (pada Halaman Utama) Gambar 5.9 merupakan antarmuka saat pengguna memilih atribut yang akan dihilangkan dari perhitungan deteksi outlier dalam hal ini atribut nil4 dan nil5. Setelah memberi tanda pada kolom Pilih, pengguna menekan tombol „Hapus Atribut‟. Berikut ini adalah tampilan antarmuka setelah atribut nil4 dan nil5 dihilangkan,seperti tampak pada gambar 5.10 kedua atribut tersebut telah dihilang pada JTable. Gambar 5.10 Antarmuka Halaman Utama (setelah dilakukan fungsi Seleksi Atribut) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 99 Berikutnya adalah fungsi deteksi outlier yang ada pada tabbed pane Deteksi Outlier , seperti tampak pada antarmuka di Halaman Utama di bawah ini : Gambar 5.11 Antarmuka Halaman Utama (tabbed pane Deteksi Outlier) Antarmuka tersebut akan muncul ketika pengguna telah memasukan data yang akan dideteksi outlier nya melalui fungsi yang telah tersedia pada Halaman Utama tabbed pane „Preprocess‟ dan kemudian menekan tombol „Submit Data‟ untuk masuk ke tabbed pane Deteksi Outlier. Ketika akan memulai deteksi outlier , pengguna memasukkan nilai parameter M dan dmin kemudian menekan tombol „Proses‟ dan hasil deteksi outlier akan tertampil pada JText Area di bawah tabel data seperti tampak pada gambar 5.11. Setelah melakukan proses deteksi outlier , pengguna dapat menyimpan hasilnya dengan menekan tombol „Simpan Hasil Outlier‟ pada Halaman Utama PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 100 tabbed pane Deteksi Outlier. Berikut ini merupakan kotak dialog saat pengguna akan melakukan penyimpanan hasil outlier : Gambar 5.12 Kotak Dialog Simpan Hasil Outlier Sistem ini menyediakan fungsi penyimpanan hasil deteksi outlier dalam dua format file yaitu file .doc dan .txt. Untuk menyimpan hasil deteksi outlier pengguna memilih lokasi penyimpanan, memasukkan nama file, dan memilih format file yang akan disimpan. Kemudian ketika file berhasil disimpan akan muncul konfirmasi bahwa penyimpanan berhasil dilakukan, seperti tampak pada gambar 5.13 di bawah ini : Gambar 5.13 Pesan Ketika Proses Penyimpanan Hasil Outlier Berhasil Dilakukan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 101 5.1.3 Implementasi Halaman Distribusi Atribut Antarmuka ini merupakan antarmuka yang digunakan untuk melihat distribusi atribut dalam bentuk grafik diagram batang dari detail atribut yang telah dipilih oleh pengguna. Halaman ini akan muncul ketika pengguna telah menekan tombol „Distribusi Atribut‟ pada Halaman Utama tabbed pane Preprocess.Atribut tersebut diperoleh dari masukan data yang akan diproses dalam proses deteksi outlier. Berikut ini merupakan tampilan antarmuka halaman distribusi atribut yang terlihat pada gambar 5.14. Gambar 5.14 Antarmuka Halaman Distribusi Atribut Pengguna memilih salah satu nama atribut pada combobox „Daftar Atribut‟ kemudian jumlah data untuk masing-masing range yang ada di dalam atribut tersebut muncul pada Tabel Daftar Distribusi Atribut. Selanjutnya, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 102 pengguna menekan tombol „Lihat Grafik‟ untuk memulai proses melihat grafik diagram batang distribusi atribut. Pada gambar 5.15 terlihat grafik distribusi untuk atribut ips1 seperti yang telah dipilih pada Halaman Distribusi Atribut. Gambar 5.15 Antarmuka Grafik Distribusi Atribut 5.1.4 Implementasi Halaman Pilih Database Halaman Pilih Database merupakan halaman yang digunakan ketika pengguna mengambil data pada tabel dalam basisdata. Halaman ini muncul setelah pengguna menekan tombol „Pilih Database‟ yang terdapat pada Halaman Utama tabbed pane Preprocess. Tampilan antarmuka dari halaman pilih database dapat dilihat pada gambar 5.16 di bawah ini: PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 103 Gambar 5.16 Antarmuka Halaman Pilih Database Pengguna dapat memilih basisdata yang tersedia yaitu menggunakan Oracle atau MySQL. Ketika sudah memilih basisdata, pengguna dapat memasukan username , password , database, dan URL seperti tampak pada gambar 5.17. Gambar 5.17 Antarmuka Halaman Pilih Database (Setelah pengguna memilih basisdata) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 104 Setelah pengguna memasukkan username , password , database, dan URL dengan benar maka muncul konfirmasi bahwa koneksi berhasil dilakukan yang tampak pada gambar 5.18 di bawah ini : Gambar 5.18 Pesan Koneksi Berhasil 5.1.5 Implementasi Halaman Tampil Tabel Halaman Tampil Tabel merupakan antarmuka yang muncul ketika pengguna memilih masukan data yang berasal dari data pada tabel dalam basisdata dan diasumsikan bahwa pengguna sudah login terlebih dahulu menggunakan akun basisdata yang dimiliki. Setelah berhasil login, pengguna dapat melihat daftar tabel yang ada dalam basisdata dan memilih salah satu dari tabel tersebut dan menekan tombol „Pilih Tabel‟. Berikut merupakan tampilan antarmuka ketika pengguna akan memilih tabel dari basisdata : Gambar 5.19 Antarmuka Halaman Tampil Tabel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 105 Data dari tabel dalam basisdata selanjutnya akan ditampilkan pada Halaman Utama seperti tampak pada gambar berikut ini : Gambar 5.20 Antarmuka Halaman Utama Beserta Data dari Tabel dalam Basisdata 5.1.6 Implementasi Halaman Bantuan Halaman Bantuan merupakan antarmuka yang berisi mengenai petunjuk penggunaan sistem. Halaman Bantuan dapat diakses dengan menekan tombol „Bantuan‟ pada Halaman Utama. Berikut merupakan tampilan antarmuka dari Halaman Bantuan : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 106 Gambar 5.21 Antarmuka Halaman Bantuan 5.1.7 Implementasi Antarmuka Halaman Missing Values Halaman Missing Values adalah halaman peringatan ketika data yang dimasukan pengguna dalam hal ini masukan data file .xls mengandung baris kosong dan data yang dimasukkan dalam perhitungan mengandung data yang bukan angka. Sistem akan secara otomatis mengganti data kosong dan/atau data bukan angka menjadi bernilai 0 jika pengguna menekan tombol „Ya‟. Sedangkan, ketika pengguna menekan tombol „Tidak‟ maka pengguna mengganti data tersebut secara manual pada file asli. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 107 Gambar 5.22 Antarmuka Halaman Missing Values 5.1.8 Implementasi Halaman Konfirmasi Keluar Halaman konfirmasi keluar merupakan halaman konfirmasi ketika pengguna akan mengakhiri pemakaian sistem pendeteksi outlier ini. Terdapat konfirmasi kepada pengguna apakah pengguna benar-benar akan keluar dari sistem atau tidak. Halaman konfirmasi keluar muncul ketika pengguna menekan tombol „Keluar‟ yang terdapat pada Halaman Utama. Gambar 5.23 Antarmuka Halaman Konfirmasi Keluar PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 108 Berikut ini merupakan pesan yang muncul ketika pengguna benarbenar telah keluar dari sistem. Gambar 5.24 Pesan Berhasil Keluar dari Sistem 5.1.9 Implementasi Pengecekan Masukan Sistem pendeteksi outlier ini juga menyediakan fungsi error handling untuk mengatasi kesalahan pengguna mulai dari memasukan input data , pemrosesan data, sampai saat proses deteksi outlier. Berikut ini merupakan error handling yang tersedia dalam Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop : 1. Tampilan pesan berikut ini muncul ketika pengguna telah menekan tombol „Pilih File‟ pada Halaman Utama akan tetapi file yang dipilih tidak berformat .xls atau .csv. Gambar 5.25 Pesan Kesalahan (1) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 109 2. Ketika pengguna telah menekan tombol Pilih Database ( pada Halaman Utama) lalu memilih database Oracle (pada Halaman Pilih Database) akan tetapi terdapat username, password, atau URL yang belum terisi maka sistem mengeluarkan pesan peringatan seperti yang tampak pada gambar 5.26 dibawah ini : Gambar 5.26 Pesan Kesalahan (2) 3. Ketika pengguna telah menekan tombol Pilih Database ( pada Halaman Utama) lalu memilih database Oracle (pada Halaman Pilih Database) akan tetapi terdapat username, password, atau URL yang salah maka sistem mengeluarkan pesan peringatan seperti yang tampak pada gambar 5.27 dibawah ini : Gambar 5.27 Pesan Kesalahan (3) 4. Ketika pengguna telah menekan tombol Pilih Database ( pada Halaman Utama) lalu memilih database mySQL (pada Halaman PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 110 Pilih Database) akan tetapi terdapat username,password,database atau URL yang kosong maka sistem mengeluarkan pesan peringatan seperti yang tampak pada gambar 5.28 dibawah ini : Gambar 5.28 Pesan Kesalahan (4) 5. Ketika pengguna telah menekan tombol Pilih Database ( pada Halaman Utama) lalu memilih database mySQL (pada Halaman Pilih Database) akan tetapi terdapat username,password,database atau URL yang salah maka sistem mengeluarkan pesan peringatan seperti yang tampak pada gambar 5.29 dibawah ini : Gambar 5.29 Pesan Kesalahan (5) 6. Ketika pengguna menekan tombol Proses pada tabbed pane Deteksi Outlier (pada Halaman Utama) akan tetapi ada salah satu nilai parameter M atau dmin yang kosong maka muncul pesan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 111 peringatan bahwa nilai M atau dmin tidak boleh kosong seperti tampak pada gambar 5.30. Gambar 5.30 Pesan Kesalahan (6) 7. Ketika data yang diambil dari file .csv atau dari dalam tabel basisdata tidak lengkap dan./atau mengandung karakter bukan angka maka pengguna harus memeriksa kembali data tersebut dan muncul peringatan seperti yang tertera pada gambar 5.31 (ketika masukan data .csv) dan gambar 5.32 (ketika masukan data berasal dari basisdata). Gambar 5.31 Pesan Kesalahan (7) Gambar 5.32 Pesan Kesalahan (8) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 112 8. Ketika label data pada file .xls dan data dari tabel pada basisdata kosong maka akan muncul peringatan seperti tertera pada gambar 5.33. Gambar Pesan Kesalahan 5.33 (9) 5.2 Implementasi Dataset yang Akan Diuji Data yang akan digunakan sebagai masukan dalam proses deteksi outlier dan pengujian pada Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop ini adalah data akademik mahasiswa program studi Teknik Informatika Universitas Sanata Dharma tahun angkatan 2007-2008. Sebagian dari data tersebut, yaitu data akademik mahasiswa angkatan tahun 2007 yang diterima melalui jalur tes telah dihitung secara manual menggunakan Microsoft Excel dan selanjutnya hasil perhitungan tersebut dibandingkan dengan hasil deteksi outlier yang diperoleh dari sistem. Selain itu, untuk memastikan bahwa data hasil deteksi yang diperoleh dari perhitungan manual dan sistem benar-benar bermakna sebagai outlier dibanding data lain, maka hasil perhitungan manual dan hasil deteksi sistem akan dianalisa oleh Kepala Program Studi Teknik Informatika selaku pemilik data. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 113 5.3 Implementasi Kelas Pada bagian ini akan dibahas hasil dari implemetasi kelas beserta dengan algoritma yang telah dibuat sesuai dengan bab perancangan. Berikut merupakan tabel untuk seluruh daftar kelas yang telah diimplementasikan : Tabel 5.1 Tabel Implementasi Kelas No Nama Kelas Nama File Fisik Nama File Executable 1 DatabaseConnection DatabaseConnection.java DatabaseConnection.class 2 Graph_NaiveNL Graph_ NaiveNL.java Graph_ NaiveNL.class 3 Vertex_ NaiveNL Vertex_ NaiveNL.java Vertex_ NaiveNL.class 4 SeleksiAtribut SeleksiAtribut.java SeleksiAtribut.class 5 CheckBoxTableModel CheckBoxTableModel.java CheckBoxTableModel.class 6 DatabaseController DatabaseController.java DatabaseController.class 7 DiagramBatang DiagramBatang.form DiagramBatang.class 8 HalamanUtama HalamanUtama.form HalamanUtama.class 9 HalamanDistribusiAtribut HalamanDistribusiAtribut. HalamanDistribusiAtribut.class Form 10 HalamanPilihDatabase HalamanPilihDatabase.java HalamanPilihDatabase.class 11 HalamanTampilTabel HalamanTampilTabel.form HalamanTampilTabel.class 12 HalamanAwal HalamanAwal.form HalamanAwal.class 13 HalamanBantuan HalamanBantuan.form HalamanBantuan.class 14 HalamanMissingValues HalamanMissingValues. HalamanMissingValues.class Form PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15 HalamanKonfirmasiKeluar HalamanKonfirmasiKeluar. 114 HalamanKonfirmasiKeluar.class Form Untuk listing program dari implementasi kelas yang akan dipaparkan dalam bab ini memuat atribut dan method dari kelas yang berkaitan dengan algoritma untuk fungsi-fungsi utama pada sistem pendeteksi outlier. 5.3.1 Implementasi Kelas DatabaseConnection Berikut merupakan implementasi dari atribut dan method pada kelas DatabaseConnection yang telah dibuat sesuai dengan perancangannya. Dalam kelas ini terdapat method getConnectionSQL, isConnectedSQL, getConnectionOracle , isConnectedOracle yang berkaitan dengan fungsi pengambilan masukan data dari tabel dalam basisdata. public class DatabaseConnection { private String url; private String username; private String password; private Connection connection = null; public Connection getConnectionSQL(String url, String user, String passw) { try { Class.forName("org.gjt.mm.mysql.Driver"); setConnection(DriverManager.getConnection(url, user, passw)); System.out.println("koneksi berhasil"); } catch (Exception ex) { System.out.println("message: " + ex.getMessage()); } return getConnection(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 115 } public boolean isConnectedSQL(String url, String user, String passw) { if (getConnectionSQL(url, user, passw) != null) { return true; } else { return false; } } public Connection getConnectionOracle(String url, String user, String passw) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); setConnection(DriverManager.getConnection(url, user, passw)); System.out.println("koneksi berhasil"); } catch (Exception ex) { System.out.println("message: " + ex.getMessage()); } return getConnection(); } public boolean isConnectedOracle(String url, String user, String passw) { if (getConnectionOracle(url, user, passw) != null) { return true; } else { return false; } } } Listing Program 5.1 Kelas DatabaseConnection.java 5.3.2 Implementasi Kelas Graph_NaiveNL Berikut merupakan implementasi dari atribut dan method pada kelas Graph_NaiveNL yang dibuat sesuai dengan perancangannya. Kelas ini merupakan kelas yang memuat perancangan struktur data yang berkaitan dengan algoritma seperti implementasi matriks dua dimensi dan graf. Selain itu, terdapat method utama yang memuat cara kerja algoritma Naïve Nested Loop yaitu method “NaiveNL”. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 116 public class Graph_NaiveNL { private double[][] matrix; private Vertex_NaiveNL[] vertex; private int size = 0; public Graph_NaiveNL(int a) { matrix = new double[a][a]; vertex = new Vertex_NaiveNL[a]; for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { matrix[i][j] = -1; matrix[j][i] = -1; } matrix[i][i] = 0; } } public void addVertex(String label, List<Double> nilai) { vertex[size++] = new Vertex_NaiveNL(label, nilai); } public void addEdge(int asal, int tujuan, double jarak) { matrix[asal][tujuan] = matrix[tujuan][asal] = jarak; } public double euclideanDistance(int asal, int tujuan) { List<Double> awal = new ArrayList<Double>(); List<Double> akhir = new ArrayList<Double>(); awal = vertex[asal].getNilai(); akhir = vertex[tujuan].getNilai(); double total = 0; for (int i = 0; i < awal.size(); i++) { total = total + (awal.get(i) - akhir.get(i)) * (awal.get(i) - akhir.get(i)); } return Math.sqrt(total); } public void NaiveNL(double m, double D) { double jumlah_tetangga = 0; double jumlahData = vertex.length; System.out.println("Jumlah Data :" + jumlahData); System.out.println("Nilai M : " + m); System.out.println("Nilai D : " + D); for (int i = 0; i < jumlahData; i++) { jumlah_tetangga = 0; for (int j = 0; j < jumlahData; j++) { if (matrix[i][j] > 0 && i != j && matrix[i][j] <= D) { if (jumlah_tetangga == m + 1) { break; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 117 } jumlah_tetangga++; } } if (jumlah_tetangga < m + 1) { vertex[i].setOutlier(true); } else if (jumlah_tetangga >= m + 1) { vertex[i].setOutlier(false); } } } public String displayOutlier(Double m, Double D, String jml_baris, JTable t,String path) { String hasil_outlier = ""; boolean isi = false; int jumlah_outlier = 0; long t1 = System.nanoTime(); NaiveNL(m, D); long t2 = System.nanoTime(); System.out.println(); hasil_outlier = hasil_outlier + "Hasil Deteksi Outlier\n\n"; hasil_outlier = hasil_outlier + "Nilai M : " + m + "\n"; hasil_outlier = hasil_outlier + "Nilai dmin : " + D + "\n"; hasil_outlier = hasil_outlier + "Asal Data : " + path + "\n"; hasil_outlier = hasil_outlier + "Jumlah Data : " + jml_baris + "\n"; hasil_outlier = hasil_outlier + "===================================================== ================ \n\n"; for (int i = 0; i < vertex.length; i++) { if (vertex[i].isOutlier() == true) { jumlah_outlier++; hasil_outlier = hasil_outlier + "Mahasiswa " + vertex[i].getLabelData() + " adalah outlier\n\n"; for (int j = 1; j < t.getColumnCount(); j++) { for (int k = 0; k < t.getRowCount(); k++) { if (vertex[i].getLabelData() == t.getValueAt(k, 0)) { hasil_outlier = hasil_outlier + t.getColumnName(j)+ " bernilai " + t.getValueAt(k, j)+"\n" ; } } } hasil_outlier = hasil_outlier +"\n"; isi = true; } } hasil_outlier = hasil_outlier + "Jumlah Outlier : " + jumlah_outlier + PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 118 "\n"; if (isi == false) { hasil_outlier = hasil_outlier + "Tidak ada hasil outlier \n"; } hasil_outlier = hasil_outlier + "Lama Deteksi Outlier Dengan Algoritma Index Based: " + ((t2 - t1) * java.lang.Math.pow(10, -9)) + " detik\n"; return hasil_outlier; } } Listing Program 5.2 Kelas Kelas Graph_NaiveNL.java 5.3.3 Implementasi Kelas CheckBoxTableModel Berikut merupakan implementasi dari atribut dan method pada kelas CheckBoxTableModel yang dibuat sesuai dengan perancangannya. Kelas ini berkaitan dengan fungsi seleksi atribut karena berfungsi untuk menampilkan atribut-atribut yang akan diseleksi sebelum proses deteksi outlier dilakukan pada HalamanUtama. public class CheckBoxTableModel extends AbstractTableModel { String[] colom = {"Atribut", "Pilih"}; SeleksiAtribut fm = new SeleksiAtribut("", false); List<SeleksiAtribut> lfm; public CheckBoxTableModel() { lfm = new ArrayList<SeleksiAtribut>(); } public int getRowCount() { return lfm.size(); } public int getColumnCount() { return colom.length; } public String getColumnName(int col) { return colom[col]; } public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI case 0: return lfm.get(rowIndex).getAtribut(); case 1: return lfm.get(rowIndex).getPilih(); } return null; } public Class getColumnClass(int columnIndex) { return getValueAt(0, columnIndex).getClass(); } public void setValueAt(Object val, int rowIndex, int columnIndex) { switch (columnIndex) { case 0: lfm.get(rowIndex).setAtribut(val.toString()); break; case 1: lfm.get(rowIndex).setPilih((Boolean) val); break; } fireTableCellUpdated(rowIndex, columnIndex); } public boolean isCellEditable(int row, int col) { return true; } public void add(int a, SeleksiAtribut field_m) { lfm.add(a, field_m); fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1); } public void removeRow() { List<SeleksiAtribut> s = new ArrayList<SeleksiAtribut>(); for (SeleksiAtribut seleksi : lfm) { if (!seleksi.getPilih()) { s.add(seleksi); } } lfm = s; fireTableDataChanged(); } public void removeRow2() { List<SeleksiAtribut> s = new ArrayList<SeleksiAtribut>(); for (SeleksiAtribut seleksi : lfm) { if (!seleksi.getPilih()) { s.remove(seleksi); } } 119 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 120 lfm = s; fireTableDataChanged(); } } Listing Program 5.3 Kelas CheckBoxTableModel.java 5.3.4 Implementasi Kelas DatabaseController Berikut merupakan implementasi dari atribut dan method pada kelas DatabaseController yang dibuat sesuai dengan perancangannya. Kelas ini berkaitan dengan fungsi input data dari tabel basisdata karena terdapat method tampilTableOracle , tampilTableMySql, dan tampilIsiTable untuk menampilkan data tabel ke dalam Halaman Utama. public class DatabaseController { public ResultSet tampilTableOracle(Connection conn) throws SQLException { Statement statement; ResultSet result; String query; statement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "select * from user_tables"; result = statement.executeQuery(query); return result; } public ResultSet tampilTableMySql(Connection conn) throws SQLException { Statement statement; ResultSet result; String query; statement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "show tables"; result = statement.executeQuery(query); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 121 return result; } public ResultSet tampilIsiTable(Connection conn, String nama_tabel) throws SQLException { Statement statement; ResultSet result; String query; statement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "select * from "+nama_tabel; result = statement.executeQuery(query); return result; } } Listing Program 5.4 Kelas DatabaseController.java 5.3.5 Implementasi Kelas DiagramBatang Berikut merupakan implementasi dari atribut dan method pada kelas DiagramBatang yang dibuat sesuai dengan perancangannya. Kelas ini berkaitan dengan fungsi lihat grafik distribusi per atribut dan diimplementasikan pada method tampil. public class DiagramBatang extends Jframe { public void tampil(int[][] v, String[][] n, String[][] t) { setTitle(“Grafik Distribusi Atribut”); DefaultCategoryDataset data = new DefaultCategoryDataset(); for (int I = 0; I < n.length; i++) { data.setValue(v[i][1], n[i][0], t[i][0]); } JfreeChart jf = ChartFactory.createBarChart3D(“Distribusi Atribut”, “Atribut”, “Jumlah”, data, PlotOrientation.VERTICAL, true, true, true); ChartPanel cp = new ChartPanel(jf); setLayout(new BorderLayout()); add(cp, “Center”); pack(); RefineryUtilities.centerFrameOnScreen(this); this.setVisible(true); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 122 } Listing Program 5.5 Kelas DiagramBatang.java 5.3.6 Implementasi Kelas HalamanUtama Berikut merupakan implementasi dari atribut dan method pada kelas HalamanUtama yang dibuat sesuai dengan perancangannya. Kelas ini berkaitan semua fungsi utama sistem karena bertimdak sebagai interface utama ketika pengguna akan melakukan keseluruhan fungsi pada sistem. Pada listing program ini hanya akan ditampilkan method utama seperti yang ada pada tabel 4.3.6.6.l pada bab perancangan. public class HalamanUtama extends javax.swing.JFrame { CheckBoxTableModel cb_table = new CheckBoxTableModel(); SeleksiAtribut seleksi_atribut; public void tampilIsiDataBasisdata(DatabaseConnection conn, String namaTabel){ try { DatabaseController controller = new DatabaseController(); ResultSet rs; rs = controller.tampilIsiTable(conn.getConnection(), namaTabel); java.sql.ResultSetMetaData meta = rs.getMetaData(); int coloumCount = meta.getColumnCount(); Vector columnName = new Vector(); Vector data = new Vector(); columnName.clear(); for (int i = 1; i <= coloumCount; i++) { columnName.add(meta.getColumnName(i)); } data.clear(); while (rs.next()) { Vector data2 = new Vector(); for (int i = 1; i <= coloumCount; i++) { data2.add(rs.getString(i)); } data2.add("\n"); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 123 data.add(data2); } DefaultTableModel model = new DefaultTableModel(data, columnName); dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(dataPreprocessTable); dataPreprocessTable.setAutoCreateRowSorter(true); hasilDeteksiTextArea.setText(null); barisTextField.setText("" + data.size()); atributTextField.setText("" + columnName.size()); pathTextField.setText("Tabel : " + namaTabel); pathTextField.setEditable(false); for (int i = 0; i < model.getColumnCount(); i++) { for (int j = 0; j < model.getRowCount(); j++) { if (i == 0) { if (model.getValueAt(j, i) == null) { JOptionPane.showMessageDialog(null, "Label data Anda tidak lengkap !" + "\n" + "Silahkan periksa kembali label data pada tabel basisdata"); i = model.getColumnCount() - 1; this.dispose(); break; } } else { if (model.getValueAt(j, i) == null || !model.getValueAt(j, i).toString().matches("[0-9.]*") || model.getValueAt(j, i).toString().matches("[.]*")) { JOptionPane.showMessageDialog(null, "Data Anda tidak lengkap dan / atau terdapat karakter bukan angka !" + "\n" + "Silahkan periksa kembali data pada tabel basisdata"); i = model.getColumnCount() - 1; break; } } } } for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new SeleksiAtribut(); seleksi_atribut.setAtribut(model.getColumnName(i)); seleksi_atribut.setPilih(false); cb_table.add(i, seleksi_atribut); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 124 } seleksiTable.setModel(cb_table); TableModel tableModel = dataPreprocessTable.getModel(); tableDeteksiOutlier.setModel(tableModel); tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier); int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); } catch (Exception e) { } } public HalamanUtama(DatabaseConnection conn, String namaTabel) { initComponents(); setTitle("Halaman Utama"); tampilIsiDataBasisdata(conn, namaTabel); } public void PilihDB() { hapusButton.setEnabled(true); tandaiSemuaButton.setEnabled(true); batalTandaiButton.setEnabled(true); distribusiButton.setEnabled(true); submitDataButton.setEnabled(true); pathTextField.setEditable(false); HalamanPilihDatabase pilih_db = new HalamanPilihDatabase(); pilih_db.setVisible(true); } public void submitData() { TableModel tableModel = dataPreprocessTable.getModel(); if (tableModel.getColumnCount() == 0) { JOptionPane.showMessageDialog(null, "Anda belum memasukkan data !"); pathTextField.setText(null); } else { tableDeteksiOutlier.setModel(tableModel); tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier); int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); System.out.println(" " + baris); jTabbedPane1.setSelectedComponent(deteksiPanel); jTabbedPane1.setEnabledAt(1, true); } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public void distribusiAtribut() { List<String> daftar_atribut = null; daftar_atribut = new ArrayList<String>(); for (int i = 1; i < dataPreprocessTable.getColumnCount(); i++) { daftar_atribut.add(dataPreprocessTable.getColumnName(i)); } HalamanDistribusiAtribut grafik = new HalamanDistribusiAtribut(daftar_atribut, dataPreprocessTable); grafik.setVisible(true); } public void pilihFile() { JFileChooser fileChooser = new JFileChooser(); int returnValue = fileChooser.showOpenDialog(null); if (returnValue == JFileChooser.APPROVE_OPTION) { String nama_file = fileChooser.getSelectedFile().getPath(); String[] potong_nama_file = nama_file.split("\\."); if (potong_nama_file[1].equals("xls")) { cb_table.removeRow2(); File fileExcel = fileChooser.getSelectedFile(); Vector columnName = new Vector(); Vector data = new Vector(); try { Workbook workbook = Workbook.getWorkbook(fileExcel); Sheet sheet = workbook.getSheet(0); columnName.clear(); for (int i = 0; i < sheet.getColumns(); i++) { Cell cell = sheet.getCell(i, 0); columnName.add(cell.getContents()); } data.clear(); for (int j = 1; j < sheet.getRows(); j++) { Vector data2 = new Vector(); for (int i = 0; i < sheet.getColumns(); i++) { Cell cell = sheet.getCell(i, j); data2.add(cell.getContents()); } data2.add("\n"); data.add(data2); } } catch (Exception e) { e.printStackTrace(); } DefaultTableModel model = new DefaultTableModel(data, columnName); 125 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 126 dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(dataPreprocessTable); dataPreprocessTable.setAutoCreateRowSorter(true); barisTextField.setText("" + data.size()); atributTextField.setText("" + columnName.size()); pathTextField.setText(fileExcel.getPath()); hasilDeteksiTextArea.setText(null); hapusButton.setEnabled(true); distribusiButton.setEnabled(true); submitDataButton.setEnabled(true); tandaiSemuaButton.setEnabled(true); batalTandaiButton.setEnabled(true); for (int i = 0; i < model.getColumnCount(); i++) { for (int j = 0; j < model.getRowCount(); j++) { if (i == 0) { if (i == 0 && model.getValueAt(j, 0).toString().isEmpty()) { JOptionPane.showMessageDialog(null, "Label data tidak lengkap !" + "\n" + "Silahkan lengkapi label data pada file asli"); i = model.getColumnCount() - 1; this.dispose(); HalamanAwal awal = new HalamanAwal(); awal.setVisible(true); break; } } else { if (model.getValueAt(j, i).toString().isEmpty() || !model.getValueAt(j, i).toString().matches("[0-9.]*") || model.getValueAt(j, i).toString().matches("[.]*")) { HalamanMissingValues ms = new HalamanMissingValues(this, rootPaneCheckingEnabled, model); ms.setVisible(true); i = model.getColumnCount() - 1; break; } } } } for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new SeleksiAtribut(); seleksi_atribut.setAtribut(model.getColumnName(i)); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 127 seleksi_atribut.setPilih(false); cb_table.add(i, seleksi_atribut); } seleksiTable.setModel(cb_table); TableModel tableModel = dataPreprocessTable.getModel(); tableDeteksiOutlier.setModel(tableModel); tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier); int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); } else if (potong_nama_file[1].equals("csv")) { cb_table.removeRow2(); File fileCsv = fileChooser.getSelectedFile(); Vector columnNames = new Vector(); Vector data = new Vector(); String line; try { BufferedReader br = new BufferedReader(new FileReader(fileCsv)); StringTokenizer st = new StringTokenizer(br.readLine(), ","); while (st.hasMoreTokens()) { columnNames.addElement(st.nextToken()); } while ((line = br.readLine()) != null) { StringTokenizer st2 = new StringTokenizer(line, ","); Vector row = new Vector(); while (st2.hasMoreTokens()) { row.addElement(st2.nextToken()); } data.addElement(row); } br.close(); DefaultTableModel model = new DefaultTableModel(data, columnNames); dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(dataPreprocessTable); dataPreprocessTable.setAutoCreateRowSorter(true); pathTextField.setText(fileCsv.getPath()); barisTextField.setText("" + data.size()); atributTextField.setText("" + columnNames.size()); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 128 hasilDeteksiTextArea.setText(null); hapusButton.setEnabled(true); distribusiButton.setEnabled(true); submitDataButton.setEnabled(true); tandaiSemuaButton.setEnabled(true); batalTandaiButton.setEnabled(true); for (int i = 0; i < model.getColumnCount(); i++) { for (int j = 0; j < model.getRowCount(); j++) { if (model.getValueAt(j, i).toString().isEmpty() || !model.getValueAt(j, i).toString().matches("[0-9.]*") || model.getValueAt(j, i).toString().matches("[.]*")) { JOptionPane.showMessageDialog(null, "Data Anda tidak lengkap dan / atau terdapat karakter bukan angka !" + "\n" + "Silahkan periksa kembali data pada file asli"); i = model.getColumnCount() - 1; break; } } } for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new SeleksiAtribut(); seleksi_atribut.setAtribut(model.getColumnName(i)); seleksi_atribut.setPilih(false); cb_table.add(i, seleksi_atribut); } seleksiTable.setModel(cb_table); TableModel tableModel = dataPreprocessTable.getModel(); tableDeteksiOutlier.setModel(tableModel); tableDeteksiOutlier.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateCellWidth(tableDeteksiOutlier); int baris = tableModel.getRowCount(); jumlahBarisDeteksi.setText(" " + baris); } catch (Exception e) { } } else { JOptionPane.showMessageDialog(null, "File yang Anda pilih harus berformat .xls atau .csv"); } } } private void updateCellWidth(JTable table) { adjustJTableRowSizes(table); for (int i = 0; i < table.getColumnCount(); i++) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 129 adjustColumnSizes(table, i, 2); } } private void adjustJTableRowSizes(JTable jTable) { for (int row = 0; row < jTable.getRowCount(); row++) { int maxHeight = 0; for (int column = 0; column < jTable.getColumnCount(); column++) { TableCellRenderer cellRenderer = jTable.getCellRenderer(row, column); Object valueAt = jTable.getValueAt(row, column); Component tableCellRendererComponent = cellRenderer.getTableCellRendererComponent(jTable, valueAt, false, false, row, column); int heightPreferable = tableCellRendererComponent.getPreferredSize().height; maxHeight = Math.max(heightPreferable, maxHeight); } jTable.setRowHeight(row, maxHeight); } } public void adjustColumnSizes(JTable table, int column, int margin) { DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel(); TableColumn col = colModel.getColumn(column); int width; TableCellRenderer renderer = col.getHeaderRenderer(); if (renderer == null) { renderer = table.getTableHeader().getDefaultRenderer(); } Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0); width = comp.getPreferredSize().width; for (int r = 0; r < table.getRowCount(); r++) { renderer = table.getCellRenderer(r, column); comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, column), false, false, r, column); int currentWidth = comp.getPreferredSize().width; width = Math.max(width, currentWidth); } width += 2 * margin; col.setPreferredWidth(width); col.setWidth(width); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public void prosesDeteksi() { String jumlah_baris = jumlahBarisDeteksi.getText(); String path = pathTextField.getText(); if (nilaiMTF.getText().isEmpty() || dminTF.getText().isEmpty()) { if (nilaiMTF.getText().isEmpty()) { nilaiMTF.setBackground(Color.red); } if (dminTF.getText().isEmpty()) { dminTF.setBackground(Color.red); } JOptionPane.showMessageDialog(null, "Nilai M atau dmin tidak boleh kosong! "); } else { if (!nilaiMTF.getText().isEmpty() && !dminTF.getText().isEmpty()) { if (nilaiMTF.getText().matches("[0-9.]*") || dminTF.getText().matches("[0-9.]*")) { Double nilaiM = Double.parseDouble(nilaiMTF.getText()); Double nilaiD = Double.parseDouble(dminTF.getText()); TableModel tableModel = tableDeteksiOutlier.getModel(); int kolom = tableModel.getColumnCount(); int baris = tableModel.getRowCount(); List<Double> data_nilai = null; String label = ""; Graph_IndexBased g = new Graph_IndexBased(baris); //insert vertex for (int i = 0; i < baris; i++) { data_nilai = new ArrayList<Double>(); for (int j = 0; j < kolom; j++) { if (j == 0) { label = String.valueOf(tableModel.getValueAt(i, j)); } else { data_nilai.add(Double.parseDouble(tableModel.getValueAt(i, j).toString())); } } g.addVertex(label, data_nilai); } //insert edge for (int i = 0; i < baris; i++) { for (int j = i + 1; j < baris; j++) { if (i != j) { g.addEdge(i, j, g.euclideanDistance(i, j)); 130 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 131 } } } hasilDeteksiTextArea.setText(g.displayOutlier(nilaiM, nilaiD, jumlah_baris, tableDeteksiOutlier, path)); prosesButton.setEnabled(false); nilaiMTF.setText(null); dminTF.setText(null); nilaiMTF.requestFocus(); simpanFileButton.setEnabled(true); } } } } public boolean cek_atribut_hapus(String atribut, List<String> hapus_atribut) { boolean cek = false; for (int i = 0; i < hapus_atribut.size(); i++) { if (hapus_atribut.get(i).equals(atribut)) { return cek = true; } } return cek; } public boolean cek_atribut_kolom(String atribut, Vector kolom) { boolean cek = false; for (int i = 0; i < kolom.size(); i++) { if (kolom.get(i).equals(atribut)) { return cek = true; } } return cek; } public void hapusAtribut() { TableModel model = dataPreprocessTable.getModel(); List<String> hapus_seleksi = new ArrayList<String>(); for (int i = 0; i < cb_table.getRowCount(); i++) { if (cb_table.getValueAt(i, 1).equals(true)) { hapus_seleksi.add(cb_table.getValueAt(i, 0).toString()); } } int kolom = model.getColumnCount(); int baris = model.getRowCount(); Vector namaKolom = new Vector(); Vector isiData = new Vector(); for (int k = 0; k < cb_table.getRowCount(); k++) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI if (!cek_atribut_hapus(cb_table.getValueAt(k, 0).toString(), hapus_seleksi)) { namaKolom.addElement(cb_table.getValueAt(k, 0)); } } for (int a = 0; a < baris; a++) { Vector satu_baris = new Vector(); for (int b = 0; b < kolom; b++) { if (cek_atribut_kolom(model.getColumnName(b).toString(), namaKolom)) { satu_baris.addElement(model.getValueAt(a, b)); } } isiData.addElement(satu_baris); } DefaultTableModel model_baru = new DefaultTableModel(isiData, namaKolom); dataPreprocessTable.setModel(model_baru); if (!isiData.isEmpty() && !namaKolom.isEmpty()) { updateCellWidth(dataPreprocessTable); } dataPreprocessTable.setAutoCreateRowSorter(true); barisTextField.setText("" + isiData.size()); atributTextField.setText("" + namaKolom.size()); jumlahBarisDeteksi.setText(" " + isiData.size()); cb_table.removeRow(); if (namaKolom.isEmpty()) { barisTextField.setText(null); atributTextField.setText(null); jumlahBarisDeteksi.setText(null); submitDataButton.setEnabled(false); batalTandaiButton.setEnabled(false); tandaiSemuaButton.setEnabled(false); hapusButton.setEnabled(false); distribusiButton.setEnabled(false); pathTextField.setText(null); } seleksi_atribut.setPilih(false); } public void tandaiSemuaAtribut() { for (int i = 0; i < cb_table.getRowCount(); i++) { cb_table.setValueAt(true, i, 1); } } public void batalTandaiSemuaAtribut() { for (int i = 0; i < cb_table.getRowCount(); i++) { 132 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI cb_table.setValueAt(false, i, 1); } } public void simpanFile() { JFileChooser fileChooser = new JFileChooser(new File("D:/")); 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 extension = fileChooser.getFileFilter().getDescription(); File ff = new File(filename); //buat file output stream if (extension.equals("Microsoft Word (*.doc)")) { ff = new File(filename + ".doc"); } else if (extension.equals("Text Documents (*.txt)")) { ff = new File(filename + ".txt"); } try { file_output_stream = new FileOutputStream(ff); } catch (FileNotFoundException fe) { fe.printStackTrace(); return; } try { String hasil_text_area = hasilDeteksiTextArea.getText(); String[] potong_isi = hasil_text_area.split("\\n"); FileWriter outFile = new FileWriter(ff); PrintWriter out = new PrintWriter(outFile, true); for (int i = 0; i < potong_isi.length; i++) { out.println("" + potong_isi[i].toString()); } file_output_stream.close(); } catch (IOException ie) { JOptionPane.showMessageDialog(this, "Penyimpanan asil Deteksi Outlier Gagal !"); } JOptionPane.showMessageDialog(this, "Hasil Deteksi Outlier Telah Berhasil Disimpan di " + filename); } simpanFileButton.setEnabled(false); } // Variables declaration - do not modify 133 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private javax.swing.JLabel DLabel; private javax.swing.JLabel MLabel; private javax.swing.JTextField atributTextField; private javax.swing.JButton bantuanButton; private javax.swing.JTextField barisTextField; private javax.swing.JButton batalTandaiButton; private javax.swing.JTable dataPreprocessTable; private javax.swing.JPanel deteksiPanel; private javax.swing.JButton distribusiButton; private javax.swing.JTextField dminTF; private javax.swing.JButton fileButton; private javax.swing.JButton hapusButton; private javax.swing.JTextArea hasilDeteksiTextArea; private javax.swing.JLabel hasilLabel; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane5; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JSeparator jSeparator4; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JLabel judulLabel; private javax.swing.JLabel jumlahAtributLabel; private javax.swing.JTextField jumlahBarisDeteksi; private javax.swing.JLabel jumlahDataLabel; private javax.swing.JLabel jumlahLabel; private javax.swing.JButton keluarButton; private javax.swing.JTextField nilaiMTF; private javax.swing.JLabel pathLabel; private javax.swing.JTextField pathTextField; private javax.swing.JButton pilihDBButton; private javax.swing.JPanel preprocessPanel; private javax.swing.JButton prosesButton; private javax.swing.JLabel prosesLabel; private javax.swing.JLabel seleksiAtributLabel; private javax.swing.JTable seleksiTable; private javax.swing.JButton simpanFileButton; private javax.swing.JButton submitDataButton; private javax.swing.JLabel tabel2Label; private javax.swing.JLabel tabelLabel; 134 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 135 private javax.swing.JTable tableDeteksiOutlier; private javax.swing.JButton tandaiSemuaButton; } Listing Program 5.6 Kelas HalamanUtama.java 5.3.7 Implementasi Kelas HalamanDistribusiAtribut Berikut merupakan implementasi dari atribut dan method pada kelas HalamanDistribusi.java yang dibuat sesuai dengan perancangannya. Kelas ini memiiki method tampilAtribut , lihatGrafik dan pilihAtributComboBox berkaitan dengan fungsi lihat grafik distribusi per atribut. public class HalamanDistribusiAtribut extends javax.swing.JFrame { JTable model; private int count = 0; public HalamanDistribusiAtribut(List<String> daftarAtribut, JTable tabel) { initComponents(); setResizable(false); tampilAtribut(daftarAtribut,tabel); } public void tampilAtribut(List<String> daftarAtribut, JTable tabel) { model = tabel; for (int i = 1; i < tabel.getColumnCount(); i++) { atributComboBox.addItem(tabel.getColumnName(i)); } } public void pilihAtributComboBox() { String pilih_combo = atributComboBox.getSelectedItem().toString(); List<String> isiData = new ArrayList<String>(); String[][] data1 = null; String[] nama_kolom = new String[2]; for (int i = 1; i < model.getColumnCount(); i++) { if (pilih_combo.equalsIgnoreCase(model.getColumnName(i).toString())) { nama_kolom[0] = model.getColumnName(i).toString(); nama_kolom[1] = "Jumlah Data"; for (int j = 0; j < model.getRowCount(); j++) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 136 isiData.add(model.getValueAt(j, i).toString()); } HashSet hashSet = new HashSet(isiData); //Creating HashSet which does not allows duplicates isiData.clear(); // Clearing arraylist1 isiData = new ArrayList(hashSet); // Assigning Hashset back with no duplicates to arraylist1 data1 = new String[isiData.size()][2]; System.out.println(" " + isiData.toString()); for (int k = 0; k < isiData.size(); k++) { for (int l = 0; l < model.getRowCount(); l++) { if (isiData.get(k).equalsIgnoreCase(model.getValueAt(l, i).toString())) { setCount(count + 1); } } data1[k][0] = isiData.get(k).toString(); data1[k][1] = String.valueOf(getCount()); setCount(0); } } DefaultTableModel tabel_grafik = new DefaultTableModel(data1, nama_kolom); tabelGrafik.setModel(tabel_grafik); tabelGrafik.setAutoCreateRowSorter(true); } } private void atributComboBoxActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihAtributComboBox(); } public void lihatGrafik() { String data[][]; String jumlah_data[][]; int jumlah[][]; int row = tabelGrafik.getRowCount(); int column = tabelGrafik.getColumnCount(); data = new String[row][column]; jumlah_data = new String[row][column]; jumlah = new int[row][column]; for (int i = 0; i < row; i++) { data[i][0] = tabelGrafik.getValueAt(i, 0).toString(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 137 jumlah_data[i][1] = tabelGrafik.getValueAt(i, 1).toString(); jumlah[i][1] = Integer.parseInt(jumlah_data[i][1]); } DiagramBatang br = new DiagramBatang(); br.tampil(jumlah, data, data); } private void lihatGrafikButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: lihatGrafik(); } private void keluarButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.dispose(); } private javax.swing.JComboBox atributComboBox; private javax.swing.JLabel daftarLabel; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JButton keluarButton; private javax.swing.JButton lihatGrafikButton; private javax.swing.JTable tabelGrafik; private javax.swing.JLabel tabelLabel; public int getCount() { return count; } public void setCount(int count) { this.count = count; } } Listing Program 5.7 Kelas HalamanDistribusiAtribut.java 5.3.8 Implementasi Kelas HalamanPilihDatabase Berikut merupakan implementasi dari atribut dan method pada kelas HalamanPilihDatabase.java yang dibuat sesuai dengan perancangannya. Kelas ini memiliki method pilihDatabase yang PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 138 berkaitan dengan fungsi input data dari tabel basisdata dan bertindak sebagai interface saat pengguna akan melakukan login ke basisdata. public class HalamanPilihDatabase extends javax.swing.JFrame { /** Creates new form HalamanPilihDatabase */ HalamanUtama coba = new HalamanUtama(); public HalamanPilihDatabase() { initComponents(); setResizable(false); usernameTextField.setEnabled(false); passwordField.setEnabled(false); dbTextField.setEnabled(false); URLTextField.setEnabled(false); dbComboBox.setSelectedIndex(-1); } public void pilihDatabase() { if (dbComboBox.getSelectedIndex() == 0) { if (usernameTextField.getText().isEmpty() || passwordField.getText().isEmpty() || URLTextField.getText().isEmpty()) { if (usernameTextField.getText().isEmpty()) { usernameTextField.setBackground(Color.red); } if (passwordField.getText().isEmpty()) { passwordField.setBackground(Color.red); } if (URLTextField.getText().isEmpty()) { URLTextField.setBackground(Color.red); } JOptionPane.showMessageDialog(null, "Username atau Password atau URL tidak boleh kosong! "); } else { String username = usernameTextField.getText(); String password = passwordField.getText(); String url = URLTextField.getText(); DatabaseConnection conn = new DatabaseConnection(); boolean koneksi = conn.isConnectedOracle(url, username, password); if (koneksi == true) { JOptionPane.showMessageDialog(null, "Koneksi Berhasil"); HalamanTampilTabel tabel = new HalamanTampilTabel(conn, dbComboBox.getSelectedItem().toString()); tabel.setVisible(true); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 139 this.dispose(); } else { JOptionPane.showMessageDialog(null, "Username atau password atau URL yang anda masukkan salah"); usernameTextField.setText(""); passwordField.setText(""); URLTextField.setText(""); } } } else if (dbComboBox.getSelectedIndex() == 1) { if (usernameTextField.getText().isEmpty() || passwordField.getText().isEmpty() || dbTextField.getText().isEmpty() || URLTextField.getText().isEmpty()) { if (usernameTextField.getText().isEmpty()) { usernameTextField.setBackground(Color.red); } if (passwordField.getText().isEmpty()) { passwordField.setBackground(Color.red); } if (dbTextField.getText().isEmpty()) { dbTextField.setBackground(Color.red); } if (URLTextField.getText().isEmpty()) { URLTextField.setBackground(Color.red); } JOptionPane.showMessageDialog(null, "Username atau Password atau Database atau URL tidak boleh kosong! "); } else { String username = usernameTextField.getText(); String password = passwordField.getText(); String url = URLTextField.getText(); String database = dbTextField.getText(); DatabaseConnection conn = new DatabaseConnection(); boolean koneksi = conn.isConnectedSQL(url + database, username, password); if (koneksi == true) { JOptionPane.showMessageDialog(null, "Koneksi Berhasil"); HalamanTampilTabel tabel = new HalamanTampilTabel(conn, dbComboBox.getSelectedItem().toString()); tabel.setVisible(true); this.dispose(); } else { JOptionPane.showMessageDialog(null, "Username atau Password atau Database atau URL yang anda masukkan salah"); usernameTextField.setText(""); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 140 passwordField.setText(""); dbTextField.setText(""); URLTextField.setText(""); } } } } private void OKButtonActionPerformed(java.awt.event.ActionEvent evt) { pilihDatabase(); } private void batalButtonActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } private void dbComboBoxActionPerformed(java.awt.event.ActionEvent evt) { if (dbComboBox.getSelectedIndex() == 0) { usernameTextField.setEnabled(true); passwordField.setEnabled(true); URLTextField.setEnabled(true); URLTextField.setText("jdbc:oracle:thin:@localhost:1521:XE"); dbTextField.setEnabled(false); dbTextField.setText(null); } else if (dbComboBox.getSelectedIndex() == 1) { usernameTextField.setEnabled(true); passwordField.setEnabled(true); dbTextField.setEnabled(true); URLTextField.setEnabled(true); URLTextField.setText("jdbc:mysql://localhost:3306/"); } else { dbTextField.setText(null); } } // Variables declaration - do not modify private javax.swing.JButton OKButton; private javax.swing.JLabel URLLabel; private javax.swing.JTextField URLTextField; private javax.swing.JButton batalButton; private javax.swing.JLabel databasePilihLabel; private javax.swing.JComboBox dbComboBox; private javax.swing.JLabel dbLabel; private javax.swing.JTextField dbTextField; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 141 private javax.swing.JPasswordField passwordField; private javax.swing.JLabel passwordLabel; private javax.swing.JLabel pilihKoneksiLabel; private javax.swing.JLabel usernameLabel; private javax.swing.JTextField usernameTextField; } Listing Program 5.8 Kelas HalamanPilihDatabase.java 5.3.9 Implementasi Kelas HalamanTampilTabel Berikut merupakan implementasi dari atribut dan method pada kelas HalamanTampilTabel.java yang dibuat sesuai dengan perancangannya. Kelas ini memiliki method tampilTabel dan pilihTabel yang berkaitan dengan fungsi input data dari tabel basisdata karena bertindak sebagai interface untuk menampilkan daftar tabel yang terdapat pada basisdata yang dipilih pengguna. public class HalamanTampilTabel extends javax.swing.JFrame { DatabaseConnection conn; public HalamanTampilTabel(DatabaseConnection conn, String database) { initComponents(); setResizable(false); tampilTabel(conn, database); } public void tampilTabel(DatabaseConnection conn, String database) { this.conn = conn; try { DatabaseController controller = new DatabaseController(); ResultSet rs; if (database.equals("Oracle")) { rs = controller.tampilTableOracle(conn.getConnection()); while (rs.next()) { daftarTableComboBox.addItem(rs.getString(1)); } } else if (database.equals("MySQL")) { rs = controller.tampilTableMySql(conn.getConnection()); while (rs.next()) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI daftarTableComboBox.addItem(rs.getString(1)); } } } catch (SQLException ex) { Logger.getLogger(HalamanTampilTabel.class.getName()).log(Level.SEVE RE, null, ex); } } public void pilihTabel() { java.awt.Window window[] = java.awt.Window.getWindows(); for (int i = 0; i < window.length; i++) { window[i].dispose(); window[i] = null; } HalamanUtama coba = new HalamanUtama(conn, daftarTableComboBox.getSelectedItem().toString()); coba.setVisible(true); jDesktopPane1.getMaximumSize(); setExtendedState(MAXIMIZED_BOTH); } private void pilihTabelButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihTabel(); } private void batalButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: java.awt.Window window[] = java.awt.Window.getWindows(); for (int i = 0; i < window.length; i++) { window[i].dispose(); window[i] = null; } HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); jDesktopPane1.getMaximumSize(); setExtendedState(MAXIMIZED_BOTH); } // Variables declaration - do not modify private javax.swing.JButton batalButton; private javax.swing.JLabel daftarLabel; private javax.swing.JComboBox daftarTableComboBox; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1; 142 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 143 private javax.swing.JButton pilihTabelButton; } Listing Program 5.9 Kelas HalamanTampilTabel.java 5.4 Implementasi Struktur Data Sesuai dengan yang telah dibuat dalam bab perancangan, implementasi struktur data yang digunakan adalah konsep graf dan matriks dua dimensi dan telah diimplementasikan pada kelas Vertex_NaiveNL.java dan Graph_NaiveNL.java . Berikut ini merupakan implementasi struktur data yang terdapat pada program. 5.4.1 Implementasi Kelas Vertex_NaiveNL.java Kelas Vertex_NaiveNL.java merupakan kelas yang digunakan untuk menyimpan suatu objek data dalam bentuk vertex dimana sebuah vertex memiliki atribut labelData dan atribut nilai dalam bentuk list. Atribut outlier bertipe boolean digunakan untuk memberi nilai boolean pada suatu vertex apakah vertex tersebut outlier atau tidak. public final class Vertex_NaiveNL { String labelData; List<Double> nilai; boolean outlier = false; public Vertex_NaiveNL(String label, List<Double> nilai) { setNilai(nilai); setLabelData(label); setOutlier(outlier); } public String getLabelData() { return labelData; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 144 } public void setLabelData(String labelData) { this.labelData = labelData; } public boolean isOutlier() { return outlier; } public void setOutlier(boolean outlier) { this.outlier = outlier; } public List<Double> getNilai() { return nilai; } public void setNilai(List<Double> nilai) { this.nilai = nilai; } } Listing Program 5.10 Kelas Vertex_NaiveNL.java 5.4.2 Implementasi Kelas Graph_ NaiveNL.java Implementasi matriks dua dimensi digunakan untuk menyatakan edge atau jarak antar objek data. Kelas Graph_NaiveNL memiliki atribut Vertex_NaiveNL[] vertex, int size = 0 untuk menentukan ukuran matriks, dan double[][] matrix.. Implementasi ini terdapat pada konstruktor pada kelas Graph_NaiveNL.java. Deklarasi matrix[i][j] = -1 dan matrix[j][i] = -1 menandakan jarak satu objek data dengan objek data lain akan diisi dengan nilai -1 terlebih dahulu sebelum diisi dengan nilai edge yang diperoleh dari perhitungan dengan rumus jarak. Sedangkan deklarasi matrix[i][i] = 0 menyatakan jarak sebuah objek data dengan dirinya sendiri. public Graph_ NaiveNL (int a) { matrix = new double[a][a]; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 145 vertex = new Vertex_NaiveNL[a]; for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { matrix[i][j] = -1; matrix[j][i] = -1; } matrix[i][i] = 0; } } Listing Program 5.11 Implementasi Pembentukan Matriks Dua Dimensi Selanjutnya adalah implementasi untuk menambahkan vertex pada graf yang ditunjukkan pada method addVertex. Deklarasi vertex[size++] = new Vertex_NaiveNL(label, nilai) menyatakan pembentukan vertex baru, dimana sebuah vertex berisi label dan nilai. public void addVertex(String label, List<Double> nilai) { vertex[size++] = new Vertex_NaiveNL(label, nilai); } Listing Program 5.12 Method addVertex Implementasi penambahan edge terdapat pada metnod addEdge. Deklarasi matrix[asal][tujuan] = matrix[tujuan][asal] = jarak digunakan untuk mengisi edge pada matriks dua dimensi dengan nilai jarak. Sehingga isi edge dari vertex asal ke tujuan dan sebaliknya bernilai sesuai dengan nilai pada atribut jarak. public void addEdge(int asal, int tujuan, double jarak) { matrix[asal][tujuan] = matrix[tujuan][asal] = jarak; } Listing Program 5.13 Method addEdge PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 146 Implementasi berikutnya adalah perhitungan jarak antar vertex dengan rumus Euclidean Distance yang terdapat pada method euclideanDistance seperti yang tertera pada listing 5.14. public double euclideanDistance(int asal, int tujuan) { List<Double> awal = new ArrayList<Double>(); List<Double> akhir = new ArrayList<Double>(); awal = vertex[asal].getNilai(); akhir = vertex[tujuan].getNilai(); double total = 0; for (int i = 0; i < awal.size(); i++) { total = total + (awal.get(i) - akhir.get(i)) * (awal.get(i) - akhir.get(i)); } return Math.sqrt(total); } Listing Program 5.14 Method euclideanDistance PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB VI PENGUJIAN DAN ANALISA HASIL PENGUJIAN 6.1 Fase Implementasi Pengujian Pada bab ini akan dibahas mengenai tahap pengembangan sistem pendeteksi outlier menggunakan algoritma Naïve Nested Loop yaitu pengujian sistem. Berikut merupakan tahap-tahap yang dilakukan dalam pengujian sistem : 6.1.1 Rencana Pengujian Pengujian terhadap sistem ini meliputi tiga metode pengujian, yaitu pengujian Blackbox, pengujian efek perubahan nilai atribut penambangan data, dan pengujian review dan validitas oleh pengguna. Pengujian blackbox adalah metode pengujian perangkat lunak yang tes fungsionalitas dari aplikasinya tidak memperhatikan struktur internal dari perangkat lunak yang akan diuji (C.Simanjuntak, dkk, 2010). Pengetahuan khusus dari kode aplikasi / struktur internal dan pengetahuan pemrograman pada umumnya tidak diperlukan dalam pengujian ini. Pengujian Blackbox dilakukan untuk mengetahui apakah sebuah perangkat lunak sudah berfungsi dengan benar. Pada pengujian ini, semua fungsi pada sistem akan dijalankan dan dilihat kebenaran hasil keluarannya apakah sesuai dengan yang diharapkan. Pengujian review dan validitas dilakukan oleh pengguna, dalam hal ini Kaprodi (Ketua Program Studi) Teknik Informatika Universitas Sanata Dharma dengan cara mengkonfirmasi kebenaran hasil deteksi outlier yang diperoleh sistem. Untuk pengujian efek perubahan nilai atribut penambangan data dilakukan dengan cara mengubah nilai paramater yang dimiliki algoritma Naïve Nested Loop, yaitu nilai M dan dmin . 147 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 148 Berikut ini merupakan tabel rencana pengujian blackbox yang akan dilakukan pada masing-masing kelas uji : Tabel 6.1 Tabel Rencana Pengujian Kelas Uji DatabaseConnection Halaman Utama HalamanPilihDatabase HalamanTampilTabel HalamanDistribusiAtribut Halaman MissingValues Butir Uji Jenis Pengujian Cek koneksi ke dalam Blackbox basisdata (dengan basisdata Oracle dan mySQL) Menampilkan data file Blackbox berekstensi .xls Menampilkan data file Blackbox berekstensi .csv Menampilkan data dari tabel Blackbox dalam basisdata Menjalankan fungsi simpan Blackbox hasil outlier Melakukan seleksi atribut Blackbox Menampilkan hasil deteksi outlier Menampilkan Form PilihDatabase untuk login ke basisdata sesuai pilihan pengguna Menampilkan daftar tabel dari basisdata sesuai pilihan pengguna Menampilkan tabel daftar per atribut beserta jumlah datanya Menampilkan grafik distribusi per atribut Menampilkan pesan peringatan saat data yang berekstensi .xls memiliki baris kosong dan/atau mengandung karakter bukan angka Blackbox Blackbox Blackbox Blackbox Blackbox Blackbox PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 149 6.1.1.1 Hasil Pengujian Blackbox 6.1.1.1.1 Pengujian Input Data Berikut merupakan data pengujian untuk input data pada kelas HalamanUtama. Tabel 6.2 Tabel Pengujian Input Data Kasus dan Hasil Uji (Data Benar) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan Input data dari file Data tertampil ke Data tertampil ke Diterima berekstensi .xls dalam tabel dalam tabel Input data dari file Data tertampil ke Data tertampil ke Diterima berekstensi .csv dalam tabel dalam tabel Input data dari Data tertampil ke Data tertampil ke Diterima tabel dalam dalam tabel dalam tabel basisdata Kasus dan Hasil Uji (Data Salah) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan Input data dari file berekstensi .xls (terdapat baris kosong) Menampilkan pesan Pesan peringatan bahwa peringatan data yang salah berhasil (terdapat baris ditampilkan kosong). Diterima Input data dari file berekstensi .xls (terdapat label data kosong) Menampilkan pesan Pesan peringatan bahwa peringatan data yang salah berhasil (terdapat label ditampilkan kosong). Diterima Input data dari file berekstensi .xls (data selain label berupa huruf) Menampilkan pesan peringatan bahwa data yang dimasukan salah (berformat bukan angka). Diterima Pesan peringatan berhasil ditampilkan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Input data dari file berekstensi .xls (data mengandung sembarang karakter) Menampilkan pesan peringatan bahwa data yang dimasukan salah (berformat bukan angka). Pesan peringatan berhasil ditampilkan Diterima Input data dari file berekstensi .csv (terdapat baris kosong atau mengandung karakter bukan angka) Menampilkan peringatan data yang (terdapat kosong mengandung karakter angka). Pesan peringatan berhasil ditampilkan Diterima Input data dari tabel dalam basisdata (terdapat label data kosong) Menampilkan pesan peringatan bahwa data yang dimasukan salah. (terdapat label data kosong) Pesan peringatan berhasil ditampilkan Diterima Input data dari tabel dalam basisdata (terdapat data kosong dan mengandung karakter bukan angka) Menampilkan pesan peringatan bahwa data yang dimasukan salah. (terdapat data kosong dan mengandung karakter bukan angka) Pesan peringatan berhasil ditampilkan Diterima pesan bahwa salah baris atau 150 bukan 6.1.1.1.2 Pengujian Koneksi Database Berikut merupakan data pengujian untuk input data pada Halaman Pilih Database yang pengecekan kebenarannya ditangani oleh Kelas Database Connection. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 151 Tabel 6.3 Tabel Pengujian Koneksi Database Kasus dan Hasil Uji (Data Benar) Aktifitas dilakukan yang Keluaran yang Diharapkan Input username, password, nama database,url benar (mySQL) Hasil Didapat yang Kesimpulan Menampilkan Pesan berhasil Diterima pesan pengguna ditampilkan berhasil melakukan koneksi ke basisdata Input Menampilkan username,password, pesan pengguna berhasil melakukan url benar (Oracle) koneksi ke basisdata Pesan berhasil Diterima ditampilkan Kasus dan Hasil Uji (Data Salah) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan Input username, password, nama database, dan url ada yang kosong (mySQL) Menampilkan pesan peringatan bahwa username atau password atau database atau url tidak boleh kosong Pesan berhasil Diterima ditampilkan Input username, password, dan url ada yang ada yang kosong (Oracle) Menampilkan pesan peringatan bahwa username atau password atau url tidak boleh kosong Pesan berhasil Diterima ditampilkan Input username, password, nama database, dan url ada yang salah (mySQL) Menampilkan pesan peringatan bahwa username atau password atau database atau url salah Pesan berhasil Diterima ditampilkan Input username, Menampilkan password, dan url pesan peringatan Pesan berhasil Diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ada yang ada yang bahwa username atau password atau salah (Oracle) url salah 152 ditampilkan 6.1.1.1.3 Pengujian Seleksi Atribut Berikut merupakan data pengujian untuk fungsi seleksi atribut pada kelas HalamanUtama. Tabel 6.4 Tabel Pengujian Seleksi Atribut Kasus dan Hasil Uji (Data Benar) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan Memilih satu atau Atribut beserta data lebih atribut yang dalam tabel yang akan dihilangkan dipilih terhapus lalu menekan tombol „Hapus Atribut‟ Data sesuai atribut Diterima yang terpilih berhasil terhapus dari tabel Menekan tombol Semua atribut dalam tabel „Tandai Semua‟ „Seleksi Atribut‟ akan ditandai untuk dihapus Semua atribut Diterima dalam tabel berhasil ditandai Menekan „Batal Semua‟ Semua atribut Diterima dalam tabel tidak ditandai tombol Semua atribut Tandai dalam tabel „Seleksi Atribut‟ tidak ditandai Kasus dan Hasil Uji (Data Salah) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 153 6.1.1.1.4 Pengujian Deteksi Outlier Berikut merupakan data pengujian untuk fungsi deteksi outlier pada kelas HalamanUtama. Tabel 6.5 Tabel Pengujian Deteksi Outlier Kasus dan Hasil Uji (Data Benar) Aktifitas dilakukan yang Keluaran yang Diharapkan Melakukan proses deteksi outlier menggunakan algoritma Naïve Nested Loop Hasil deteksi outlier beserta atribut berhasil ditampilkan Hasil Didapat yang Kesimpulan Hasil deteksi Diterima outlier beserta atribut berhasil ditampilkan Kasus dan Hasil Uji (Data Salah) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan Input nilai Pesan peringatan Pesan peringatan Diterima parameter M atau bahwa nilai tertampil dmin ada yang parameter M atau dmin ada yang kosong kosong Input nilai parameter M atau dmin bukan angka atau mengandung karakter Pesan peringatan Pesan peringatan Diterima bahwa nilai tertampil parameter M atau dmin bukan angka atau mengandung karakter 6.1.1.1.5 Pengujian Lihat Grafik Distribusi Atribut Berikut merupakan data pengujian untuk fungsi lihat grafik distribusi setiap atribut pada kelas HalamanUtama. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 154 Tabel 6.6 Tabel Pengujian Lihat Grafik Distribusi Atribut Kasus dan Hasil Uji (Data Benar) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan Memilih atribut nama Detail jumlah data dari atribut tertampil ke dalam tabel Detail jumlah data Diterima dari atribut berhasil tertampil ke dalam tabel Menekan tombol Detail jumlah data tertampil dalam „Lihat Grafik‟ bentuk diagram batang Detail jumlah data Diterima berhasil ertampil dalam bentuk diagram batang Kasus dan Hasil Uji (Data Salah) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan 6.1.1.1.6 Pengujian Simpan Hasil Deteksi Outlier Berikut merupakan data pengujian untuk fungsi simpan hasil deteksi outlier pada kelas HalamanUtama. Tabel 6.7 Tabel Pengujian Simpan Hasil Deteksi Outlier Kasus dan Hasil Uji (Data Benar) Aktifitas dilakukan yang Keluaran yang Diharapkan Menekan tombol File tersimpan „Simpan Hasil sesuai dengan nama dan lokasi Outlier‟ (.doc) penyimpanan yang ditentukan pengguna dan berformat .doc Hasil Didapat yang Kesimpulan File berformat Diterima .doc berhasil disimpan dengan nama dan lokasi yang ditentukan pengguna PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Menekan tombol File tersimpan „Simpan Hasil sesuai dengan nama dan lokasi Outlier‟ (.txt) penyimpanan yang ditentukan pengguna dan berformat .txt 155 File berformat .txt Diterima berhasil disimpan dengan nama dan lokasi yang ditentukan pengguna Kasus dan Hasil Uji (Data Salah) Aktifitas dilakukan yang Keluaran yang Diharapkan Hasil Didapat yang Kesimpulan 6.1.1.1.7 Kesimpulan Hasil Pengujian Blackbox Berdasarkan hasil pengujian terhadap kasus tertentu yang telah disebutkan di atas, dapat ditarik kesimpulan bahwa sistem pendeteksi outlier ini dapat menangani error handling ketika fungsi yang dijalankan salah atau tidak sesuai aturan pakainya. Sedangkan secara fungsional sistem dapat berjalan dengan baik dan menghasilkan keluaran yang sesuai dengan yang diharapkan. 6.1.1.2 Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data Pengujian terhadap Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop dapat dilakukan dengan mengubah nilai input parameter M dan dmin. Berikut adalah tabel hasil deteksi outlier yang diperoleh dari eksekusi data akademik mahasiswa program studi Teknik Informatika tahun angkatan 2007 dan 2008 dengan data sebanyak 126 buah menggunakan nilai input parameter M dan dmin yang bervariasi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 156 6.1.1.2.1 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Tabel 6.8 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M dan dmin yang berubah-ubah M=1 M=2 M=3 M=4 M=5 dmin = 1 27 32 36 42 46 dmin = 2 1 2 2 2 2 dmin = 3 0 0 0 0 0 dmin = 4 0 0 0 0 0 dmin dmin Jumlah Outlier Jumlah Outlier Gambar 6.1a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M = 1 dan dmin berubah-ubah Gambar 6.1b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M = 2 dan dmin berubah-ubah M M Jumlah Outlier Jumlah Outlier Gambar 6.2a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M berubah-ubah dan dmin = 1 Gambar 6.2b Grafik Hasil Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Masuk Semester 1 dengan Nilai M berubah-ubah dan dmin 2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 157 6.1.1.2.2 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Prestasi Tabel 6.9 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan Nilai M dan dmin yang berubah-ubah M=1 M=2 M=3 M=4 M=5 dmin = 1 0 1 1 1 1 dmin = 2 0 0 0 0 0 dmin = 3 0 0 0 0 0 dmin = 4 0 0 0 0 0 dmin dmin Jumlah Outlier Jumlah Outlier Gambar 6.3a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M = 2 dan dmin berubah-ubah Gambar 6.3b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M = 3 dan dmin berubah-ubah M M Jumlah Outlier Jumlah Outlier Gambar 6.4a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin = 1 Gambar 6.4b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin = 2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 158 6.1.1.2.3 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Tabel 6.10 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan nilai M dan dmin yang berubah-ubah M=1 M=2 M=3 M=4 M=5 dmin = 1 0 0 1 1 2 dmin = 2 0 0 0 0 0 dmin = 3 0 0 0 0 0 dmin = 4 0 0 0 0 0 dmin dmin Jumlah Outlier Jumlah Outlier Gambar 6.5a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M = 4 dan dmin berubah-ubah Gambar 6.5b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M = 5 dan dmin berubah-ubah M M Jumlah Outlier Jumlah Outlier Gambar 6.6a Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin = 1 Gambar 6.6b Grafik Jumlah Outlier Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai M berubah-ubah dan dmin = 2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 159 6.1.1.2.4 Kesimpulan Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data Dari hasil percobaan pengubahan nilai M dan dmin yang tertera pada tabel dan grafik di atas dapat disimpulkan bahwa : 1. Jika nilai parameter M tetap dan dmin bertambah maka jumlah outlier yang didapatkan akan tetap atau semakin sedikit seperti terlihat pada gambar grafik 6.1a-b , grafik 6.3a-b, grafik 6.5a-b. Hal ini disebabkan karena semakin luas jangkauan dmin sedangkan jumlah M tetap membuat data semakin mudah menemukan tetangganya sehingga makin kecil kemungkinan data dianggap sebagai outlier. 2. Jika nilai parameter M bertambah dan dmin tetap maka jumlah outlier yang didapatkan akan akan tetap atau semakin banyak seperti terlihat pada gambar grafik grafik 6.2a-b , grafik 6.4a-b, grafik 6.6a-b. Hal ini disebabkan karena semakin banyak jumlah tetangga yang harus dimiliki oleh sebuah data pada jangkauan yang sama sehingga membuat data sulit menemukan jumlah tetangga yang semakin banyak tersebut dan makin besar kemungkinan data dianggap sebagai outlier. 6.1.1.3 Hasil Pengujian Validitas dan Review oleh Pengguna 6.1.1.3.1 Perbandingan Perhitungan Manual dan Hasil Sistem Dataset yang digunakan adalah data akademik mahasiswa program studi Teknik Informatika tahun angkatan 2007 yang diterima melalui jalur tes tertulis. Atribut yang akan digunakan terdiri dari ips1, ips2,ips3, ips4, nil11, nil12, nil13, nil14, nil15. Data akademik tersebut akan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 160 diproses dan dihitung secara manual menggunakan Microsoft Excel untuk ditemukan hasil outlier-nya. Hasil perhitungan secara manual menggunakan algoritma Naïve Nested Loop akan dibandingkan dengan hasil deteksi outlier yang diperoleh Sistem Pendeteksi Outlier Menggunakan Algoritma Naive Nested Loop. Berikut merupakan tabel perbandingan hasil deteksi outlier dari data akademik mahasiswa program studi Teknik Informatika tahun angkatan 2007 yang diterima melalui jalur tes tertulis menggunakan perhitungan manual dan perhitungan sistem : Tabel 6.11 Tabel Perbandingan Hasil Outlier Mahasiswa Program Studi Teknik Informatika Angkatan 2007 Jalur Tes Tertulis Input Parameter Perhitungan Semester Hasil Outlier Hitung Manual Sistem No.Urut : 2,8,10 No.Urut : 2,8,10 No.Urut : 2,5,8,10 No.Urut : 2,8,10 No.Urut : 2,8,10 No.Urut : 2,8,10 No.Urut : 2,5,8,10 No.Urut : 2,8,10 (M, dmin) M = 4, dmin = 2 1 2 3 4 Tabel 6.12 Tabel Nilai per Atribut Hasil Outlier Mahasiswa Program Studi Teknik Informatika Angkatan 2007 Jalur Tes Tertulis Nilai per Atribut dari Hasil Outlier No.Urut Mahasiswa ips1 ips2 ips3 ips4 nil1 nil2 nil3 nil4 nil5 2 1.72 1.65 1.53 1.68 1.20 0.80 3.20 1.20 0.40 5 2.94 2.59 1.55 2.35 2.40 1.60 2.40 1.20 2.80 8 1.44 2.42 2.53 1.96 4.00 2.00 3.60 2.40 2.80 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10 1.72 2.65 2.43 2.24 2.80 2.40 3.20 3.20 161 0.80 Dari hasil perbandingan di atas dapat dilihat bahwa pada data mahasiswa program studi Teknik Informatika angkatan 2007 yang masuk melalui jalur tes tertulis dengan pendeteksian outlier yang dilakukan per semester menghasilkan hasil outlier dari perhitungan manual dan sistem yang tepat sama. Maka, dapat disimpulkan bahwa sistem dapat dengan benar menghasilkan deteksi outlier yang sesuai dengan perhitungan manualnya. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI162 6.1.1.3. 2 Hasil Deteksi dari Sistem untuk Pengujian Review dan Validitas oleh Pengguna Untuk meyakinkan bahwa hasil deteksi outlier adalah benar, maka hasil dari sistem perlu dianalisis oleh Kaprodi agar didapatkan kepastian apakah dari sekumpulan data akademik tersebut diperoleh mahasiswa yang dinyatakan sebagai outlier karena memiliki nilai yang berbeda dengan kebanyakan mahasiswa lain. Berikut merupakan hasil outlier yang diperoleh sistem untuk tiga macam dataset yang digunakan pada pengujian review dan validitas : 1. Hasil outlier untuk data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 jalur tes tertulis (72 mahasiswa) yang diperoleh dari semester 1 sampai 4 menggunakan atribut ips1, ips2, ips3, ips4, nil1, nil2, nil3, nil4, nil5 dengan nilai M = 5 dan dmin = 2. Tabel 6.13 Tabel Hasil Outlier untuk Data Mahasiswa Program Studi Teknik Informatika angkatan 2007 dan 2008 Jalur Tes Tertulis Semester No.Urut ips1 ips2 ips3 ips4 nil1 nil2 nil3 nil4 nil5 Mahasiswa 1 2 1.72 1.20 0.80 3.20 1.20 0.40 8 1.44 4.00 2.00 3.60 2.40 2.80 2 2 1.65 1.20 0.80 3.20 1.20 0.40 52 1.28 2.40 3.20 3.60 2.80 3.20 54 1.04 3.20 2.00 3.60 3.20 1.60 3 2 1.53 1.20 0.80 3.20 1.20 0.40 30 0.59 2.40 2.40 2.80 1.20 3.60 54 0.19 3.20 2.00 3.60 3.20 1.60 4 2 1.68 1.20 0.80 3.20 1.20 0.40 16 1.07 2.40 1.60 2.80 3.60 2.80 27 0.05 2.80 2.40 2.40 2.00 2.00 47 0.00 2.80 2.00 1.20 1.60 1.60 48 0.00 2.80 1.60 2.00 2.40 1.20 52 0.82 2.40 3.20 3.60 2.80 3.20 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI163 2. Hasil outlier untuk data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 jalur prestasi (54 Mahasiswa) yang diperoleh dari semester 1 sampai 4 menggunakan atribut ips1, ips2, ips3, ips4, final dengan nilai M= 5 dan dmin = 1. Tabel 6.14 Tabel Hasil Outlier untuk Data Mahasiswa Program Studi Teknik Informatika angkatan 2007 dan 2008 Jalur Prestasi Semester 1 2 3 4 No.Urut Mahasiswa 76 71 124 71 88 ips1 ips2 ips3 ips4 Final 0.85 - 0.32 0.44 - 0.69 - 0.94 2.85 2.72 2.90 2.72 2.89 3. Hasil outlier untuk data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 (126 mahasiswa) yang diperoleh dari semester 1 sampai 4 menggunakan atribut ips1,ips2,ips3,ips4, dan nilai final dengan nilai M = 5 dan dmin = 1. Tabel 6.15 Tabel Hasil Outlier untuk Data Mahasiswa Program Studi Teknik Informatika angkatan 2007 dan 2008 Jalur Tes Tertulis dan Prestasi Semester No. Urut Mahasiswa 1 2 76 2 71 2 124 3 2 ips1 ips2 ips3 ips4 Final Jalur Tes 1.72 0.85 - 0.32 1.65 0.44 - 1.53 - 1.12 2.85 2.72 1.12 2.90 1.12 Tes Prestasi Prestasi Tes Prestasi Tes PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI164 71 30 54 2 47 48 4 - - 0.69 0.59 0.19 - 1.68 0.00 0.00 2.72 2.56 2.56 1.12 2.04 2.00 Prestasi Tes Tes Tes Tes Tes 6.1.1.3.3 Kesimpulan Hasil Pengujian Review dan Validitas oleh Pengguna Berdasarkan hasil yang diperoleh sistem dengan menggunakan tiga jenis masukan data di atas dan berdasarkan hasil analisa menurut pengguna dalam hal ini Kaprodi Teknik Informatika, dapat disimpulkan bahwa : 1. Pada data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 jalur tes tertulis, hasil outlier yang diperoleh sistem adalah sebagai berikut : a. Hasil outlier perhitungan semester 1, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 2 dan 8. b. Hasil outlier perhitungan semester 2, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 2,52, dan 54. c. Hasil outlier perhitungan semester 3, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 2,30, dan 54. d. Hasil outlier perhitungan semester 4, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 2, 16, 27, 47, 48, dan 52 Hal serupa disampaikan pula oleh pengguna yang menyatakan bahwa mahasiswa dengan nomor urut 2 dan 8 pada perhitungan semester 1 merupakan outlier karena pada kenyataannya mahasiswa PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI165 dengan nomor urut 2 memiliki nilai indeks prestasi dan nilai tes masuk yang lebih rendah dibandingkan dengan mahasiswa lain. Sedangkan mahasiswa dengan nomor urut 8 memiliki nilai indeks prestasi yang lebih rendah dan nilai tes masuk yang jauh lebih tinggi dibanding mahasiswa lain. Pada perhitungan semester 2, pengguna menyatakan bahwa mahasiswa dengan nomor urut 2, 52, dan 54 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 52 dan 54 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. Sementara itu, mahasiswa dengan nomor urut 2 masih memiliki nilai indeks prestasi dan nilai tes masuk yang rendah. Pada perhitungan semester 3, pengguna menyatakan bahwa mahasiswa dengan nomor urut 2, 30, dan 52 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 2, 30, dan 52 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. Pada perhitungan semester 4, pengguna menyatakan bahwa mahasiswa dengan nomor urut 2, 16, 27, 47, 48, dan 52 adalah outlier, hal ini dikarenakan keenam mahasiswa tersebut memiliki nilai indeks prestasi yang lebih rendah dibandingkan dengan mahasiswa lain. 2. Pada data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 jalur prestasi, hasil outlier yang diperoleh sistem adalah sebagai berikut : a. Hasil outlier perhitungan semester 1, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 76. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI166 b. Hasil outlier perhitungan semester 2, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 71 dan 124. c. Hasil outlier perhitungan semester 3, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 71. e. Hasil outlier perhitungan semester 4, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 88. Hal serupa disampaikan pula oleh pengguna yang menyatakan bahwa mahasiswa dengan nomor urut 76 pada perhitungan semester 1 merupakan outlier karena pada kenyataannya mahasiswa dengan nomor urut 76 memiliki nilai indeks prestasi yang lebih rendah dibandingkan dengan mahasiswa lain. Pada perhitungan semester 2, pengguna menyatakan bahwa mahasiswa dengan nomor urut 71 dan 124 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 71 dan 124 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. Pada perhitungan semester 3, pengguna menyatakan bahwa mahasiswa dengan nomor urut 71 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 71 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. Pada perhitungan semester 4, pengguna menyatakan bahwa mahasiswa dengan nomor urut 88 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 88 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI167 3. Pada data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008, hasil outlier yang diperoleh sistem adalah sebagai berikut : a. Hasil outlier perhitungan semester 1, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 2 dan 76. b. Hasil outlier perhitungan semester 2, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 71, 2 dan 124. c. Hasil outlier perhitungan semester 3, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 2, 71, 30, dan 54. d. Hasil outlier perhitungan semester 4, mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 2, 47, dan 48. Hal serupa disampaikan pula oleh pengguna yang menyatakan bahwa mahasiswa dengan nomor urut 2 dan 76 pada perhitungan semester 1 merupakan outlier karena pada kenyataannya mahasiswa dengan nomor urut 2 dan 76 memiliki nilai indeks prestasi yang lebih rendah dibandingkan dengan mahasiswa lain. Pada perhitungan semester 2, pengguna menyatakan bahwa mahasiswa dengan nomor urut 71, 2, dan 124 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 2, 71 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI168 dan 124 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. Pada perhitungan semester 3, pengguna menyatakan bahwa mahasiswa dengan nomor urut 2, 71, 30, 54 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 2, 71, 30, 54 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. Pada perhitungan semester 4, pengguna juga menyatakan bahwa mahasiswa dengan nomor urut 2, 47, dan 48 adalah outlier, hal ini dikarenakan mahasiswa dengan nomor urut 2, 47, dan 48 memiliki nilai indeks prestasi yang lebih rendah dibanding mahasiswa lain. 6.2 Kelebihan dan Kekurangan Sistem Sistem pendeteksi outlier yang dibangun ini memiliki kelebihan dan kekurangan, berikut merupakan kelebihan dan kekurangan sistem : 6.2.1 Kelebihan Sistem Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop yang dibangun ini memiliki kelebihan : 1. Sistem mampu menerima masukan data berupa file .xls , .csv, atau data dari tabel basisdata (Oracle atau mySQL) 2. Sistem mampu menyimpan hasil deteksi outlier ke dalam file berekstensi .doc dan .txt. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI169 3. Sistem mampu melakukan seleksi atribut sebelum pengguna melakukan deteksi outlier terhadap data yang dimasukkan. 6.2.2 Kekurangan Sistem Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop yang dibangun ini memiliki kekurangan : 1. Sistem tidak dapat menangani error handling ketika data berekstensi .csv mengandung karakter bukan angka dan ketika baris dalam file tersebut kosong 2. Sistem tidak dapat melakukan seleksi baris pada data yang berasal dari tabel dalam basisdata maupun data berekstensi .xls dan .csv 3. Sistem tidak mampu menerima masukan data berupa file berekstensi .arff, .dat, dan lain-lain atau dengan kata lain sistem hanya bisa menerima masukan data dengan ekstensi tertentu. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB VII KESIMPULAN DAN SARAN 7.1 Kesimpulan Kesimpulan yang dapat diperoleh sebagai hasil dari penyelesaian tugas akhir ini adalah: . 1. Sistem Pendeteksi Outlier Menggunakan Algoritma Naïve Nested Loop telah berhasil diimplementasikan menjadi aplikasi yang dapat digunakan sebagai alat bantu pencarian outlier dalam sekumpulan data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma, Yogyakarta angkatan 2007 dan 2008. 2. Algoritma Naïve Nested Loop terbukti dapat menemukan mahasiswa dengan kalkulasi nilai yang berbeda dari mahasiswa lain sehingga mahasiswa tersebut dinyatakan sebagai outlier. 3. Penentuan nilai parameter pada algoritma Naïve Nested Loop yaitu nilai M dan dmin berpengaruh terhadap jumlah hasil outlier yang dihasilkan. 4. Hasil perhitungan manual dan sistem menghasilkan hasil deteksi outlier dengan hasil yang sama. 5. Satu atribut yang bernilai rendah atau tinggi sekali dibanding nilai atribut lain pada satu objek data, dapat memunculkan kemungkinan sebuah data dinyatakan sebagai outlier. 170 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 171 6. Berdasarkan pengujian review dan validitas oleh Kaprodi Teknik Informatika dapat disimpulkan bahwa hasil deteksi outlier yang diperoleh sistem layak dinyatakan sebagai outlier. 7.2 Saran Berdasarkan hasil analisa dan pengujian pada tugas akhir ini, penulis memberikan saran untuk perbaikan dalam pengembangan penelitian dan sistem secara lebih lanjut antara lain : 1. Pengujian review dan validitas sangat penting dilakukan setelah pengguna melakukan deteksi outlier dengan sistem agar diperoleh hasil outlier yang benar-benar valid. Pengujian tersebut dilakukan oleh pengguna dalam hal ini orang yang ahli dan mengerti tentang data tersebut. 2. Saat ini sistem hanya bisa menerima masukan data dari file yang berekstensi .xls, .csv, dan data yang berasal dari tabel pada basisdata sehingga format masukan data terbatas. Untuk selanjutnya, sistem ini dapat dilengkapi dengan fungsi tambahan agar dapat menerima data dengan masukan format lain seperti .arff, .dat, dan lain-lain. 3. Sistem hanya dapat melakukan seleksi atribut berdasarkan nama atribut yang dipilih oleh pengguna. Sistem ini seharusnya dapat melakukan seleksi baris pada semua jenis data masukan sehingga pengguna dapat lebih spesifik memilih baris mana saja yang akan dimasukkan sebelum melakukan deteksi outlier. Sistem dapat juga dilengkapi metode khusus sehingga dapat menyediakan fungsi untuk memberitahu pengguna atribut mana saja yang direkomendasikan dalam proses deteksi outlier. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 172 DAFTAR PUSTAKA Abu Tair, Mohammed M., El-Halees, Alaa M. (2012). Mining Educational Data to Improve Student‟s Performance: A Case Study. International Journal of Information and Communication Technology Research. Han, Jiawei & Micheline Kamber (2006). Data Mining Concepts and Techniques Second Edition. San Fransisco : Elsovier. Handriyani, Deni & M.Arif Bijaksana, dkk . (2009). Analisa Perbandingan Clustering-Based, Distance-Based, dan Density Based dalam Mendeteksi Outlier. IT Telkom Bandung. Knorr, Edwin M. (2002). Outlier and Data Mining: Finding Exception in Data. The University of British Columbia. Rosa, Paulina Heruningsih Prima, Ridowati Gunawan, Sri Hartati Wijono. (2013). The Development of Academic Data Warehouse as a Basis for Decision Making : A Case Study at XYZ University. Proceeding of International Conference on Enterprise Information System and Application. Universitas Islam Indonesia, Yogyakarta, Indonesia 2013. Santosa, Budi. (2007). Data Mining Teknik Pemanfaatan Data untuk Keperluan Bisnis. Yogyakarta :Graha Ilmu. Tan, Pang-Ning. & Michael Steinbach, dkk. (2005). Introduction of Data Mining. Addison-Wesley Companion Book Site. C Simanjuntak, Ellisa & Ruthyanti Grace, dkk (2010). Blackbox Testing. http://teknologi.kompasiana.com/gadget/2010/12/13/blackboxtesting324503.html Diakses pada tanggal 2 Juni 2013 jam 12.33 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Hatta (2012). Metode Mendeteksi 173 Outlier. http://muhammadhatta12.blogspot.com/2012/03/metode-mendeteksioutlier_18.html Diakses pada tanggal 5 November 2012 jam 18.32 Khannedy, Eko. (2010). Menampilkan JCheckBox di http://eecchhoo.wordpress.com/2010/07/15/menampilkan-jcheckboxjtable/comment-page-1/ Diakses tanggal 11 Mei 2013 jam 15:11 JTable. di- MadProgrammer.(2012). How to adjust JTable columns to fit the longest content in column cells http://stackoverflow.com/questions/13013989/howto- adjust- jtable-columns-to-fit-the-longest-content-in-column-cells Diakses pada tanggal 9 Mei 2013 jam 14.15 Pei, Jian. (2009). CMTP 741 Foundation of Data Mining – OutlierDetection.pdf. http://www.cs.sfu.ca/CourseCentral/741/jpei/slides/ Diakses pada tanggal 22 Agustus 2013 jam 15.00 Pramudiono, I. (2007). Pengantar Data Mining : Menambang Permata Pengetahuan di Gunung Data. http://www.ilmukomputer.org/wpcontent/uploads/2006/08/iko-datamining.zip Diakses pada tanggal 15 November 2012 jam 21.32 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN I Deskripsi Usecase Nomor Nama Use Case Use Case 001 Input data file .xls , .csv atau tabel basisdata 002 Deteksi outlier 003 Simpan hasil deteksi outlier 004 Seleksi atribut 005 Lihat grafik distribusi per atribut Deskripsi Use case ini menggambarkan proses di mana pengguna memilih data dalam file berformat .xls , .csv atau data dari tabel dalam basisdata untuk selanjutnya ditampilkan ke dalam tabel data sebelum dilakukan proses pencarian outlier Use case ini menggambarkan proses pencarian outlier terhadap data yang telah dimasukkan oleh pengguna Use case ini menggambarkan proses dimana pengguna menyimpan hasil pencarian outlier dalam bentuk file dengan format ekstensi .doc atau .txt Use case ini menggambarkan proses di mana pengguna dapat memilih atribut dengan menghapus atribut tersebut sebelum melakukan pencarian outlier Use case ini menggambarkan pengguna telah 174 Aktor Pengguna Pengguna Pengguna Pengguna Pengguna PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI memasukkan data ke dalam sistem dan akan melihat distribusi data per atribut dalam bentuk diagram batang 175 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN II Narasi Use Case Setiap usecase pada bagian sebelumnya akan dirinci dalam sebuah narasi yang merupakan deskripsi bagaimana pengguna berinteraksi dengan sistem dalam menyelesaikan usecase tersebut. Nama Use-case : ID Use-case : Prioritas : Pelaku Utama : Pelaku Lain yang Terlibat Pihak Lain yang Berkepentingan : Deskripsi Input data file .xls , .csv atau tabel basisdata 001 Jenis Use-Case Kebutuhan Operasional Pengguna - Use case ini menggambarkan proses di mana pengguna memilih data dalam file berformat .xls , .csv atau data dari tabel dalam basisdata untuk selanjutnya ditampilkan ke dalam tabel data sebelum dilakukan proses pencarian outlier Pengguna telah masuk ke sistem dan berada Kondisi Awal : pada Halaman Utama Urutan Aktivitas Normal Aksi Aktor Respon Sistem : Langkah 1 : Pengguna memilih tabbed pane “Preprocess” pada Halaman Utama Langkah 2 : Sistem menampilkan tampilan tabbed pane “Preprocess” pada Halaman Utama Langkah 3 : Pengguna menekan tombol “Pilih File” untuk mengambil data dari .xls atau .csv Langkah 4 : Sistem menampilkan kotak dialog 176 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Langkah 5 : Pengguna memilih file .xls atau .csv yang akan diproses JFileChooser Langkah 6 :Sistem membaca data pada file .xls atau .csv untuk selanjutnya data tersebut ditampilkan ke dalam tabel data pada Halaman Utama beserta dengan jumlah data dan jumlah atribut. Aktivitas Alternatif Langkah 3a : Pengguna menekan tombol “Pilih Database” untuk mengambil data yang Langkah 4a : berasal dari database Sistem menampilkan Halaman Pilih Database Langkah 5a : Pengguna memilih jenis database, memasukkan username, password, database (khusus Oracle), dan URL Langkah 6a : Pengguna menekan tombol “OK” Langkah 7a : Sistem menampilkan kotak dialoh koneksi berhasil Langkah 8a : Pengguna menekan tombol “OK” Langkah 9a : Sistem menampilkan Halaman Tampil Tabel Langkah 10 a : memilih tabel dan tekan tombol “Pilih Tabel” 177 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Kondisi Akhir Langkah 11a :Sistem membaca data pada tabel basisdata untuk selanjutnya data tersebut ditampilkan ke dalam tabel data pada Halaman Utama beserta dengan jumlah data dan jumlah atribut. Data masukan yang telah dipilih tertampil tabel data pada Halaman Utama tabbed pane “Preprocess” dan “Deteksi Outlier” dan menampilkan data tabel SeleksiAtribut Nama Use-case : ID Use-case : Prioritas : Pelaku Utama : Pelaku Lain yang Terlibat Pihak Lain yang Berkepentingan : Deskripsi Deteksi Outlier 002 Kondisi Awal : -Pengguna telah memilih atribut pada tabbed pane “Preprocess” dan telah menekan tombol “Submit Data” - Pengguna telah memasukkan data Aksi Aktor Respon Sistem Urutan Aktivitas Normal : Jenis Use-Case Kebutuhan Operasional Pengguna Use case ini menggambarkan proses pencarian outlier terhadap data yang telah dimasukkan oleh pengguna Langkah 1 : Pengguna memilih tabbed pane “Deteksi Outlier “ Langkah 2 : Sistem menampilkan tampilan tabbed pane “Deteksi Outlier” pada 178 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Halaman Utama Langkah 3 : Pengguna memasukkan nilai parameter M dan dmin Langkah 4 : Pengguna menekan tombol “Proses” Langkah 5 : Sistem mengambil data yang terdapat pada tabel data dan memproses data tersebut menggunakan algoritma Naïve Nested Loop Langkah 6 : Sistem menampilkan hasil deteksi outlier beserta dengan parameter M dan dmin sesuai dengan masukan pengguna ke dalam JTextArea Aktivitas Alternatif Kondisi Akhir Pengguna dapat melihat hasil deteksi outlier beserta dengan parameter masukkannya (M dan dmin) Nama Use-case : Simpan hasil pencarian outlier 003 ID Use-case : Prioritas : Pelaku Utama : Pelaku Lain yang Terlibat Pihak Lain yang Berkepentingan : Deskripsi Jenis Use-Case Kebutuhan Operasional Pengguna Use case ini menggambarkan proses dimana pengguna menyimpan hasil pencarian outlier dalam bentuk file dengan format ekstensi .doc 179 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Kondisi Awal : Urutan Aktivitas Normal : atau .txt -Sistem telah menampilkan hasil deteksi outlier -Pengguna berada pada tabbed pane “Deteksi Outlier” pada halaman Utama Aksi Aktor Respon Sistem Langkah 1 : Sistem menampilkan hasil deteksi outlier beserta dengan parameter M dan dmin sesuai dengan masukan pengguna ke dalam JTextArea Langkah 2 : Pengguna menekan tombol “Simpan Hasil Outlier” Aktivitas Alternatif Kondisi Akhir Langkah 3 : Sistem menampilkan kotak dialog Langkah 4 : Pengguna penyimpanan file memilih lokasi penyimpanan, memasukkan nama file dan jenis format file Langkah 5 : Pengguna menekan tombol “Save” Langkah 6 : Sistem menyimpan file hasil deteksi outlier sesuai dengan nama dan format file serta lokasi yang sesuai dengan masukkan dari pengguna Hasil deteksi outlier dapat tersimpan dalam format file berekstensi tertentu sesuai dengan pilihan pengguna 180 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Nama Use-case : ID Use-case : Prioritas : Pelaku Utama : Pelaku Lain yang Terlibat Pihak Lain yang Berkepentingan : Deskripsi Seleksi atribut 004 Jenis Use-Case Kebutuhan Operasional Pengguna - Use case ini menggambarkan proses di mana pengguna dapat memilih atribut dengan menghapus atribut tersebut sebelum melakukan pencarian outlier -Sistem telah menampilkan data ke dalam Kondisi Awal : tabel data pada “Halaman Utama” tabbed pane “Preprocess” Urutan Aktivitas Normal Aksi Aktor Respon Sistem : Langkah 1 : Sistem menampilkan daftar atribut pada tabel Seleksi Langkah 2 :Pengguna Atribut menandai atribut pada kolom Pilih dalam tabel Seleksi Atribut Langkah 3 : Menekan tombol Hapus Atribut Langkah 4 :Sistem menghapus atribut terpilih beserta data dalam tabel data (Halaman Utama) Langkah 5 : Sitem mengjapus atribut terpilih pada tabel Seleksi Atribut Langkah 6 : Sistem menampilkan data pada tabel data (Halaman Utama) tanpa atribut yang 181 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Aktivitas Alternatif dihapus Langkah 2a :Pengguna memilih tombol „Tandai Semua‟ untuk menghapus semua atribut atau menekan tombol „Batal Tandai Semua‟ untuk membatalkannya Langkah 3a : Menekan tombol Hapus Atribut Langkah 4a-6a : seperti Aktivitas normal Kondisi Akhir Data masukan tampil ke dalam tabel data pada tabbed pane “Preprocess” dan „Deteksi Outlier” tanpa atribut yang dihapus Nama Use-case : ID Use-case : Prioritas : Pelaku Utama : Pelaku Lain yang Terlibat Pihak Lain yang Berkepentingan : Deskripsi Lihat grafik per atribut 005 Kondisi Awal : Urutan Aktivitas Normal : Jenis Use-Case Kebutuhan Operasional Pengguna Use case ini menggambarkan pengguna telah memasukkan data ke dalam sistem dan akan melihat distribusi data per atribut dalam bentuk diagram batang -Sistem telah menampilkan data ke dalam tabel data pada “Halaman Utama” tabbed pane “Preprocess” Aksi Aktor Respon Sistem Langkah 1 : Pengguna menekan tombol “Distribusi Atribut” pada Langkah 2 : Sistem “Halaman Utama” tabbed menampilkan pane “Preprocess” “Halaman Distribusi Atribut” Langkah 3 : Pengguna atribut pada combo box daftar atribut Langkah 4 : Sistem menampilkan sebaran data dan jumlah data untuk atribut yang dipilih 182 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Langkah 5 : Menekan tombol „Lihat Grafik‟ Langkah 6 : Menampilkan Grafik Distribusi Atribut dalam bentuk diagram batang Aktivitas Alternatif - Kondisi Akhir Pengguna dapat melihat distribusi data untuk atribut yang dipilih akan ditampilkan dalam bentuk grafik diagram batang 183 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN III Diagram Aktivitas 1. Diagram Aktivitas Input data dari file .xls Pengguna Sistem Awal Menampilkan tampilan tabbed pane “Preprocess” pada Halaman Utama Memilih tabbed pane “Preprocess” pada Halaman Utama menampilkan kotak dialog JFileChooser Menekan tombol “Pilih File” Memilih file excel Membaca data pada file excel Menampilkan data ke dalam tabel data pada Halaman Utama beserta dengan jumlah data dan jumlah atribut , data tabel SeleksiAtribut Akhir 184 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. Diagram Aktivitas Input data dari file .csv Pengguna Sistem Awal Menampilkan tampilan tabbed pane “Preprocess” pada Halaman Utama Memilih tabbed pane „Preprocess‟ pada Halaman Utama menampilkan kotak dialog JFileChooser Menekan tombol “Pilih File” Memilih file .csv Membaca data pada file .csv Menampilkan data ke dalam tabel data pada Halaman Utama beserta dengan jumlah data dan jumlah atribut, data tabel SeleksiAtribut Akhir 185 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Diagram Aktivitas Input data dari tabel dalam basisdata Pengguna Sistem Awal Menampilkan tampilan tabbed pane “Preprocess” pada Halaman Utama memilih tabbed pane “Preprocess” pada Halaman Utama menampilkan Halaman PilihDatabase menekan tombol “Pilih Database” memilih basisdata (Oracle atau mySQL) Pilih Oracle Tidak Ya Memasukkan username , password, URL dan tekan tombol OK Pilih mySQL lalu memasukkan username , password, database,URL dan tekan tombol OK Koneksi Berhasil ? Tidak Ya Tampil kotak dialog koneksi berhasil A 186 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI A Menekan tombol OK Tampil Halaman Tampil Tabel Pilih Tabel pada combo box Daftar Tabel , tekan tombol Pilih Tabel Menampilkan data ke dalam tabel data pada Halaman Utama beserta dengan jumlah data dan jumlah atribut,data tabel SeleksiAtribut Akhir 187 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4. Diagram Aktivitas Deteksi Outlier Pengguna Sistem Awal menampilkan tampilan tabbed pane “Deteksi Outlier” pada Halaman Utama memilih tabbed pane “Deteksi Outlier “ memasukkan nilai parameter M dan dmin mengambil data yang terdapat pada tabel data di Halaman Utama menekan tombol “Proses” memproses data dari tabel data menggunakan algoritma Naïve Nested Loop menampilkan hasil deteksi outlier, parameter M dan D ke dalam JTextArea Akhir 188 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. Diagram Aktivitas Simpan hasil deteksi outlier Pengguna Sistem Awal menampilkan hasil deteksi outlier, parameter M dan D ke dalam JTextArea menekan tombol “Simpan Hasil Outlier” menampilkan kotak dialog “Simpan File” memilih lokasi penyimpanan, memasukkan nama file dan memilih jenis format file (.txt atau .doc) menyimpan file hasil deteksi outlier sesuai masukkan dari pengguna menekan tombol “Save” Akhir 189 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6. Diagram Aktivitas Lihat Distribusi Atribut per Atribut Pengguna Sistem Awal Menekan tombol „Distribusi Atribut‟ pada Halaman Utama (tabbed pane Proprocess) Menampilkan Halaman Distribusi Atribut Memilih atribut pada combo box daftar atribut Menampilkan sebaran data dan jumlah data untuk atribut yang dipilih Menekan tombol Lihat Grafik Menampilkan Grafik Distribusi Atribut dalam bentuk diagram batang Akhir 190 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7. Diagram Aktivitas Seleksi Atribut Pengguna Sistem Awal Menampilkan daftar atribut pada tabel Seleksi Atribut Menandai atribut pada kolom Pilih dalam tabel Seleksi Atribut Menghapus atribut terpilih beserta data dalam tabel data (Halaman Utama) Menekan tombol Hapus Atribut Menghapus atribut terpilih pada tabel Seleksi Atribut Menampilkan data pada tabel Data (Halaman Utama) tanpa atribut yang dihapus Akhir 191 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8. Diagram Aktivitas Alternatif Seleksi Atribut (Hapus Semua Atribut) Pengguna Sistem Awal Menampilkan daftar atribut pada tabel Seleksi Atribut Tidak Tandai Semua Atribut ? Ya Menekan tombol Tandai Semua Atribut lalu tombol Hapus Atribut Menekan tombol “Batal Tandai Semua‟ Menghapus atribut terpilih beserta data dalam tabel data (Halaman Utama) Menghapus atribut terpilih pada tabel Seleksi Atribut Menampilkan data pada tabel Data (Halaman Utama) tanpa atribut terpilih Akhir 192 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN IV Diagram Sequence 1. Diagram Sequence Input data dari file .xls <<boundary>> HalamanUtama . <<controller >> CheckBoxTableModel <<entity >> SeleksiAtribut Pengguna 1.tekan tombol “Pilih File” 2.Tampil fileChooser 3.Pilih file excel 4.pilihFile() 5.new CheckBoxTab leModel 6.tampilkan data excel ke tabel data 7.tampilkan data tabel seleksi atribut 193 5. setAtribut() , getAtribut(),setPilih(), getPilih() PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. Diagram Sequence Input data dari file .csv <<boundary>> HalamanUtama . <<controller >> CheckBoxTableModel <<entity >> SeleksiAtribut Pengguna 1.tekan tombol “Pilih File” 2.Tampil fileChooser 3.Pilih file csv 4.pilihFile() 5.new CheckBoxTable Model 6.tampilkan data csv ke tabel data 7.tampilkan data tabel seleksi atribut 194 5. setAtribut() , getAtribut(),setPilih(), getPilih() PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Diagram Sequence Input data dari tabel dalam basisdata <<boundary>> HalamanUtama <<controller>> Database Controller <<boundary>> HalamanPilih Database <<entity>> Database Connection <<boundary>> Halaman TampilTabel Pengguna 1.tekan tombol “Pilih Database” 2.tampilkan Hal.PilihDatabase 3.pilih koneksi basisdata lalu masukkan username,password,database,URL 4.pilih Database() 5. isConnectedOracle() Atau isConnectedSQL 6.Tampil Hal.TampilTabel 8.tampilTableOracle() atau tampilTableSQL() 7.tekan tombol “Pilih Tabel” 9.tampilkan data ke tabel data dan seleksi atribut 195 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4. Diagram Sequence Deteksi Outlier <<boundary>> HalamanUtama <<controller>> Graph_NaiveNL Pengguna 1.memasukkan parameter D dan M 2.tekan tombol “Proses” 4.addVertex() ,addEdge(),displayOutlier() ,naiveNL() 3. prosesDeteksi() 5.menampilkan hasil outlier parameter M dan D ke dalam JTextArea 196 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. Diagram Sequence Simpan hasil deteksi outlier <<boundary>> HalamanUtama Pengguna 1.tekan tombol “Simpan Hasil Outlier” 2.menampilkan kotak dialog simpan 3. memilih lokasi penyimpanan, memasukkan nama file dan memilih jenis format file 4.tekan tombol “Save” pada kotak dialog simpan 5.simpanFile() 6.konfirmasi file berhasil disimpan 197 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6. Diagram Sequence Lihat Distribusi Atribut per Atribut <<boundary>> HalamanUtama <<boundary>> HalamanDistribusiAtribut <<entity>> DiagramBatang Pengguna 1.tekan tombol „Distribusi Atribut‟ 2.tampil Hal.DistribusiAtribut 3.pilih atribut pada combo box daftar atribut 4.tampil sebaran data 5.tekan tombol „Lihat Grafik‟ dan jumlah data untuk atribut 6.lihat Grafik() 8. Menampilkan Grafik Distribusi Atribut dalam bentuk diagram batang 198 7.tampil() PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7. Diagram Sequence Seleksi Atribut . <<boundary>> HalamanUtama <<controller >> CheckBoxTableModel <<entity >> SeleksiAtribut Pengguna 1.tandai atribut pada kolom Pilih di tabel Seleksi Atribut 2.tekan tombol Hapus Atribut 4.new CheckBoxTab leModel, removeRow() 3.hapusAtribut (), cek_atribut_hapus(), cek_atribut_kolom(), updateCellWidth() 6.tampilkan tabel data tanpa disertai atribut yang telah dihapus 199 5. setAtribut() , getAtribut(),setPilih (),getPilih() PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN V Diagram Kelas Berikut ini merupakan rincian atribut dan method untuk masing-masing diagram kelas : <<entity>> DatabaseConnection -url : String -password :String -username : String -connection : Connection + getConnectionSQL( : Connection String, String, String ) + isConnectedSQL( : boolean String, String, String) + getConnectionOracle( : Connection String, String, String) + isConnectedOracle( : boolean String, String, String) +setUrl (String url) : void + getUrl () : String +setConnection (Connection connection : void +getConnection() : Connection +setUsername(String username) : void +getUsername() : String +setPassword(String password) : void +getPassword() :String <<controller >> DatabaseController +tampilTableOracle(Connection) : ResultSet +tampilTableMySql(Connection) :ResultSet +tampilIsiTable(Connection, String) : ResultSet 200 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<entity>> Vertex_NaiveNL +labelData : String +nilai : List<Double> +outlier : boolean +Vertex_NaiveNL(String , List <Double>) : kontruktor +getLabelData() : String +setLabelData(String) : void +isOutlier() : boolean + setOutlier(boolean) :void +getNilai() : List<Double> +setNilai(List<Double>) : void <<controller>> Graph_NaiveNL -matrix : double[][] -vertex : Vertex_NaiveNL[] -size : int +Graph_NaiveNL(int) konstruktor + addVertex(String, : void List<Double>) + addEdge(int, int, double) : void + euclideanDistance( : double int,int) + naiveNL(double,double) : void + displayOutlier(double, : String double, String,JTable,String) <<entity>> DiagramBatang + tampil(int [][], String [][], String [][] ) : void 201 : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<entity>> SeleksiAtribut -atribut : String -pilih :boolean +SeleksiAtribut(String,boolean) :konstruktor +getPilih() : boolean +setPilih(boolean pilih) : void +getAtribut() : String +setAtribut(String atribut) : void <<controller>> CheckBoxTableModel +colom: String[] +lfm : SeleksiAtribut +lfm : List<SeleksiAtribut> + CheckBoxTableModel() : konstruktor +getRowCount() :int +getColumnCount() :int +getColumnName(int) : String +getValueAt(int, int) : Object +getColumnClass(int) : Class +setValueAt(Object l, int r, int ) : void +isCellEditable(int, int) :boolean + add(int , SeleksiAtribut) : void +removeRow() : void +removeRow2() :void 202 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<boundary>> HalamanDistribusiAtribut -atributComboBox : JcomboBox -daftarLabel : Jlabel - jDesktopPane1 : JDesktopPane - jPanel1 : JPanel - jScrollPane1 : JScrollPane - jSeparator1 : JSeparator - keluarButton : JButton - lihatGrafikButton : JButton - tabelGrafik : JTable - model : JTable - count : int - tabelLabel : Jlabel +HalamanDistribusi(List<String>,JTable) :<<konstruktor>> + tampilAtribut(List<String, JTable) : void + pilihAtributComboBox() : void +lihatGrafik() : void -atributComboBoxActionPerformed (java.awt.event.ActionEvent evt) : void -lihatGrafikButtonActionPerformed (java.awt.event.ActionEvent evt) : void -keluarButtonActionPerformed (java.awt.event.ActionEvent evt) : void <<boundary>> HalamanUtama - cb_table : CheckBoxTableModel - seleksi_atribut : SeleksiAtribut -Dlabel : JLabel - Mlabel : JLabel -atributTextField : JTextField - bantuanButton : JButton - barisTextField : JTextField - batalTandaiButton : JButton -dataPreprocessTable : JTable -deteksiPanel : Jpanel -distribusiButton : JButton -dminTF : JTextField -fileButton : JButton -hapusButton : JButton - hasilDeteksiTextArea : JtextArea -hasilLabel : .Jlabel - jDesktopPane1 : JdesktopPane - jPanel1 : Jpanel 203 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI - jPanel2 : JPanel - jPanel3 : JPanel - jScrollPane1 : JScrollPane - jScrollPane2 : JscrollPane - jScrollPane4 : JScrollPane -jScrollPane5 : JScrollPane - jSeparator1 : JSeparator - jSeparator2 : JSeparator - jSeparator3 : JSeparator - jSeparator4 : JSeparator - jTabbedPane1 : JTabbedPane - judulLabel : JLabel - jumlahAtributLabel : JLabel - jumlahBarisDeteksi : JTextField -jumlahDataLabel : JLabel -jumlahLabel : Jlabel - keluarButton : JButton -nilaiMTF : JTextField -pathLabel : JLabel - pathTextField : JTextField - pilihDBButton : JButton -preprocessPanel : JPanel - prosesButton : JButton -prosesLabel : JLabel -seleksiAtributLabel : JLabel - seleksiTable : JTable -simpanFileButton : JButton - submitDataButton : JButton - tabel2Label : JLabel - tabelLabel : JLabel - tableDeteksiOutlier : JTable -tandaiSemuaButton : JButton + HalamanUtama() : <<konstruktor>> + HalamanUtama(DatabaseConnection, String) : <<konstruktor>> +tampilIsiDataBasisdata(DatabaseConnection conn, String namaTabel) : void + pilihDB() : void + submitData() : void + distribusiAtribut() : void + pilihFile(): void + updateCellWidth(JTable) : void + adjustJTableRowSizes (JTable) : void + adjustColumnSizes(JTable,int,int) : void + prosesDeteksi() : void + cek_atribut_hapus(String,List<String>) : void +cek_atribut_kolom(String,Vector) : void + hapusAtribut() : void + batalTandaiSemuaAtribut(): void + tandaiSemuaAtribut(): void + simpanFile() : void 204 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI -keluarButtonActionPerformed(java.awt.event.ActionEvent evt) : void <<boundary>> HalamanPilihDatabase -OKButton : JButton - URLLabel : JLabel - URLTextField : JTextField -batalButton : JButton - databasePilihLabel : Jlabel - dbComboBox : JcomboBox - dbLabel : JLabel - dbTextField : JTextField - jDesktopPane1 : JDesktopPane - databasePilihLabel : JLabel - jPanel1 : JPanel - passwordField : JPasswordField - passwordLabel : JLabel - usernameLabel : JLabel - usernameTextField : JTextField + HalamanPilihDatabase() : <<konstruktor>> +pilihDatabase() : void -dbComboBoxActionPerformed(java.awt.event.ActionEvent evt) : void - batalButtonActionPerformed(java.awt.event.ActionEvent evt) : void - OKButtonActionPerformed(java.awt.event.ActionEvent evt) : void <<boundary>> HalamanTampilTabel - conn : DatabaseConnection - batalButton : JButton - daftarLabel : JLabel -daftarTableComboBox : JComboBox -jDesktopPane1 : JDesktopPane - jPanel1 : JPanel - pilihTabelButton : JButton + HalamanTampilTabel(DatabaseConnection , String) : <<konstruktor>> +tampilTabel(DatabaseConnection, String) :void +pilihTabel() : void -pilihTabelButtonActionPerformed (java.awt.event.ActionEvent evt) : void -batalButtonActionPerformed (java.awt.event.ActionEvent evt) : void 205 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<boundary>> HalamanBantuan - jDesktopPane1 : JdesktopPane - label : JLabel - panel : JPanel -kembaliButton : JButton +HalamanBantuan() : <<konstruktor>> -kembaliButtonActionPerformed(java.awt.event.ActionEvent evt) : void <<boundary>> HalamanKonfirmasiKeluar - CancelButton : JButton - JudulLabel : JLabel - OKButton : JButton - jDesktopPane1 : JDesktopPane - jDesktopPane2 : JdesktopPane +HalamanKonfirmasiKeluar(java.awt.Frame, boolean) : <<konstruktor>> -OKButtonActionPerformed(java.awt.event.ActionEvent evt) : void -CancelButtonActionPerformed(java.awt.event.ActionEvent evt) : void <<boundary>> HalamanMissingValues - jDesktopPane1 : JdesktopPane -jPanel1 : Jpanel - jScrollPane1 : JScrollPane - jTextArea1 : JTextArea - tidakButton : JButton - yaButton : JButton - tabel : DefaultTableModel + HalamanMissingValues(java.awt.Frame, boolean, DefaultTableModel) :<<konstruktor>> -yaButtonActionPerformed(java.awt.event.ActionEvent evt) : void - tidakButtonActionPerformed(java.awt.event.ActionEvent evt) : void 206 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<boundary>> HalamanAwal - copyrightLabel : Jlabel - jDesktopPane1 : JDesktopPane - logoLabel : Jlabel - jPanel1 : JPanel - masukButton : JButton - sistemLabel : JLabel - univLabel : Jlabel + HalamanAwal() : <<konstruktor>> -masukButtonActionPerformed(java.awt.event.ActionEvent evt) : void 207 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN VI Listing Program Berikut merupakan lampiran dari listring program untuk kelas-kelas yang belum termuat pada bab implementasi kelas : 1. Kelas HalamanAwal public class HalamanAwal extends javax.swing.JFrame { /** Creates new form HalamanAwal */ HalamanUtama utama = new HalamanUtama(); public HalamanAwal() { initComponents(); setTitle("Halaman Awal"); } private void masukButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here utama.setVisible(true); this.dispose(); } // Variables declaration - do not modify private javax.swing.JLabel copyrightLabel; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1; private javax.swing.JLabel logoLabel; private javax.swing.JButton masukButton; private javax.swing.JLabel sistemLabel; private javax.swing.JLabel univLabel; // End of variables declaration } Listing Program Kelas HalamanAwal 208 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. KelasKonfirmasiKeluar public class HalamanKonfirmasiKeluar extends javax.swing.JDialog { /** Creates new form LoginDialog */ public HalamanKonfirmasiKeluar(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); setResizable(false); } private void OKButtonActionPerformed(java.awt.event.ActionEvent evt) { JOptionPane.showMessageDialog(null, "Anda berhasil keluar"); java.awt.Window window[] = java.awt.Window.getWindows(); for (int i = 0; i < window.length; i++) { window[i].dispose(); window[i] = null; } } private void CancelButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); this.dispose(); } private javax.swing.JButton CancelButton; private javax.swing.JLabel JudulLabel; private javax.swing.JButton OKButton; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JDesktopPane jDesktopPane2; // End of variables declaration } Listing Program Kelas HalamanKonfirmasiKeluar 3. Kelas HalamanBantuan public class HalamanBantuan extends javax.swing.JFrame { public HalamanBantuan() { initComponents(); setTitle("Halaman Bantuan"); setResizable(false); this.getMaximumSize(); setExtendedState(MAXIMIZED_BOTH); } private void kembaliButtonActionPerformed(java.awt.event.ActionEvent 209 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI evt) { this.dispose(); } private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JButton kembaliButton; } Listing Program Kelas HalamanBantuan 4. Kelas HalamanMissingValues public class HalamanMissingValues extends javax.swing.JDialog { /** Creates new form HalamanMissingValues */ DefaultTableModel tabel; public HalamanMissingValues(java.awt.Frame parent, boolean modal, DefaultTableModel model) { super(parent, modal); initComponents(); setResizable(false); tabel = model; } private void yaButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String karakter = "[0-9.]*"; String karakter1 = "[.]*"; for (int i = 0; i < tabel.getRowCount(); i++) { for (int j = 1; j < tabel.getColumnCount(); j++) { if ((tabel.getValueAt(i, j) == null) || !(tabel.getValueAt(i, j).toString().matches(karakter)) || (tabel.getValueAt(i, j).toString().matches(karakter1))) { tabel.setValueAt(0, i, j); } } } this.dispose(); } private void tidakButtonActionPerformed(java.awt.event.ActionEvent evt) { 210 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI this.dispose(); } private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.JButton tidakButton; private javax.swing.JButton yaButton; } Listing Program Kelas HalamanMissingValues 211