PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN JUDUL
PENGENALAN POLA KEBERHASILAN SEMINARIS DENGAN MENGGUNAKAN AGGLOMERATIVE HIERARCHICAL CLUSTERING Sebuah Studi Kasus atas Keberhasilan Studi para Seminaris Di Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Disusun oleh: Poldo Andreas Situmorang 115314093
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015 i
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN JUDUL (English)
RECOGNIZING SUCCESS PATTERN OF SEMINARIANS BY USING AGGLOMERATIVE HIERARCHICAL CLUSTERING A Case Study of The Rate of Educational Completion of Seminarians At The Minor Seminary of Saint Peter Canisius, Mertoyudan, Magelang
A Thesis Presented as Partial Fulfillment of The Requirements To Obtain Sarjana Komputer Degree In Informatics Engineering Study Program
Written by: Poldo Andreas Situmorang 115314093
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA
2015
ii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PESETUJUAN
iii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PENGESAHAN
iv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PERSEMBAHAN
“… όπως εγώ σας έχω αγαπήσει.” ( Ιωάννης 15:12 ) “… sicut dilexi vos.” (Ioannes 15:12) “… as I have loved you” (John 15:12) “… seperti Aku telah mengasihi kamu.” (Yohanes 15:12)
Skripsi ini dipersembahkan untuk: Allah Bapa di surga, Mereka yang terkasih.
v
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PERNYATAAN KEASLIAN KARYA
vi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI
vii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRAK
PENGENALAN POLA KEBERHASILAN SEMINARIS DENGAN MENGGUNAKAN AGGLOMERATIVE HIERARCHICAL CLUSTERING Sebuah Studi Kasus atas Keberhasilan Studi para Seminaris Di Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang ABSTRAK Pembinaan di seminari menengah merupakan pembinaan formal awal bagi para seminaris, calon imam Katolik. Sebagai tempat pembinaan, seminari memiliki tiga kriteria penilaian terhadap para seminarisnya. Ketiga kriteria tersebut adalah sisi intelektual (scientia), kesehatan (sanitas), dan kesucian hidup (sanctitas). Tulisan ini terfokus hanya pada pengelompokan guna pengenalan pola keberhasilan studi para seminaris di Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang. Pengelompokan yang dibuat kiranya akan berguna bagi seminari untuk analisis lebih lanjut berkaitan dengan kemampuan scientia para seminaris. Nilai rapor para seminaris menjadi acuan utama sebagai sumber data yang akan dikelompokkan. Nilai rapor tersebut bersumber dari nilai hasil studi 186 mata pelajaran yang diikuti oleh 137 seminaris angkatan tahun 2009 dan 2010 mulai dari kelas KPP (Kelas Persiapan Pertama) sampai kelas XII. Sebelum dikelompokkan, data scientia yang diperoleh dari seminari masuk tahap preprocessing. Pada tahap ini, dilakukan data cleaning, data integration, data transformation, dan data reduction. Pada tahap data reduction digunakan principal component analysis. Berkaitan dengan proses pengelompkan, ada tiga metode kedekatan yang digunakan dalam tulisan ini, yaitu single linkage, average linkage, dan complete linkage. Masing-masing teknik ini menggunakan euclidean distance sebagai parameter jarak kedekatannya. Dilakukan 9 kali percobaan untuk masing-masing metode kedekatan. Setiap percobaan pengelompokan ini dihitung juga nilai sum of square error (SSE). Dari percobaan pengelompokan yang dilakukan ditemukan pembentukan tiga kelompok metode single linkage memberikan hasil 49,97. Hasil ini merupakan nilai SSE terkecil dan terbaik dari seluruh percobaan pembentukan kelompok sebanyak 27 kali. Pembentukan tiga kelompok ini juga sesuai dengan tujuan yang ingin dicapai dalam tulisan ini, yaitu kelompok seminaris yang berhasil, seminaris yang membutuhkan pembinaan khusus, dan seminaris yang gagal dalam studinya.
viii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRACT
RECOGNIZING SUCCESS PATTERN OF SEMINARIANS BY USING AGGLOMERATIVE HIERARCHICAL CLUSTERING A Case Study of The Rate of Educational Completion of Seminarians At The Minor Seminary of Saint Peter Canisius, Mertoyudan, Magelang ABSTRACT The minor seminary designed as initial formal guidance for seminarians. As a Catholic guidance institutions, it has three criteria for assessment the seminarians, those are intellectual (scientia), health (sanitation) and sanctity of life (sanctitas). This paper only focuses on agglomeration to recognize intellectual development and success studies pattern of the seminarians at St. Petrus Canisius Seminary, Mertoyudan, Magelang. Hopefully, this agglomeration can be used for further analysis regarding to the scientia ability of seminarians. The main reference as data source is the grades of seminarians that comes from the values of 186 subjects were followed by 137 seminarians class of 2009 and 2010, range of class from KPP (Kelas Persiapan Pertama) up to XII. Prepocessing process of scientia data by clean, integrate, transform and reduce the data. Principal component analysis is used in the data reduction phase. There are three methods to measure similarity in this paper : single-linkage, average-linkage and complete-linkage. Each of these method use euclidean distance as parameter of distance proximity. There are 9 experiments for each of these method. In each of the agglomerate experiments also calculate the sum of square error (SSE). The formation of three groups founded by single-linkage methods with 49.97 accuracy from the experiments that was conducted. This accuracy result is the smallest value of SSE and be the best accuracy from acuracy result of 27 experiments. This formation of three groups is also accordance with the objectives to be achieved in this paper: seminarians who succes, seminarians who need special guidance and seminarians who failed in his studies.
ix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
KATA PENGANTAR
x
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR ISI
1 HALAMAN JUDUL ........................................................................................... i HALAMAN JUDUL (English) .......................................................................... ii HALAMAN PESETUJUAN ............................................................................. iii HALAMAN PENGESAHAN ........................................................................... iv HALAMAN PERSEMBAHAN ......................................................................... v PERNYATAAN KEASLIAN KARYA ............................................................ vi LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI .......................... vii ABSTRAK....................................................................................................... viii ABSTRACT ...................................................................................................... ix KATA PENGANTAR ........................................................................................ x DAFTAR ISI ..................................................................................................... xi DAFTAR GAMBAR ........................................................................................xiii DAFTAR TABEL ............................................................................................ xv BAB I PENDAHULUAN ................................................................................... 1 1.1 Latar Belakang ....................................................................................... 1 1.2 Rumusan Masalah .................................................................................. 6 1.3 Tujuan..................................................................................................... 6 1.4 Batasan Masalah .................................................................................... 7 BAB II LANDASAN TEORI ............................................................................. 8 2.1 Seminari Menengah St. Petrus Canisius ............................................... 8 2.2 Principal Component Analysis .............................................................. 10 2.3 Agglomerative Hierarchical Clustering ................................................. 17 2.4 Uji Akurasi Data .................................................................................. 33 BAB III METODOLOGI ................................................................................ 36 3.1 Metode Pengumpulan Data.................................................................. 36 3.2 Teknik Analisis Data ............................................................................ 37
xi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
3.3 Desain User Interface ............................................................................ 45 3.4 Spesifikasi Software dan Hardware ...................................................... 48 BAB IV IMPLEMENTASI DAN ANALISIS HASIL .................................... 50 4.1 Implementasi ........................................................................................ 50 4.1.1 Pengolahan Data ............................................................................. 50 4.1.2 User Interface .................................................................................. 59 4.2 Analisis Hasil ........................................................................................ 65 BAB V PENUTUP ........................................................................................... 79 5.1 Kesimpulan ........................................................................................... 79 5.2 Saran ..................................................................................................... 80 DAFTAR PUSTAKA ....................................................................................... 82 LAMPIRAN ..................................................................................................... 83
xii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR GAMBAR
Gambar 2.1 Hasil eigenvector dan eigenvalue dengan Matlab ............................ 16 Gambar 2.2 Dendrogram.................................................................................... 22 Gambar 2.3 Cluster hasil AHC ........................................................................... 23 Gambar 2.4 Dendrogram single linkage untuk 5 obyek data ............................... 27 Gambar 2.5 Dendrogram average linkage untuk 5 obyek data ............................ 30 Gambar 2.6 Dendrogram complete linkage untuk 5 obyek data .......................... 32 Gambar 2.7 Contoh pemotongan dendrogram single linkage .............................. 33 Gambar 3.1 Block diagram proses program........................................................ 37 Gambar 3.2 Dendrogram single linkage ............................................................. 43 Gambar 3.3 Dendrogram average linkage .......................................................... 43 Gambar 3.4 Dendrogram complete linkage ........................................................ 43 Gambar 3.5 User interface ................................................................................. 46 Gambar 3.6 Desain input data ............................................................................ 47 Gambar 3.7 Desain informasi dan tabel data ...................................................... 47 Gambar 3.8 Desain hasil proses AHC dan akurasi .............................................. 48 Gambar 4.1 Implementasi – Grafik SSE single linkage ...................................... 57 Gambar 4.2 Implementasi – Dendrogram single linkage nilai SSE terkecil ......... 57 Gambar 4.3 Implementasi – Grafik SSE average linkage.................................... 57 Gambar 4.4 Implementasi – Dendrogram average linkage dengan 4 kelompok .. 58 Gambar 4.5 Implementasi – Grafik SSE complete linkage ................................. 58 Gambar 4.6 Implementasi – Dendrogram complete linkage dengan 5 kelompok 59 Gambar 4.7 Implementasi – Dendrogram complete linkage dengan 6 kelompok 59 Gambar 4.8 Contoh tampilan keseluruhan sistem ............................................... 60 Gambar 4.9 Manual sistem................................................................................. 60 Gambar 4.10 Tentang sistem .............................................................................. 61 Gambar 4.11 Implementasi – Input data ............................................................. 62 Gambar 4.12 Implementasi – Informasi data dan tabel ....................................... 63 Gambar 4.13 Implementasi – Hasil proses AHC dan akurasi .............................. 64
xiii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.14 Fitur hasil PCA ............................................................................. 66 Gambar 4.15 Analisis – Grafik SSE single linkage ............................................. 68 Gambar 4.16 Analisis – Dendrogram single linkage nilai SSE terkecil ............... 69 Gambar 4.17 Analisis – Grafik SSE average linkage .......................................... 70 Gambar 4.18 Analisis – Dendrogram average linkage jumlah clustering 4 ......... 71 Gambar 4.19 Analisis – Grafik SSE complete linkage ........................................ 72 Gambar 4.20 Analisis – Dendrogram complete linkage jumlah clustering 5 ....... 73 Gambar 4.21 Analisis – Dendrogram complete linkage jumlah clustering 6 ....... 73 Gambar 4.22 Analisis – Dendrogram relatif seimbang single linkage ................. 75 Gambar 4.23 Analisis – Dendrogram relatif seimbang average linkage .............. 75 Gambar 4.24 Analisis – Dendrogram relatif seimbang complete linkage ............ 75
xiv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR TABEL
Tabel 2.1 Contoh data untuk PCA ...................................................................... 12 Tabel 2.2 Zero-mean untuk PCA ........................................................................ 13 Tabel 2.3 Covariance untuk PCA ....................................................................... 14 Tabel 2.4 Data final untuk contoh PCA .............................................................. 17 Tabel 2.5 Contoh data perhitungan AHC ............................................................ 24 Tabel 2.6 Similarity matrix ................................................................................ 25 Tabel 2.7 Matriks jarak ...................................................................................... 25 Tabel 2.8 Matriks jarak pertama single linkage .................................................. 26 Tabel 2.9 Matriks jarak kedua single linkage...................................................... 26 Tabel 2.10 Matriks jarak ketiga single linkage ................................................... 27 Tabel 2.11 Matriks jarak pertama average linkage .............................................. 28 Tabel 2.12 Matriks jarak kedua average linkage ................................................. 29 Tabel 2.13 Matriks jarak ketiga average linkage ................................................. 29 Tabel 2.14 Matriks jarak pertama complete linkage............................................ 31 Tabel 2.15 Matriks jarak kedua complete linkage ............................................... 31 Tabel 2.16 Matriks jarak ketiga complete linkage............................................... 32 Tabel 3.1 Data sampel perhitungan jarak ............................................................ 42 Tabel 3.2 Hasil euclidean distance dari data sampel ........................................... 42 Tabel 3.3 Contoh cluster hasil cut-off 3 single linkage ....................................... 44 Tabel 3.4 Contoh cluster hasil cut-off 3 average linkage..................................... 44 Tabel 3.5 Contoh cluster hasil cut-off 3 complete linkage .................................. 45 Tabel 4.1 Jenjang kelas dan jumlah seminaris .................................................... 51 Tabel 4.2 Mata pelajaran .................................................................................... 51 Tabel 4.3 Analisis – Hasil single linkage ............................................................ 67 Tabel 4.4 Analisis – Jumlah obyek, SSE terkecil single linkage ......................... 68 Tabel 4.5 Analisis – Hasil average linkage ......................................................... 69 Tabel 4.6 Analisis – Jumlah obyek, clustering 4 average linkage ........................ 70 Tabel 4.7 Analisis – Hasil complete linkage ....................................................... 71
xv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Tabel 4.8 Analisis – Jumlah obyek, clustering 5 complete linkage ..................... 72 Tabel 4.9 Analisis – Jumlah obyek, clustering 6 complete linkage ..................... 73 Tabel 4.10 Analisis – Hasil analisis SSE terkecil ................................................ 74 Tabel 4.11 Analisis – Hasil analisis keseimbangan dendrogram ......................... 74 Tabel 4.12 Analisis – Perbandingan label node SL-AL, SL-CL, dan AL-CL ...... 76
xvi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
1 BAB I PENDAHULUAN
1.1
Latar Belakang Kaum Beriman Kristiani ialah mereka yang karena melalui baptis
diinkorporasi pada Kristus. Melalui baptis, mereka dibentuk menjadi umat Allah yang dikenal dengan Gereja. Gereja yang berada di dunia ini dibentuk dan ditata sebagai masyarakat, berada di dalam Gereja Katolik yang dipimpin oleh pengganti Petrus (Paus) dan para Uskup dalam persekutuan dengannya. 1 Menyangkut Gereja universal, tugas untuk memaklumkan Injil dipercayakan terutama kepada Paus dan kepada Kolegium Para Uskup.2 Sejauh menyangkut Gereja partikular yang dipercayakan, tugas ini dilaksanakan oleh masing-masing Uskup. 3 Uskup dibantu oleh imam dalam melaksanakan tugasnya. Sebagai rekan kerja Uskup, dalam persekutuan dengannya dan presbiteriumnya 4 imam berkewajiban mengabdi umat Allah dalam pelayanan sabda dan menguduskan umat Allah melalui tujuh sakramen dalam Gereja Katolik. 5
Kanon 204, pasal 2, “Kitab Hukum Kanonik (Codex Iuris Canonici)”, Edisi Resmi Bahasa Indonesia, Grafika Mardi Yuana, 2006, hal. 80. 2 Kanon 756, pasal 1, hal. 221. 3 Kanon 756, pasal 2, hal. 221. 4 Presbiterium dalam Kamus Besar Bahasa Indonesia (KBBI) berarti orang tua-tua suatu jemaat; para imam. 5 Sakramen-sakramen yang dimaksud adalah “Sakramen-sakramen Perjanjian Baru, yang diadakan oleh Kristus Tuhan dan dipercayakan kepada Gereja, sebagai tindakan-tindakan Kristus dan Gereja, merupakan tanda dan sarana yang mengungkapkan dan menguatkan iman, mempersembahkan penghormatan kepada Allah serta menghasilkan pengudusan manusia…” (Kanon 840, KHK, hal. 241). 1
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
2
Karena pentingnya tugas yang diemban seorang imam, umat Katolik sangat membutuhkan kehadiran para imam. Namun demikian, sejarah membuktikan bahwa ada banyak calon imam atau seminaris 6 di Indonesia, tetapi biasanya hanya sedikit yang sampai pada jenjang imamat. Pembinaan dan pendidikan di seminari sering berjalan ketat dan selektif. Pendidikan dengan seleksi yang demikian sangat diperlukan, namun sekaligus mengakibatkan banyaknya seminaris yang tidak melanjutkan pendidikan ke seminari tinggi, sehingga sedikit pula yang menjadi imam. Seseorang harus memenuhi berbagai syarat untuk menjadi seorang imam Gereja Katolik. Ia wajib mengikuti serangkaian pembinaan. Seminari menengah7 menjadi tempat formal pertama untuk pembinaan seseorang dalam proses untuk menjadi seorang imam. Di seminari, secara khusus diselenggarakan pendidikan keagamaan dan pendidikan humaniora serta ilmu pengetahuan ilmiah. 8 Kemampuan intelektual (scientia) menjadi salah satu syarat penting. Selain itu, kesehatan (sanitas) yang baik juga menjadi syarat yang harus dimiliki oleh seorang calon imam. Selain itu, yang penting harus dimiliki adalah kesucian hidup (sanctitas). Berbagai macam potensi baik yang ada pada setiap seminaris
6
Seminaris adalah siswa si seminari sebagai seorang calon imam/paderi. (Kamus Besar Bahasa Indonesia. Available at: http://kbbi.web.id/seminaris [Diakses tanggal 05 Juni 2014]). 7 Kata seminari berasal dari kata Latin “semen”, artinya adalah “benih” atau “bibit”. Lebih lanjut, seminari juga dari “seminarium” yang berarti “tempat pembibitan” atau “tempat pesemaian benih-benih”. Maka, seminari berarti: sebuah tempat (tepatnya sebuah sekolah yang bergabung dengan asrama: tempat belajar dan tempat tinggal), di mana benih-benih panggilan imam yang terdapat dalam diri anak-anak muda, disemaikan, secara khusus, untuk jangka waktu tertentu, dengan tatacara hidup dan pelajaran yang khas, dengan dukungan bantuan para staf pengajar dan pembina, biasanya terdiri dari para imam dan biarawan. “Seminaris” menunjuk pada para siswa yang belajar di seminari. 8 Kanon 234, pasal 1, KHK, hal. 87.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
3
dikembangkan guna menunjang terpenuhinya syarat-syarat tersebut. Kesemua syarat tersebut harus terintegrasi secara utuh dalam pribadi calon imam. Dibutuhkan pengamatan dan penilaian untuk mengetahui apakah syaratsyarat tersebut terpenuhi dalam diri seorang calon imam. Rektor seminari dan para pendamping yang bertugas di seminari perlu mengenal setiap seminaris sejak awal masuk seminari. Pengenalan awal ini sangat berguna agar para seminaris dapat mengikuti pembinaan dengan baik. Selama perjalanan pembinaan di seminari, setiap seminaris juga perlu dievaluasi secara berkala, sejauh mana syarat-syarat untuk menjadi seorang imam sudah terintegrasi di dalam dirinya. Pada saat evaluasi, para pembina, berdasarkan pengamatan mereka, memaparkan penilaian terhadap setiap seminaris binaan mereka. Apabila ditemukan seminaris yang dinilai kurang memenuhi syarat, pada waktu evaluasi tersebut akan dibicarakan secara khusus. Rektor seminari berdasarkan pertimbangan para pembina dan juga karena pengenalannya sendiri atas seminaris, memberikan putusan apakah seminaris yang bersangkutan akan dikeluarkan atau perlu mendapat pembinaan khusus. Dengan demikian, kebijakan yang tepat dalam proses dapat diupayakan secara obyektif. Tujuan kebijakan dalam pembinaan tersebut adalah supaya banyak seminaris yang siap untuk menjadi imam. Secara umum, pengenalan terhadap seminaris dilakukan secara manual dan bahkan terkadang berdasar intuisi para pembina. Metode ini terkadang sangat menyulitkan mengingat banyaknya aspek yang harus dinilai dari setiap seminaris, ditambah lagi kalau jumlah seminarisnya banyak. Obyektivitas penilaian dapat dipertanyakan. Untuk sampai pada penilaian yang obyektif, dibutuhkan sebuah
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
4
sistem analisis terhadap data yang telah dimiliki oleh para pembina. Dengan demikian akan diketahui keakuratan penilaian tersebut berhadapan dengan kriteria penilaian yang harus tercapai. Sebuah sistem analisa membutuhkan data yang telah diolah dengan baik. Dibutuhkan metode yang dapat mendukung proses analisis tersebut. Dengan mempertimbangkan jumlah data seminaris dan sistem penilaian di seminari, maka diperlukan adanya analisa pengelompokan data (cluster analysis). Ada berbagai metode pengelompokan data, di antaranya adalah metode kmeans (k-means clustering) dan metode hirarki (hierarchical clustering). Metode pengelompokan data baik k-means maupun hirarki telah banyak diterapkan dalam berbagai tulisan. Sebagai contoh, metode k-means dapat digunakan untuk pengelompokan hasil evaluasi pembelajaran. 9 Metode yang sama juga dapat digunakan untuk memprediksi nilai mahasiswa. 10 Untuk menilai tingkat kedisiplinan juga dapat menggunakan metode k-means ini. 11 Seperti k-means, metode pengelompokan hirarki juga telah digunakan sebagai metode di beberapa tulisan. Sebagai contoh, pengelompokan hirarki juga dapat digunakan sebagai mesin pencari gambar geometri bangunan datar.12 Selain itu ada juga yang menggunakannya untuk mengidentifikasi penyakit hepatitis. 13 Bukan hanya di
Hertartik Clarasita Devy, “Pengelompokan Hasil Evaluasi Pembelajaran Menggunakan Metode Klastering K-Means Studi Kasus: di Fakultas Sains dan Teknologi Universitas Sanata Dharma”, Skripsi, USD. 10 Tri Rahayu Widiarti, “Implementasi Algoritma K-Means untuk Memprediksi Nilai Mahasiswa Studi Kasus: Mahasiswa Teknik Informatika USD”, Skripsi, USD. 11 Ihya Ulumuddin, “Penggunaan Algoritma K-Means Untuk Menentukan Nilai Kedisiplinan Siswa”, Skripsi, Universitas Islam Negeri, 2012. 12 Astriana Krisma Risky, “Mesin Pencari Gambar Geometri Bangun Datar Menggunakan Agglomerattive Hierarchical Clustering”, Skripsi, USD. 13 Christina Wienda Asrini, “Identifikasi Penyakit Hepatitis dengan Pendekatan Agglomerative Hierarchical Clustering”, Skripsi, USD. 9
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
5
bidang teknik dan kesehatan, metode hierarchical juga digunakan pada bidang sosial ekonomi. Pengelompokan hirarki digunakan juga untuk penaksiran proporsi kemiskinan14. Beberapa contoh dalam tulisan ini menunjukkan bahwa metode pengelompokan data dengan k-means dan hirarki dapat digunakan di berbagai bidang penelitian. Oleh sebab itu kedua metode tersebut kiranya juga mumpuni untuk digunakan pada pengenalan data dan akhirnya kemudian pembentukan sistem rekomendasi bagi rektor dan para pembina di seminari. Berkaitan dengan data yang dibutuhkan, Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang menjadi pilihan penulis. Seminari ini telah berdiri selama lebih kurang 102 tahun. Di seminari ini ada data historis seminaris yang kiranya dapat diolah. Berdasarkan analisis yang dibuat akan diketahui keberhasilan atau kegagalan seorang seminaris, atau kebutuhan pembinaan lebih lanjut terutama dari sisi intelektualnya. Hal ini akan sangat berguna bagi rektor dan proses pembinaan di seminari. Dari pengelompokan data tersebut akan diketahui kriteria para seminaris yang berhasil untuk melanjutkan ke jenjang seminari tinggi. Selain yang berhasil, dapat juga diketahui kriteria seminaris yang akan gagal, atau kemungkinan yang memerlukan pembinaan lebih lanjut. Sisi intelektual (scientia) menjadi fokus utama dalam penelitian ini. Hal ini dikarenakan dalam pembinaan seminaris, sisi intelektual mendapat porsi yang lebih banyak. Selain itu, berkaitan juga dengan kapasitas ketersediaan data yang ada di Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang. Potensi-potensi
Yuridunis Saidah, “Penaksiran Proporsi Kemiskinan di Kabupaten Gersik Menggunakan Metode Hierarhical Bayes pada Small Area Estimation (SAE)”, Skripsi, Universitas Indonesia, 2010. 14
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
6
scientia yang ada pada seminaris dapat diketahui dan dikembangkan. Dengan demikian, upaya ini dapat membantu pembinaan dan pengambilan keputusan bagi keberhasilan para seminaris. Dengan memperhatikan hal-hal tersebut, maka tulisan ini diberi judul “Pengenalan Pola Keberhasilan Seminaris Menggunakan Agglomerative Hierarchical Clustering, Studi Kasus atas Keberhasilan Studi para Seminaris Di Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang”.
1.2
Rumusan Masalah Dari latar belakang yang telah dipaparkan, dapat dikemukakan perumusan
masalah dalam tulisan ini. Rumusan masalah tersebut adalah: sejauh mana metode agglomerative hierarchical clustering mampu mengelompokkan keberhasilan studi para seminaris dengan baik. Bertolak dari kriteria scientia pengelompokan tersebut mencoba melihat kelompok seminaris manakah yang berhasil untuk melanjutkan ke jenjang seminari tinggi, atau yang gagal, serta kelompok mana yang mungkin membutuhkan pembinaan khusus.
1.3
Tujuan Tujuan penulisan ini adalah mendapatkan hasil analisis pengelompokan atas
nilai scientia yang diperoleh para seminaris. Kriteria pengelompokan yang diharapkan adalah kriteria seminaris yang berhasil menyelesaikan studinya, yang gagal, dan seminaris yang mungkin membutuhkan pembinaan khusus. Lebih jauh dari pengelompokan yang dihasilkan, akan dapat diketahui pola keberhasilan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
7
seminaris yang menyelesaikan studinya. Pengelompokan ini kiranya akan sangat berguna dikemudian hari untuk membentuk suatu sistem rekomendasi.
1.4
Batasan Masalah Supaya tulisan ini memiliki titik fokus, maka perlu diberikan batasan-
batasan masalah yang akan diteliti dan dibahas dalam tulisan ini. 1. Variabel respon dalam tulisan ini adalah penilaian terhadap seminaris oleh para pembina seminari bagi seminaris dengan melihat perkembangan intelektual (scientia) yang ada di dalam diri seminaris tersebut. 2. Data penilaian terhadap kriteria potensi intelektual formal yang ada di dalam diri setiap seminaris di Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang guna memenuhi syarat keberhasilan scientia seminaris adalah variabel-variabel pendukung (auxiliary variable) untuk metode agglomerative hierarchical clustering yang akan digunakan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
2
BAB II
LANDASAN TEORI
Pembahasan atas suatu topik penelitian tentu membutuhkan landasan teori yang tepat. Agar sebuah penelitian dapat berhasil dibutuhkan referensi sebagai landasan teorinya. Landasan teori tersebut berisi tentang Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang sebagai tempat sumber data penelitian, Principal Component Analysis untuk pemilihan variabel dari data set yang ada, dan Agglomerative Hierarchical Clustering sebagai algoritma yang digunakan untuk pengelompokan data dari variabel yang telah dipilih. Selanjutnya pada bagian akhir bab ini akan dipaparkan tentang Uji Akurasi Data.
2.1
Seminari Menengah St. Petrus Canisius Setiap calon imam Gereja Katolik, berkewajiban untuk mengikuti
serangkaian pembinaan. Seminari menengah menjadi tempat formal pertama pembinaan seseorang dalam proses menjadi seorang imam. Di seminari, diselenggarakan pendidikan keagamaan khusus bersama dengan pendidikan humaniora dan ilmiah dalam konteks pembinaan panggilan. 15 Dalam Gereja Katolik, seminari-seminari yang didirikan secara legitim, menurut hukum, mempunyai status badan hukum dalam Gereja.16 Sebagai tempat pembinaan,
15 16
Kanon 234, pasal 1, KHK, hal. 87. Kanon 238, pasal 1, KHK, hal. 88.
8
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
9
seminari dikepalai oleh seorang rektor. Selain rektor, ada juga wakil rektor jika diperlukan, ekonom, dan para pengajar yang memberikan berbagai pelajaran yang terkoordinasi secara tepat.17 Untuk pembinaan spiritual, di seminari ada seorang direktur spiritual18 dan bapa pengakuan19. Di Indonesia, secara umum dikenal seminari menengah untuk tingkat Sekolah Menengah Atas (SMA).20 Di seminari menengah ini, setiap calon imam dibina dan dididik, baik dari sisi intelektual, mental, sosial, dan spiritualnya. Kriteria tertentu ditetapkan guna mengukur keberhasilan dan kelayakan seorang seminaris untuk melanjutkan ke jenjang berikutnya. Setiap pembina seminari berhak memberikan penilaian, melihat dan mengamati perkembangan seminaris binaannya. Penilaian diberikan berdasarkan kriteria yang ada. Catatan-catatan khusus dibuat sebagai bahan pertimbangan kelayakan perkembangan seorang seminaris. Pada saat yang telah ditentukan bersama, ditetapkan apakah seorang seminaris layak atau tidak untuk melanjutkan ke jenjang berikutnya, atau diperlukan pembinaan khusus. Salah satu seminari menengah yang ada di Indonesia adalah Seminari Menengah St. Petrus Canisius, Mertoyudan – Magelang (sering dikenal dengan nama Seminari Menengah Mertoyudan). Seminari ini telah didirikan sejak 30 Mei
17
Kanon 239, pasal 1, KHK, hal. 88. Kanon 239, pasal 2, KHK, hal. 88. 19 Kanon 240, pasal 1, KHK, hal. 88. 20 Seminari menengah dapat digolongkan menjadi tiga, yaitu seminari menengah tingkat SMP, seminari menengah tingkat SMA, dan seminari menengah KPA (Kelas Persiapan Atas). Seminari menengah KPA adalah bagi mereka yang memutuskan untuk menjadi calon imam setelah tamat SMA, biasanya dilaksanakan selama satu atau dua tahun. 18
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
10
1912 (sesuai dengan izin resmi dari tahta suci Roma untuk memulai lembaga pendidikan calon imam di Indonesia). Seminari Menengah Mertoyudan memiliki visi untuk menjadi komunitas pendidikan calon imam tingkat menengah yang handal dan berkompeten dalam mengembangkan
sanctitas
(kesucian),
sanitas
(kesehatan),
dan
scientia
(pengetahuan) ke arah imamat yang tanggap terhadap kebutuhan zaman. Seminari Menengah Mertoyudan bertujuan untuk mendampingi seminaris dalam mengolah hidup rohani, panggilan, kegerejaan dan kemasyarakatan, agar mampu mengambil keputusan sesuai dengan panggilan hidupnya. Pendampingan bagi seminaris juga tertuju pada mengembangkan diri menjadi pribadi yang sehat secara fisik maupun psikis, dewasa secara manusiawi maupun kristiani, sehingga seminaris memiliki kesiapsiagaan untuk menanggapi panggilan Tuhan. Seminari Menengah Mertoyudan melaksanakan kegiatan pendidikan dan pembelajaran secara efektif dan efisien agar kompetensi seminaris berkembang secara optimal sehingga seminaris memiliki bekal yang memadai untuk melanjutkan ke jenjang pendidikan imamat berikutnya. Bidang pendidikan ini mendapat tekanan yang sangat penting di seminari ini. Data dari hasil perolehan nilai dalam bidang pendidikan ini yang akan digunakan sebagai bahan penelitian tulisan ini.
2.2
Principal Component Analysis Sebelum melangkah ke proses dengan menggunakan agglomerative
hierarchical clustering, data perolehan dari seminari akan melalui proses feature
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
11
extraction21 dengan menggunakan principal component analysis (PCA). PCA menghasilkan kombinasi linear dari variabel-variabel yang diperoleh dari mereduksi variabel asli yang banyak. Di dalam proses mereduksi, diperoleh variabel yang lebih sedikit. Namun demikian variabel-variabel yang dihasilkan masih mengandung informasi yang termuat dalam data asli 22. Dari sisi teknis, PCA dapat dimengerti sebagai suatu teknik mereduksi data multivariat (multivariable) yang mengubah (mentranformasi) suatu matriks data asli menjadi kombinasi linier yang lebih sedikit, tetapi menyerap sebagian besar jumlah varian dari data asli tersebut. Atau secara singkat dapat dikatakan bahwa tujuan PCA adalah menjelaskan sebanyak mungkin jumlah varian data asli dengan menggunakan komponen utama (principal component) atau vektor sesedikit mungkin. Untuk dapat menggunakan PCA dengan tepat, diperlukan pengetahuan dasar tentang perhitungan matematika. Hal ini dibutuhkan karena dalam perhitungan, PCA berkaitan dengan statistik dan aljabar matriks. Berikut ini adalah algoritma dalam penggunaan PCA23: 1. Matriks X adalah hasil pengurangan rata-rata dari setiap dimensi data pada matriks data. 2. Matriks 𝐶𝑥 adalah covariance matrix dari matriks X. 3. Hitung eigenvector dan eigenvalue dari 𝐶𝑥 .
21
Ekstraksi fitur adalah proses pembentukan satu set fitur baru dari fitur asli melalui beberapa pemetaan fungsional. Tujuan ekstraksi fitur ini adalah untuk mencari satu set fitur baru yang minimum melalui beberapa transformasi menurut beberapa ukuran kinerja (Nong Ye, (Ed), “The Handbook of Data Mining”, Lawrence Erlbaum Associates, New Jersey, 2003, hal. 411). 22 Ibid. hal. 412. 23 Lindsay I Smith, “A Tutorial on Principal Component Analysis”. Available at: http://www.ce.yildiz. edu.tr/personal/songul/file/1097/principal_components.pdf [Diakses tanggal 5 Juli 2014].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
12
4. Pilih component dan bentuk vector feature dan principal component dari eigenvector yang memiliki eigenvalue paling besar diambil. 5. Menurunkan data set yang baru. Sebagai contoh, terdapat data seperti pada tabel 2.1 di bawah ini. Data teks tersebut akan diproses dengan menggunakan PCA.
Tabel 2.1 Contoh data untuk PCA Data X Y 87 89 a 84 76 b 83 70 c 80 74 d 82 83 e
Data yang sudah dipersiapkan ini akan dihitung dengan mengurangi setiap data dengan rata-ratanya. Ini dilakukan karena PCA memerlukan masukan data yang mempunyai sifat zero-mean pada setiap fiturnya. Set data X dengan dimensi MxN, dimana M adalah jumlah data dan N adalah jumlah fitur, akan tampak sebagai berikut: 𝑥11 𝑥21 𝑋=[𝑥 𝑖1 𝑥𝑀1
𝑥12 𝑥1𝑗 … … … … 𝑥𝑀2 𝑥𝑀𝑗
𝑥𝑗𝑁 𝑥2𝑁 𝑥𝑖𝑁 ] 𝑥𝑀𝑁
Untuk fitur ke-𝑗, semua nilai pada kolom tersebut dikurangi rata-ratanya. Rumus yang digunakan adalah24: 𝑥′𝑖𝑗 = 𝑥𝑖𝑗 − 𝑥̅𝑗
(2.1)
Eko Prasetyo, “Data Mining: Konsep Dan Aplikasi Menggunakan Matlab”, Andi, Yogyakarta, 2012, hal. 37. 24
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
13
Keterangan:
𝑖 = 1,2, … , 𝑀 dan 𝑗 adalah kolom ke-𝑗. Rumus ini menerangkan bahwa 𝑥′ pada 𝑖𝑗 adalah hasil dari pengurangan
data 𝑥𝑖𝑗 dengan rata-rata data 𝑥 di setiap kolom 𝑗 (𝑥̅𝑗 ). Dengan cara ini, total nilai baik itu kolom 𝑥 maupun 𝑦 adalah 0. Hasil yang didapat dari contoh data pada langkah 1 di atas (algoritma PCA) adalah sebagai berikut:
Tabel 2.2 Zero-mean untuk PCA Data X Y 3.8 10.6 a 0.8 -2.4 b -0.2 -8.4 c -3.2 -4.4 d -1.2 4.6 e
Data dari hasil perhitungan zero-mean (matriks X) dihitung untuk mendapatkan covariance, yaitu 𝐶𝑥 . Rumus yang digunakan adalah25: 1
𝐶𝑥 = 𝑀 𝑋 𝑇 𝑋
(2.2)
Keterangan:
𝐶𝑥 : covariance matrix
𝑀 : jumlah data
𝑋 𝑇 : transpose matriks 𝑋 Kembali pada contoh data yang telah dihitung di atas, apabila dihitung
covariance matrix-nya maka data hasilnya adalah sebagai berikut:
25
Ibid.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
14
Tabel 2.3 Covariance untuk PCA X Y X 5.36 9.72 Y 9.72 45.84 Matriks 𝐶𝑥 memiliki ciri-ciri sebagai berikut 26: 1. 𝐶𝑥 adalah matriks simetris bujur sangkar yang berukuran NxN. 2. Bagian diagonal utama (dari kiri atas ke kanan bawah) adalah nilai varian masing-masing fitur sesuai indeks kolomnya. 3. Bagian selain diagonal utama adalah kovarian di antara pasangan dua fitur yang bersesuaian. Dengan demikian, matriks 𝐶𝑥 mengandung kovarian di antara semua pasangan yang mungkin dari fitur data matriks 𝑋. Nilai kovarian merefleksikan noise dan redundansi pada fitur27: 1. Dalam diagonal utama diasumsi bahwa nilai tinggi berkorelasi dengan struktur data yang penting. 2. Selain diagonal utama, nilai jarak yang besar menandakan redundansi yang tinggi. Mengingat kembali tujuan PCA adalah (1) untuk meminimalkan redudansi yang diukur oleh nilai jarak dari kovarian, dan (2) memaksimalkan nilai pemetaan keluaran yang diukur dengan varian, maka jika 𝑃𝐶𝐴𝑥 adalah matriks data hasil pemetaan dan 𝐶𝑥 adalah matriks kovarian dari 𝑋, yang diharapkan dari PCA adalah28:
26
Ibid. Ibid. 28 Ibid. hal. 38. 27
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
15
1. Semua elemen selain diagonal utama dalam 𝐶𝑥 harus nol. 𝐶𝑥 harus berbentuk matriks diagonal. Hal ini juga berarti bahwa 𝑃𝐶𝐴𝑥 adalah matriks terdekorelasi. 2. Peletakan dimensi dalam 𝑃𝐶𝐴𝑥 dari kiri ke kanan diturunkan menurun (descending). Harapan 𝑃𝐶𝐴𝑥 dapat dicapai dengan menghitung eigenvector dan eigenvalue dari covariance (matriks 𝐶𝑥 ). Yang dimaksud dengan eigenvalue adalah sebuah bilangan skalar dan eigenvector adalah sebuah matriks yang keduanya dapat mendefinisikan matriks A. Jika A adalah matriks m x m, maka setiap skalar λ memenuhi persamaan: 𝐴𝑥 = 𝜆𝑥
(2.3)
untuk 𝑚 𝑥 1 vektor 𝑥 ≠ 0, disebut eigenvalue dari A. Vektor x disebut eigenvector dari A yang berhubungan dengan eigenvalue 𝜆, dan persamaan (2.3) diatas disebut persamaan eigenvalue-eigenvector A. Kadang-kadang eigenvalue dan eigenvector juga dinyatakan sebagai (latents root and vectors) atau karekteristik roots dan vektor. Persamaan (2.3) dapat juga dituliskan sebagai (𝐴 − 𝜆𝐼 )𝑥 = 0
(2.4)
Setiap nilai eigenvalue 𝜆 harus memenuhi persamaan determinan, |𝐴 − 𝜆𝐼 | = 0
(2.5)
yang dikenal sebagai persamaan karakteristik A. Kembali pada data covariance yang telah ditemukan dari contoh di atas maka dapat di cari eugenvalue-nya. Hasil covariance pada tabel 2.4 dianggap sebagai matriks A. 5.36 𝐴=[ 9.72
9.72 ] 45.84
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
16
Karakteristik determinan dari matriks A adalah: (5.36 − 𝜆) 9.72 |𝐴 − 𝜆𝐼 | = | | 9.72 (45.84 − 𝜆)
Karena persamaan karakteristik |𝐴 − 𝜆𝐼 | = 0 maka: ∴ (5.36 − 𝜆)(45.84 − 𝜆) − (9.72 ∗ 9.72) = 0 ∴ 28.72 − 5.36𝜆 − 45.84𝜆 + 𝜆2 − 94.47 = 0 ∴ 28.72 − 51.2𝜆 + 𝜆2 − 94.47 = 0 ∴ 𝜆2 − 51.2𝜆 − 65.74 = 0 Sampai pada tahap ini kemudian dapat dicari nilai eigenvalue-nya dari nilai 𝜆. Namun dengan perhitungan manual tentu akan mengalami kesulitan. Dalam tulisan ini akan digunakan program Matlab sebagai alat bantu perhitungan. Dengan menggunakan Matlab maka ditemukan eigenvector dan eigenvalue dari data pada tabel 3 di atas, yaitu:
Gambar 2.1 Hasil eigenvector dan eigenvalue dengan Matlab
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
17
Dari perhitungan dengan menggunakan Matlab ini diketahui: −0.975 0.222] 𝑒𝑖𝑔𝑒𝑛𝑣𝑒𝑐𝑡𝑜𝑟 = [ 0.222 0.975 3.1470 0 ] 𝑒𝑖𝑔𝑒𝑛𝑣𝑎𝑙𝑢𝑒 = [ 0 48.0530 Sampai pada tahap ini telah ditemukan eigenvalue dan eigenvector. Selanjutnya dapat dilakukan feature vector. Pembentukan feature vector-nya adalah dengan mengambil diagonal utama dari 𝑒𝑖𝑔𝑒𝑛𝑣𝑎𝑙𝑢𝑒 dengan urutan dari besar ke kecil (descending). Kemudian, nilai eigenvector disusun mengikuti indeks eigenvalue yang telah di-sort secara descending. Hasilnya adalah feature vector, yaitu [
0.222 ]. 0.975 Pada tahap terakhir, berdasarkan feature vector yang telah didapat,
diturunkan data set yang baru. Caranya adalah feature vector tersebut dikalikan dengan data matriks 𝑋 (Tabel 2.3 Zero-mean untuk PCA). 𝑃𝐶𝐴𝑥 = 𝑋 𝑥 𝐹𝑒𝑎𝑡𝑢𝑟𝑒 𝑉𝑒𝑐𝑡𝑜𝑟
(2.6)
Hasil data set yang baru adalah sebagai berikut:
Tabel 2.4 Data final untuk contoh PCA Data Z a 11.1786 b -2.1624 c -8.2344 d -5.0004 e 4.2186
2.3
Agglomerative Hierarchical Clustering Seminari Menegah Mertoyudan adalah tempat penelitian ini. Dengan
mengambil sisi scientia (pengetahuan) sebagai salah satu tekanan pembinaan di
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
18
seminari tersebut, tulisan ini dibuat. Data perolehan dari seminari menjadi sumber tulisan ini. Data yang diperoleh diolah terlebih dahulu supaya dapat dipergunakan dengan baik. Berkaitan dengan pengolahan data, di dalam data mining ada beberapa metode yang dapat digunakan. Satu di antara metode yang ada adalah clustering. Metode clustering ini yang akan digunakan dalam pengolahan data tersebut. Clustering dapat dimengerti sebagai metode yang digunakan untuk pengelompokan obyek yang sama menjadi satu kelompok (cluster), sedangkan obyek yang berbeda di cluster yang berbeda pula. Cluster bertujuan untuk menemukan kemiripan (similarity) antara data. Kemiripan yang dimaksud berkaitan dengan karakteristik yang ditemukan di dalam data tersebut. Dengan demikian akan terbentuk kelompok-kelompok data di mana masing-masing kelompok mengandung data yang memiliki kedekatan karakteristik. 29 Dapat dikatakan ada dua jenis pendekatan dengan menggunakan clustering, yaitu partition clustering dan hierarchical clustering. Dengan menggunakan pendekatan partition clustering, pertama ditentukan lebih dulu jumlah cluster, kemudian data dipisahkan ke dalam cluster-cluster tersebut berdasarkan kemiripannya. Algoritma yang menggunakan pendekatan partition clustering contohnya adalah k-means. Sejalan dengan partition clustering, hierarchical clustering juga membuat pengelompokkan data. Namun, sesuai dengan namanya, pendekatan hierarchical clustering, pengelompokan data dibuat berdasarkan tingkatannya. Dengan cara ini
Jiawei Han, Micheline Kamber, “Data mining Concepts and Techniques”, Morgan Kaufmann, USA, 2011, hal. 20. 29
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
19
dapat dihasilkan suatu kumpulan partisi yang berurutan dengan visualisasi dendogram. Obyek dengan tingkat similarity atau kemiripan yang tinggi akan menjadi satu kelompok, begitu juga dengan data-data lain yang memiliki tingkat kemiripan tinggi akan dijadikan satu kelompok. Secara singkat dapat dikatakan bahwa metode hierarchical clustering bekerja untuk mengelompokkan obyek data ke dalam struktur cluster berdasarkan tingkat kemiripannya. Pengelompokan ini bertujuan untuk menentukan kemiripan antar data yang memiliki karakteristik yang serupa. Sehingga, dengan menggunakan hierarchical clustering data yang memiliki kemiripan berada pada hierarki yang sama, yang berbeda pada hierarki yang berbeda pula. Metode hierarchical clustering terbagi dalam dua bagian, yaitu agglomerative (bottom-up) dan divisive (top-down). Namun yang dipilih dalam penelitian ini adalah pendekatan agglomerative hierarchical clustering. Pemilihan ini berdasarkan pada; pertama algoritma penggunaan hierarchical clustering tampaknya sederhana. Kedua, pengelompokan data dapat dilihat dengan menggunakan dendogram. Ketiga, penentuan jumlah cluster di awal tidak diperlukan. Selain itu, alasan yang terakhir adalah karena agglomerative hierarchical clustering menggunakan desain bottom-up sehingga pengelompokkan data dimulai dari yang kecil ke arah pengelompokan yang besar. Desain ini sangat membantu untuk proses pengenalan similaritas dan pengelompokan data. Metode agglomerative hierarchical clustering (AHC) menggunakan strategi desain bottom-up yang dimulai dengan meletakkan setiap obyek sebagai sebuah cluster tersendiri (atomic cluster) dan selanjutnya menggabungkan atomic
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
20
cluster – atomic cluster tersebut menjadi cluster yang lebih besar dan lebih besar lagi sampai akhirnya semua obyek menyatu dalam sebuah cluster atau proses berhenti jika telah mencapai batasan kondisi tertentu. Dengan pengertian lain, agglomerative melakukan proses clustering dari n cluster menjadi satu kesatuan cluster. Dengan pengertian ini, setiap data pada awalnya dapat dianggap sebagai sebuah cluster (atomic cluster). Ini berarti jika terdapat jumlah data sebanyak n, dan k dianggap sebagai jumlah cluster, maka besarnya n = k. Pada langkah selanjutnya, dihitung jarak antar cluster-nya. Sebelum pembentukan sebuah cluster perlu dihitung jarak kemiripan antara obyek data. Ada beberapa cara untuk mengetahui kemiripan data. Satu di antara cara yang ada adalah similarity matrix dengan perhitungan euclidean distance. Euclidean distance didevinisikan sebagai berikut: 𝑑 (𝐴, 𝐵) = √(|𝐴1 − 𝐵1 |2 + |𝐴2 − 𝐵2 |2 + |𝐴3 − 𝐵3 |2 + … + |𝐴𝑖 − 𝐵𝑖 |2 ) (2.6) atau dapat disingkat dengan30: 𝑛
𝑑(𝐴, 𝐵) = √∑(𝐵𝑖 − 𝐴𝑖 )2 𝑖=1
(2.7) Keterangan:
𝑛 adalah jumlah atribut atau dimensi
𝐴𝑖 dan 𝐵𝑖 adalah data
30
Eko Prasetyo, “…Konsep Dan Aplikasi …”, op. cit. hal. 216.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
21
Dalam hierarchical clustering ada beberapa metode untuk perhitungan jarak antar cluster, di antaranya adalah single linkage, average linkage, dan complete linkage.31 Berikut ini adalah pendefinisian perhitungan jarak-jarak tersebut. 1. Single Linkage Perhitungan dengan teknik single linkage adalah untuk mencari jarak minimum antar
cluster. Dengan single linkage jarak antara dua cluster
didefinisikan sebagai berikut: 𝑑(𝐴, 𝐵) = min {𝑆𝑥,𝑦 } 𝑥𝜖𝐴,𝑦∈𝐵
(2.8) Keterangan:
{𝑆𝑥,𝑦 } adalah jarak antara data 𝑥 dan y dari masing-masing cluster A dan B.
2. Average Linkage Untuk menghitung jarak rata-rata antar cluster digunakan teknik average linkage. Teknik ini didefinisikan sebagai: 𝑑 (𝐴, 𝐵) =
1 ∑ ∑ 𝑆{𝑥, 𝑦} 𝑛𝐴 𝑛𝐵 𝑥∈𝐴 𝑦∈𝐵
(2.9) Keterangan:
𝑛𝐴 dan 𝑛𝐵 adalah banyaknya data dalam cluster A dan B.
3. Complete Linkage
Eko Prasetyo, “Data Mining: Pengolahan Data Menjadi Informasi Menggunakan Matlab”, Andi, Yogyakarta, 2014, hal. 246-247. 31
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
22
Dengan menggunakan teknik complete linkage akan diketahui jarak maksimum antar cluster, didefinisikan sebagai berikut: 𝑑 (𝐴, 𝐵) = max {𝑆𝑥,𝑦 } 𝑥∈𝐴,𝑦∈𝐵
(2.10) Keterangan:
{𝑆𝑥,𝑦 } adalah jarak antara data 𝑥 dan y dari masing-masing cluster A dan B. Dengan menggunakan formula perhitungan-perhitungan di atas akan
diketahui jarak antar cluster. Jarak minimum antar data yang ditemukan pertama akan menjadi cluster yang pertama pula. Perhitungan selanjutnya juga akan dilakukan untuk pembentukan cluster selanjutnya. Masing-masing perhitungan dapat menghasilkan dendrogram. Pada penelitian ini yang akan digunakan adalah single linkage.
2
J a r ak
1,5 1
0,5 0
a
b
c
e
d
f
Data
Gambar 2.2 Dendrogram
Dari penjelasan yang telah dipaparkan di atas, maka secara singkat AHC dapat dimengerti sebagai metode yang dimulai dengan setiap n cluster yang membentuk cluster masing-masing. Kemudian dua cluster dengan jarak terdekat bergabung. Selanjutnya cluster yang lama akan bergabung dengan cluster yang
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
23
sudah ada dan membentuk cluster baru.Hal ini tetap memperhitungkan jarak kedekatan antar cluster. Proses akan berulang hingga akhirnya terbentuk satu cluster yang memuat keseluruhan cluster.
e
f d c
d
b
e b
a c
a
Gambar 2.3 Cluster hasil AHC
Penggunaan algoritma agglomerative hierarchical clustering untuk mengelompokkan n obyek data adalah sebagai berikut32 : 1. Hitung matriks jarak antar data. 2. Ulangi langkah 3 dan 4 hingga hanya satu kelompok yang tersisa. 3. Gabungkan dua kelompok terdekat berdasarkan parameter kedekatan yang ditentukan. 4. Ubah matriks jarak antar data untuk merepresentasikan kedekatan di antara kelompok baru dan kelompok yang masih tersisa. 5. Selesai.
Pang-Ning Tan, Michael Steinbach, Vipin Kumar, “Introduction to Data Mining”, Pearson Education. Inc., Boston, 2006, hal. 516. 32
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
24
Sebagai contoh, terdapat beberapa data seperti dapat dilihat pada tabel 2.6 di bawah ini. Data ini akan dibentuk dengan menggunakan AHC dengan perhitungan kemiripan obyek data menggunakan euclidean distance dan perhitungan jarak cluster dengan single linkage, average linkage, dan complate linkage.
Tabel 2.5 Contoh data perhitungan AHC Data X Y a 1 1 b 4 1 c 1 2 d 3 4 e 5 4
Dengan menggunakan euclidean distance setiap obyek data tersebut dihitung similaritasnya sebagai berikut: 𝑑(𝑎, 𝑏) = √(|4 − 1|2 + |1 − 1|2 ) = 3 𝑑 (𝑎, 𝑐 ) = √(|1 − 1|2 + |2 − 1|2 ) = 1 𝑑(𝑎, 𝑑 ) = √(|3 − 1|2 + |4 − 1|2 ) = 3,61 𝑑(𝑎, 𝑒) = √(|5 − 1|2 + |4 − 1|2 ) = 5 𝑑 (𝑏, 𝑐 ) = √(|1 − 4|2 + |2 − 1|2 ) = 3,16 𝑑 (𝑏, 𝑑 ) = √(|3 − 4|2 + |4 − 1|2 ) = 3,16 𝑑 (𝑏, 𝑒) = √(|5 − 4|2 + |4 − 1|2 ) = 3,16 𝑑(𝑐, 𝑑 ) = √(|3 − 1|2 + |4 − 2|2 ) = 2,83 𝑑 (𝑐, 𝑒) = √(|5 − 1|2 + |5 − 2|2 ) = 4,47 𝑑 (𝑑, 𝑒) = √(|5 − 3|2 + |4 − 4|2 ) = 3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
25
Berdasarkan perhitungan tersebut dapat dibentuk similarity matrix seperti seperti pada tabel 2.7. Berdasarkan perhitungan euclidean distance, similarity matrix ini bersifat positif, simetris, dan triangle inequality.
Tabel 2.6 Similarity matrix b c 0 3 1 3 0 3.16 1 3.16 0 3.61 3.16 2.83 5 3.16 4.47
a a b c d e
d 3.61 3.16 2.83 0 2
e 5 3.16 4.47 2 0
Karena similarity matrix ini bersifat simetris, matriks ini dapat juga dituliskan seperti pada tabel 2.8 berikut dan menjadi matriks jarak.
a b c d e
Tabel 2.7 Matriks jarak a b c 0 3 1 0 3.16 0
d 3.61 3.16 2.83 0
e 5 3.16 4.47 2 0
1. Single Linkage Selanjutnya dari tabel 2.8 dapat dilihat jarak obyek data yang paling dekat, yaitu a dan c, berjarak 1. Kedua obyek data ini menjadi satu cluster pertama. Kemudian untuk menemukan cluster berikutnya dicari jarak antar obyek data dari sisa yang ada (b, d, e) dan berada paling dekat dengan cluster (ac). Untuk pencarian jarak ini pertama digunakan single linkage.
𝑑(𝑎𝑐)𝑏 = min{𝑑𝑎𝑏 , 𝑑𝑐𝑏 } = min{3 , 3.16} = 3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
𝑑(𝑎𝑐)𝑑 = min{𝑑𝑎𝑑 , 𝑑𝑐𝑑 } = min{3.61 , 2.83} = 2.83
𝑑(𝑎𝑐)𝑒 = min{𝑑𝑎𝑒 , 𝑑𝑐𝑒 } = min{5 , 4.47} = 4.47
26
Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian dengan cluster a dan c dihapus dan ditambahkan baris dan kolom untuk cluster (ac), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.8 Matriks jarak pertama single linkage ac b d e 0 3 2.83 4.47 ac 0 3.16 3.16 b 0 2 d 0 e
Berdasar pada matriks jarak pertama (tabel 2.9), dipilih kembali jarak terdekat antar cluster. Ditemukan cluster (de) yang paling dekat, yaitu bernilai 2. Kemudian dihitung jarak dengan cluster yang tersisa, (ac), dan b.
𝑑(𝑑𝑒)(𝑎𝑐) = min{𝑑𝑑𝑎 , 𝑑𝑑𝑐 , 𝑑𝑒𝑎 , 𝑑𝑒𝑐 } = min{3.61 , 2.83 , 5 , 4.47 } = 2,83
𝑑(𝑑𝑒)𝑏 = min{𝑑𝑑𝑏 , 𝑑𝑒𝑏 } = min{3.16 , 3.16} = 3.16 Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian
dengan cluster d dan e dihapus dan ditambahkan baris dan kolom untuk cluster (de), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.9 Matriks jarak kedua single linkage ac b de 0 3 2.83 ac 0 3.16 b 0 de
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
27
Berdasar pada matriks jarak kedua (tabel 2.10), dipilih kembali jarak terdekat antar cluster. Ditemukan cluster (acde) yang paling dekat, yaitu bernilai 2.83. Kemudian dihitung jarak dengan cluster yang tersisa, yaitu b.
𝑑(𝑎𝑐𝑑𝑒)𝑏 = min{𝑑𝑎𝑏 , 𝑑𝑐𝑏 , 𝑑𝑑𝑏 , 𝑑𝑒𝑏 } = min{3 , 3,16 , 3.16 , 3.16} = 3 Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian
dengan cluster (ac) dan (de) dihapus dan ditambahkan baris dan kolom untuk cluster (acde), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.10 Matriks jarak ketiga single linkage acde b 0 3 acde 0 b
Dengan demikian proses iterasi perhitungan jarak untuk pembentukan cluster sudah selesai karena cluster sudah tersisa satu. Jadi cluster (acde) dan (b) digabung menjadi satu, yaitu cluster (acdeb) dengan jarak terdekat adalah 3. Berikut ini adalah hasil dendrogram hasil AHC dengan single linkage:
Gambar 2.4 Dendrogram single linkage untuk 5 obyek data
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
28
2. Average Linkage Menggunakan average linkage akan dicari jarak antar cluster dengan menghitung nilai rata-rata pasangan setiap cluster. Dengan tetap menggunakan tabel matriks jarak (tabel 2.8), perhitungan average linkage ini dilakukan. Pada awal perhitungan, cluster (ac) tetap digunakan sebagai cluster pertama karena jarak antar obyek yang paling dekat. Berikut ini akan dilakukan perhitungan jarak antara cluster (ac) dengan b, d, dan e. 3+3.16
𝑑(𝑎𝑐)𝑏 = average{𝑑𝑎𝑐 , 𝑑𝑐𝑏 } = average{3 , 3.16} =
𝑑(𝑎𝑐)𝑑 = average{𝑑𝑎𝑑 , 𝑑𝑐𝑑 } = average{3.61 , 2.83} =
𝑑(𝑎𝑐)𝑒 = average{𝑑𝑎𝑒 , 𝑑𝑐𝑒 } = average{5 , 4,47} =
2
= 3.08
3.61+2.83
5+4.47 2
2
= 3.22
= 4.73
Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian dengan cluster a dan c dihapus dan ditambahkan baris dan kolom untuk cluster (ac), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.11 Matriks jarak pertama average linkage ac b d e 0 3.08 3.22 4.73 ac 0 3.16 3.16 b 0 2 d 0 e
Berdasar pada matriks jarak pertama (tabel 2.12), dipilih kembali jarak terdekat antar cluster. Ditemukan cluster (de) yang paling dekat, yaitu bernilai 2. Kemudian dihitung jarak dengan cluster yang tersisa, (ac), dan b.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
𝑑(𝑑𝑒)(𝑎𝑐) = average{𝑑𝑑𝑎 , 𝑑𝑑𝑐 , 𝑑𝑒𝑎 , 𝑑𝑒𝑐 } = average{3.61 , 2.83 , 5, 4.47} = 3.61+ 2.83+ 5+ 4.47 4
29
= 3.97
𝑑(𝑑𝑒)𝑏 = average{𝑑𝑑𝑏 , 𝑑𝑒𝑏 } = average{3.16 , 3.16} =
3.16+ 3.16 2
= 3.16
Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian dengan cluster d dan e dihapus dan ditambahkan baris dan kolom untuk cluster (de), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.12 Matriks jarak kedua average linkage ac b de 0 3.08 3.97 ac 0 3.16 b 0 de
Berdasar pada matriks jarak kedua (Tabel 2.13), dipilih kembali jarak terdekat antar cluster. Ditemukan cluster (ac) dengan b yang paling dekat, yaitu bernilai 3.08. Kemudian dihitung jarak dengan cluster yang tersisa, (de).
𝑑(𝑎𝑐𝑏)(𝑑𝑒) = average{𝑑𝑎𝑑 , 𝑑𝑎𝑒 , 𝑑𝑐𝑑 , 𝑑𝑐𝑒 , 𝑑𝑏𝑑 , 𝑑𝑏𝑒 } = average{3.61 , 5 , 2.83 , 4.47, 3.16, 3.16} =
3.61+ 5+ 2.83+ 4.47+ 3.16+ 3.16 6
= 3.7
Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian dengan cluster (ac) dan b dihapus dan ditambahkan baris dan kolom untuk cluster (acb), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.13 Matriks jarak ketiga average linkage acb de 0 3.7 acb 0 de
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
30
Dengan demikian proses iterasi perhitungan jarak untuk pembentukan cluster sudah selesai karena cluster sudah tersisa satu. Jadi cluster (acb) dan (de) digabung menjadi satu, yaitu cluster (acbde) dengan jarak rata-rata adalah 3.7. Berikut ini adalah hasil dendrogram hasil AHC dengan single linkage:
Gambar 2.5 Dendrogram average linkage untuk 5 obyek data
3. Complete Linkage Penghitungan jarak dengan complete linkage akan dicari jarak antar cluster dengan yang paling jauh. Dengan tetap menggunakan tabel matriks jarak (tabel 2.8), perhitungan complete linkage ini dilakukan. Pada awal perhitungan, cluster (ac) tetap digunakan sebagai cluster pertama karena jarak antar obyek yang paling dekat, yaitu 1. Berikut ini akan dilakukan perhitungan jarak antara cluster (ac) dengan b, d, dan e.
𝑑(𝑎𝑐)𝑏 = max{𝑑𝑎𝑏 , 𝑑𝑐𝑏 , } = max{3 , 3.16} = 3.16
𝑑(𝑎𝑐)𝑑 = max{𝑑𝑎𝑑 , 𝑑𝑐𝑑 , } = max{3.61 , 2.83} = 3.61
𝑑(𝑎𝑐)𝑒 = max{𝑑𝑎𝑒 , 𝑑𝑐𝑒 , } = max{5 , 4.47} = 5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
31
Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian dengan cluster a dan c dihapus dan ditambahkan baris dan kolom untuk cluster (ac), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.14 Matriks jarak pertama complete linkage ac b d e 0 3.16 3.61 5 ac 0 3,16 3,16 b 0 2 d 0 e
Berdasar pada matriks jarak pertama (tabel 2.15), dipilih kembali jarak terdekat antar cluster. Ditemukan cluster (de) yang paling dekat, yaitu bernilai 2. Kemudian dihitung jarak dengan cluster yang tersisa, (ac), dan b.
𝑑(𝑑𝑒)(𝑎𝑐) = max{𝑑𝑑𝑎 , 𝑑𝑑𝑐 , 𝑑𝑒𝑎 , 𝑑𝑒𝑐 } = max{3.61 , 2.83 , 5 , 4.47} = 5
𝑑(𝑑𝑒)𝑏 = max{𝑑𝑑𝑏 , 𝑑𝑒𝑏 } = max{3.16 , 3.16} = 3.16 Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian
dengan cluster d dan e dihapus dan ditambahkan baris dan kolom untuk cluster (de), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.15 Matriks jarak kedua complete linkage ac b de 0 3.16 5 ac 0 3,16 b 0 de
Berdasar pada matriks jarak kedua (tabel 2.16), dipilih kembali jarak terdekat antar cluster. Ditemukan cluster (acb) dan cluster (deb), yaitu bernilai 3.16. Karena kedua cluster tersebut berada pada obyek yang sama, dapat dipilih satu di
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
32
antaranya. Dipilih cluster (deb). Kemudian dihitung jarak dengan cluster yang tersisa, (ac).
𝑑(𝑑𝑒𝑏)(𝑎𝑐) = max{𝑑𝑑𝑎 , 𝑑𝑑𝑐 , 𝑑𝑒𝑎 , 𝑑𝑒𝑐 , 𝑑𝑏𝑎 , 𝑑𝑏𝑐 } = max{3.61 , 2.83 , 5 , 4.47 , 3 , 3.16} = 5 Kemudian baris-baris dan kolom-kolom matriks jarak yang bersesuaian
dengan cluster (ac) dan b dihapus dan ditambahkan baris dan kolom untuk cluster (acb), sehingga matriks jarak menjadi seperti berikut ini:
Tabel 2.16 Matriks jarak ketiga complete linkage acb de 0 5 acb 0 de
Dengan demikian proses iterasi perhitungan jarak untuk pembentukan cluster sudah selesai karena cluster sudah tersisa satu. Jadi cluster (acb) dan (de) digabung menjadi satu, yaitu cluster (acbde) dengan jarak maksimum adalah 5. Berikut ini adalah hasil dendrogram hasil AHC dengan complete linkage:
Gambar 2.6 Dendrogram complete linkage untuk 5 obyek data
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
33
Pada bagian akhir AHC, setelah perhitungan pembentukan dendrogram, jumlah cluster dapat ditentukan dengan memotong (cut off) bagian tertentu dari dendrogram yang terbentuk pada jarak tertentu. Misalnya pada gambar 2.4, dendrogram dipotong pada jarak 2,5. Dengan pemotongan ini akan terbentuk 3 cluster, yaitu (ac), (de), dan (b) dengan masing-masing obyek datanya.
Gambar 2.7 Contoh pemotongan dendrogram single linkage
2.4
Uji Akurasi Data Data intelektual yang telah diperoleh dari Seminari Menengah Mertoyudan
dan direduksi dengan menggunakan PCA serta hasilnya diolah dengan AHC perlu diuji akurasinya supaya diketahui validitas data tersebut. Ada beberapa teknik untuk uji akurasi data tersebut. Karena yang digunakan adalah Metode Clustering dapat digunakan dua jenis uji akurasi, yaitu Internal Evaluation dan External Evaluation.33 1. Internal evaluation Internal evaluation atau yang dikenal juga dengan unsupervised validation merupakan pengujian data cluster demi validitasnya tanpa informasi dari luar.
33
Eko Prasetyo, “… Menjadi Informasi …”, op. cit. hal. 278.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
34
Validasi ini contohnya adalah cohesion, separation, silhouette coefficient, dan sum of square error (SSE). 2. External evaluation Dengan menggunakan external evaluation akan diketahui kedekatan antara label cluster terbentuk dengan class yang disediakan. External evaluation ini dapat dilakukan dengan confusion matrix, entropy, dan purity. Pada tulisan ini yang akan digunakan untuk uji akurasi adalah internal evaluation, secara khusus dengan menggunakan sum of square error (SSE). Setiap percobaan cut-off untuk pembentukan cluster akan dihitung SSE-nya. Dengan cara demikian akan didapatkan nilai SSE untuk masing-masing percobaan cutt-off dalam pembentukan cluster. Semakin kecil nilai SSE menunjukkan bahwa cluster yang dibentuk semakin baik pula. Formulasi SSE yang digunakan adalah sebagai berikut34: 𝐾
𝑆𝑆𝐸 = ∑ ∑ ||𝑥𝑖 − 𝜇𝑘 ||2 𝑘=1 ∀𝑥𝑖 ∈𝐶𝑘
(2.11) Keterangan:
𝑥𝑖 adalah jarak data 𝑥 di indeks 𝑖
𝜇𝑘 adalah rata-rata semua jarak data 𝑥𝑖 di cluster 𝑘
Formulasi ini dapat dilakukan dengan langkah-langkah berikut ini: 1. Tentukan matriks K yang akan dihitung menggunakan SSE
Lior Rokach, “Data Mining And Knowledge Discovery Handbook, Chapter 15: Clustering Methods”. Available at: http://www.ise.bgu.ac.il/faculty/liorr/hbchap15.pdf [Diakses tanggal 25 Januari 2015]. 34
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
𝑥𝑖 adalah data set dari cluster 𝑘
cluster 𝑘 adalah anggota dari matriks K
2. Jika 𝑘 = 1 3. Hitung rata-rata cluster 𝑘 ( 𝜇𝑘 ) … a 4. Lakukan langkah 5 dan 7 untuk setiap data 𝑥 5. Kurangkan a dengan data 𝑥 di indeks 𝑖 ( ||𝑥𝑖 − 𝑎|| )… b 6. Hitung 𝑏2 … c 7. c dijumlahkan untuk setiap cluster 𝑘 … d 8. Jumlahkan total d di matriks K 9. Selesai
35
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
3
BAB III
METODOLOGI
Berdasar pada landasan teori yang telah disampaikan pada bab kedua di atas, pada bab ini akan dibahas metodologi yang digunakan dalam tulisan ini. Bab ketiga akan dipaparkan tentang metode yang digunakan untuk pengumpulan data, teknik analisa data, rancangan desain user interface, dan spesifikasi software dan hardware yang digunakan dalam implementasi.
3.1
Metode Pengumpulan Data Sekumpulan data yang diterima dari Seminari Mertoyudan diperoleh dari
arsip nilai yang ada di seminari tersebut. Selain itu juga data didapat berdasarkan hasil wawancara dengan para pembina di seminari, termasuk karyawan bagian pengarsipan. Dengan demikian akan diketahui dengan pasti keakuratan data tersebut. Berikut ini adalah penjelasan lebih lanjut tentang metode pengumpulan data yang telah dilaksanakan: 1. Studi Kepustakaan Studi kepustakaan diperlukan untuk mencari informasi tentang dunia pendidikan, khususnya pendidikan di seminari menengah. Selain itu, informasi tentang data mining terutama agglomerative hierarchical clustering sangat dibutuhkan sehingga dapat membentuk suatu sistem yang dapat digunakan.
36
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
37
2. Wawancara Metode wawancara berkaitan dengan dunia pendidikan di seminari dilakukan beberapakali kepada pembina di seminari, terutama rektor seminari. Selain itu, wawancara juga dilakukan dengan karyawan yang bertugas untuk menyimpan arsip penilaian studi para seminaris. Wawancara ini sangat membantu untuk mengerti secara benar tentang dunia pembinaan di seminari terutama dari sisi scientia-nya. Juga, wawancara berguna untuk mengerti tentang pengolahan data nilai para seminaris. 3. Pengumpulan Data Setelah menerima izin secara lisan dari rektor seminari, arsip data nilai yang ada di Seminari Mertoyudan dikumpulkan. Teknik pengumpulan data dilakukan bersama karyawan seminari bagian arsip data. Data nilai yang ada dipilah-pilah dan kemudian data yang dianggap relevan dikumpulkan dan diolah.
3.2
Teknik Analisis Data Data yang telah diperoleh dari hasil pengumpulan data selanjutnya mulai
dianalisa. Berkaitan dengan tahap-tahap teknik analisis dan jalannya program digambarkan dengan block diagram sebagai berikut:
Data
Preprocessing
PCA
Perhitungan Jarak
Single
AHC
Average
Output
Complete
Gambar 3.1 Block diagram proses program
Dendrogram
Akurasi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
38
1. Data Data yang digunakan untuk penelitian dalam tulisan ini adalah data yang diperoleh dari Seminari Menengah Mertoyudan. Data ini merupakan daftar nilai hasil belajar (rapor) para seminaris yang dikumpulkan. Daftar nilai ini bersifat sangat penting karena menunjukkan kemampuan intelektual para seminaris dalam mengikuti mata pelajaran yang disajikan dan diikutinya. Berdasarkan hasil penilaian ini juga para pembina seminari dapat mengetahui kemampuan dan perkembangan anak-anak didiknya. Daftar nilai ini juga menjadi bahan pertimbangan bagi para pembina seminari untuk mengambil keputusan terhadap seorang seminaris apakah ia akan dapat melanjutkan pendidikan di seminari, atau diberi pembinaan tambahan, atau diminta untuk keluar dari seminari. Data yang akan digunakan adalah daftar nilai hasil semester satu dan dua dari dua kelompok yang seangkatan, yaitu yang mengalami pendidikan di seminari periode tahun 2009 sampai dengan 2013 dan periode tahun 2010 sampai dengan 2014. Data yang digunakan adalah mulai dari kelas KPP (Kelas Persiapan Pertama) sampai kelas XII (kelas 3 SMA). Kurun waktu empat tahun pelajaran ini diambil karena selama masa pendidikan ini para seminari dibina dan akhirnya harus diputuskan oleh pembina seminari apakah seminaris yang bersangkutan layak utuk melanjutkan ke seminari tinggi. Dalam pembinaan di Seminari Mertoyudan, masa pendidikan empat tahun ini dapat dibagi menjadi tiga bagian, yaitu: a. KPP. Masa KPP ini merupakan tahap awal di mana setiap seminari yang berasal dari berbagai daerah, dengan latar belakang keluarga dan budaya yang berbeda harus mengalami penyesuaian dengan pola kehidupan dan pembinaan di
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
39
seminari. Motivasi panggilan untuk menjadi seorang imam mulai dimurnikan dan diarahkan. Keberanian untuk mengolah kerohanian, kepribadian, dan intelektual ditekankan. Hal ini diterapkan dengan berbagai mata pelajaran yang disajikan, misalnya mata pelajaran Metode Belajar dan Sidang Akademi guna menumbuhkan keberanian mengolah gagasan pengetahuan dan berpendapat. Hal ini terkait erat dengan pengolahan kepribadian dan intelektual. Selain itu ada juga mata pelajaran Agama, Liturgi, dan Sejarah Gereja yang mengarah pada pengetahuan rohani para seminaris. b. Kelas X dan Kelas XI. Masa perkenalan para seminaris terhadap kehidupan seminari dianggap telah dilalui. Di kelas X dan XI para seminaris mengalami pembinaan lanjutan. Di bangku sekolah, sisi scientia disetarakan dengan pendidikan SMA umum, namun tidak meninggalkan mata pelajaran yang dibutuhkan untuk pembinaan seorang calon imam. Masa dua tahun ini menjadi masa pembinaan yang sangat ketat dan menentukan. Hal ini terkait erat dengan putusan final yang akan diterima setiap seminaris di penghujung kelas XI. Di Seminari Mertoyudan, penghujung kelas XI menjadi masa penentuan apakah seorang seminaris layak atau tidak untuk melanjutkan ke seminari tinggi. Artinya, apabila seorang seminaris sudah masuk ke kelas XII, hal ini berarti ia sudah layak untuk melanjutkan ke seminari tinggi atau masuk ke kongregasi tertentu sebagai bruder. c. Kelas XII. Para seminaris yang berada di kelas XII berarti sudah layak untuk melanjutkan pendidikannya ke jenjang yang lebih tinggi. Hal ini berarti setiap seminaris harus sudah memantapkan diri bukan lagi untuk masuk dalam
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
40
golongan laikus (awam) atau klerus (imam) di dalam Gereja Katolik, melainkan siap untuk membuat lamaran guna bergabung ke keuskupan atau kongregasi tertentu. Total data yang digunakan berjumlah 137 orang siswa dengan 186 mata pelajaran yang ada di seminari mulai dari KPP sampai kelas XII. Dimensi data ini berasal dari dua angkatan seminaris, yaitu 2009 dan 2010. Dari 137 data yang ada, memuat data seminaris dalam ketiga bagian di atas. Dengan dimensi data yang demikian kiranya dapat diketahui pola keberhasilan seminaris. 2. Preprocessing Data yang sudah didapat dan dikumpulkan selanjutnya diolah dalam tahap preprocessing. Pada tahap ini akan dilakukan data cleaning, data integration, data selection dan data transformation. Data yang di dapat, baik itu dari hasil scanner, maupun berupa file berformat Excel dikumpulkan. Data yang berkaitan diambil dan dikumpulkan. Mengingat bahwa ada jurusan IPA dan IPS pada masa pendidikan tersebut, maka nilai mata pelajaran seminaris jurusan IPA pada jurusan IPS mendapat rata-rata dari nilai mata pelajaran seminaris jurusan IPS per mata pelajarannya. Sama halnya yang dilakukan untuk nilai mata pelajaran seminaris jurusan IPS di jurusan IPA. Hal ini dilakukan setara dengan penanganan kesalahan data dengan menghitung rata-rata berdasarkan nilai yang tersedia untuk fitur tersebut, kemudian hasilnya digunakan untuk mengganti nilai fitur yang salah pada setiap vektor.35 Apabila seminaris keluar dari seminari, nilai mata pelajaran selanjutnya diberi nilai 0.
Budi Santosa, “Data Mining: Teknik Pemanfaatan Data untuk Keperluan Bisnis”, Graha Ilmu, Yogyakarta, 2007, hal. 20. 35
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
41
Dalam praktek, sering ditemukan fitur dengan jangkauan nilai yang berbeda. Hal ini mengakibatkan fitur dengan nilai yang lebih besar dapat pengaruh yang lebih besar pula. Apabila dalam proses ini ditemukan jarak nilai yang berjauhan, maka akan dilakukan proses normalisasi. Normalisasi yang digunakan adalah Z-Score dengan persamaan36: 𝑥̂𝑖𝑗 =
(𝑥𝑖𝑗 − 𝑥̅𝑗 ) σ𝑗 (3.1)
Keterangan:
𝑥̂𝑖𝑗 adalah nilai Z-Score setiap data 𝑥 di indeks 𝑖𝑗
𝑥𝑖𝑗 adalah data 𝑥 di indeks 𝑖𝑗
𝑥̅𝑗 adalah rata-rata data 𝑥 di indeks 𝑗
σ𝑗 adalah standar deviasi data 𝑥 di indeks 𝑗 Di samping itu, principal component analysis (PCA) akan diterapkan dalam
tahap preprocessing ini. PCA dilakukan untuk mengurangi dimensi data yang besar, namun tidak menghilangkan informasi yang penting yang terkandung di dalam data. 3. Perhitungan jarak Setelah data melewati tahap preprocessing, tahap selanjutnya adalah mengukur jarak setiap data. Pengukuran jarak digunakan euclidean distance, sebagaimana yang telah dipaparkan pada bab kedua dalam tulisan ini. Dengan menggunakan perhitungan euclidean distance akan didapat jarak antardata dalam sebuah matriks. Matriks ini kemudian akan digunakan untuk tahap selanjutnya,
36
Eko Prasetyo, “… Menjadi Informasi…”, op. cit. hal. 19.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
42
yaitu clustering dengan menggunakan AHC. Berikut ini adalah contoh data yang akan digunakan untuk perhitungan jarak dengan euclidean distance:
Tabel 3.1 Data sampel perhitungan jarak Data X Y 87 89 a 84 76 b 83 70 c 80 74 d 82 83 e 81 92 f
Dengan menggunakan perhitungan euclidean distance, data sampel pada tabel 3.1 didapat matriks jarak sebagai berikut:
Tabel 3.2 Hasil euclidean distance dari data sampel a b c d e 0 13.34166 19.41649 16.55295 7.81025 13.34166 0 6.082763 4.472136 7.28011 19.41649 6.082763 0 5 13.0384 16.55295 4.472136 5 0 9.219544 7.81025 7.28011 13.0384 9.219544 0 6.708204 16.27882 22.09072 18.02776 9.055385
a b c d e f
f 6.708204 16.27882 22.09072 18.02776 9.055385 0
4. AHC AHC adalah agglomerative hierarchical clustering. Dalam tahap ini matriks jarak data yang telah dihasilkan dengan euclidean distance akan digunakan. Masing-masing data akan dikelompokkan berdasarkan karakteristik kedekatannya. Proses pengelompokan tersebut akan menggunakan tiga perhitungan yaitu, single linkage, average linkage, dan complete linkage. Langkah-langkah perhitungannya seperti yang dapat dilihat dalam bab ke dua di dalam tulisan ini. Dengan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
43
menggunakan Matlab, data sampel yang digunakan pada tabel 3.1 dihasilkan dendrogram sebagai berikut ini:
Gambar 3.2 Dendrogram single linkage
Gambar 3.3 Dendrogram average linkage
Gambar 3.4 Dendrogram complete linkage
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
44
Berikut ini adalah source code yang digunakan dalam Matlab yang menghasilkan ketiga dendrogram di atas: % Data sampel data=[87 89; 84 76; 83 70; 80 74; 82 83; 81 92]; % Single Linkage single=linkage(data,'single','euclidean'); set(figure(),'name','Single Linkage','numbertitle','off') dendrogram(single) % Average Linkage average=linkage(data,'average','euclidean'); set(figure(),'name','Average Linkage','numbertitle','off') dendrogram(average) % Complete Linkage complete=linkage(data,'complete','euclidean'); set(figure(),'name','Complete Linkage','numbertitle','off') dendrogram(complete)
5. Cluster Proses AHC akan menghasilkan dendrogram dari masing-masing perhitungan, baik itu dari single linkage, average linkage, maupun complete linkage. Dari hasil dendrogram tersebut dapat ditentukan cluster yang diinginkan. Proses pembentukan cluster tersebut adalah dengan proses cut-off pada jarak ketinggian tertentu dari dendrogram yang telah terbentuk. Dengan menggunakan function cluster yang ada di Matlab, cluster ini juga dapat dilakukan.
Tabel 3.3 Contoh cluster hasil cut-off 3 single linkage Kelompok 1 Kelompok 2 Kelompok 3 2 5 1 3 6 4
Tabel 3.4 Contoh cluster hasil cut-off 3 average linkage Kelompok 1 Kelompok 2 Kelompok 3 2 1 5 4 6 3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
45
Tabel 3.5 Contoh cluster hasil cut-off 3 complete linkage Kelompok 1 Kelompok 2 Kelompok 3 2 1 5 4 6 3
6. Perhitungan akurasi Tulisan ini menggunakan SSE untuk menghitung akurasi di setiap pembentukan cluster-nya. Dengan demikian ada sejumlah percobaan pembentukan cluster yang akan dihitung SSE-nya. SSE dengan nilai yang paling rendah mengindikasikan bahwa cluster yang terbentuk adalah yang paling baik. Akan dilakukan percobaan pembentukan cluster antara 2 sampai 10. Namun demikian tidak menutup kemungkinan bahwa percobaan yang dilakukan bisa lebih atau kurang dari 10. Hal ini tinggal tergantung kebutuhan yang ada. Dengan percobaan yang dilakukan, akan terbentuk grafik yang menggambarkan hasil setiap perhitungan dari setiap percobaan pembentukan cluster.
3.3
Desain User Interface Supaya hasil perhitungan dari penelitian ini dapat dilihat dengan mudah,
dirancang tampilan user interface. Secara keseluruhan tampilan user interface program ini adalah seperti tampak pada Gambar 12. Ketika program dijalankan, program akan menampilkan tampilan awal program yang memiliki menu bar dan bagian untuk input data. Menu bar terdiri dari Tutup yang berfungsi untuk menutup program dan Bantuan yang di dalamnya terdapat pilihan Manual program dan Tentang program.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
46
Gambar 3.5 User interface
Untuk dapat dipahami lebih jauh user interface di atas, dirancang sebuah storyboard. Storyboard dari user interface tersebut adalah sebagai berikut: 1. Input Data Bagian input program yang diberi title Principal Component Analysis (PCA) terdapat tombol untuk menginput data file. File yang digunakan hendaknya bereksistensi *.xls atau *.xlsx. Setelah tombol Input, ada sarana untuk membatasi data yang akan diproses. Batasan yang dimaksud adalah batasan untuk jumlah data dan atribut. Selanjutnya ada pilihan untuk menggunakan normalisasi Z-Score atau tidak. Sesuai dengan title-nya, bagian ini tersedia form untuk inputan jumlah principal component (PC) yang akan di hasilkan dalam proses preprocessing dengan menggunakan PCA. Nilai 0 ditetapkan sebagai default yang berarti PC akan digunakan seluruhnya sejumlah atribut data inputan. Jumlah PC ditetapkan minimal 3 dan maksimal sebanyak atribut data input. Di bagian selanjutnya terdapat bagian inputan untuk menentukan jumlah cluster awal (default 2, minimal 2 dan maksimal
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
47
sebanyak jumlah data) dan cluster akhir (default 10, minimal sebanyak jumlah cluster awal, maksimal sebanyak jumlah data) yang akan diproses dalam program dengan menggunakan AHC, dan masing-masing cluster akan otomatis dihitung SSE-nya. Untuk memulai proses, disediakan tombol Proses.
Gambar 3.6 Desain input data
2. Informasi Dan Tabel Data Seketika setelah data file diinputkan, bagian Informasi Data dan Tabel Data tampil di bawah bagian input data dan menampilkan beberapa informasi, yaitu nama file, jumlah data dan feature atau atribut data inputan. Di bagian Tabel Data tampil data awal inputan. Tabel akan menampilkan data sesuai dengan pilihan, baik itu data Awal, hasil data setelah proses PCA, data hasil proses single linkage, average linkage, maupun complete linkage. Tombol Simpan jika dipilih akan melakukan proses penyimpanan data sesuai dengan data yang tampil pada Tabel Data.
Gambar 3.7 Desain informasi dan tabel data
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
48
3. Hasil Proses AHC dan Akurasi Setelah tombol Proses dipilih, selain Tabel Data menampilkan hasil proses PCA, akan tampil juga diagram dendrogram dan cluster hasil proses AHC dan grafik akurasi dari perhitungan SSE untuk setiap cluster-nya. Dendrogram, baik itu hasil dari single linkage, average linkage, maupun complete linkage, ditampilkan bersama label dari masing-masing leaf node dalam bentuk tabel. Cluster ditampilkan bersama dengan jumlah masing-masing cluster. Grafik SSE menampilkan nilai SSE dari masing-masing cluster. Grafik SSE ini dapat dipilih untuk merubah tampilan Dendrogram dan panel Cluster sesuai dengan cluster yang dipilih dalam grafik SSE.
Gambar 3.8 Desain hasil proses AHC dan akurasi
3.4
Spesifikasi Software dan Hardware Untuk proses implementasi digunakan spesifikasi software dan hardware
sebagai berikut: 1. Software: a. Sistem Operasi : Microsoft Windows 7 ultimate 64-bit
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
b. Bahasa pemrograman : Matlab version 8.0.0.783 (R2012b) 2. Hardware: a. Processor : Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz b. Memory: 4 GB c. Harddisk: 1 TB
49
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
4
BAB IV
IMPLEMENTASI DAN ANALISIS HASIL
Metodologi yang telah dipaparkan pada bab sebelumnya diimplementasikan pada bab ini. Implementasi tersebut berkaitan dengan pengolahan data mulai dari preprocessing menggunakan principal component analysis (PCA) sampai dengan uji akurasi dengan menggunakan sum of squares error (SSE) atas hasil proses data dengan menggunakan agglomerative hierarchical clustering (AHC). Pada tahap selanjutnya, hasil implementasi tersebut dianalisis. Analisis hasil implementasi disajikan dalam dua bagian, yaitu analisis hasil secara global dan analisis hasil secara parsial.
4.1
Implementasi Landasan teori dan metodologi yang telah disampaikan berkurang
manfaatnya jika tidak disertakan dengan implementasi. Implementasi dipaparkan dalam dua bagian besar, yaitu berkaitan dengan proses pengolahan data dan user interface atas sistem yang telah dibuat guna pengolah data tersebut.
4.1.1 Pengolahan Data Data yang digunakan dalam penelitian pengenalan pola tulisan ini berjumlah 137 data. Sejumlah data tersebut merupakan obyek primer penelitian ini. Obyek primer tersebut adalah nilai dari sisi scientia berupa nilai rapor yang bersifat
50
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
51
kognitif dari 137 siswa angkatan 2009 dan angkatan 2010 di Seminari Menengah St. Petrus Canisius, Mertoyudan – Magelang. Nilai dari sisi scientia yang digunakan dalam tulisan ini adalah data dari dua angkatan siswa seminari yang dimulai dari Kelas Persiapan Pertama (KPP). Di Seminari Mertoyudan, pendidikan dilalui selama empat tahun. Jenjang pendidikan empat tahun tersebut serta jumlah seminarisnya dapat dilihat dalam tabel berikut ini.
Tabel 4.1 Jenjang kelas dan jumlah seminaris Kelas XI Kelas XII Angkatan KPP Kelas X IPS IPA IPS IPA 66 59 29 26 15 11 2009 71 69 33 25 22 14 2010 Jumlah 137 128 62 51 37 25
Berkaitan dengan pembinaan kognitif di seminari, mata pelajaran di setiap jenjang kelas tidak dapat dilepaskan. Di dalam tulisan ini, mata pelajar menjadi atribut atau fitur dalam pengolahan data. Adapun mata pelajaran yang diikuti oleh para seminaris adalah seperti yang tampak pada tabel berikut ini.
Tabel 4.2 Mata pelajaran KPP Semester 1 Pendidikan Agama
Semester2 Pendidikan Agama
PKS
PKS
Liturgi Sejarah Gereja Bahasa Indonesia Bahasa Inggris Bahasa Latin Bahasa Daerah Matematika IPA
Liturgi Sejarah Gereja Bahasa Indonesia Bahasa Inggris Bahasa Latin Bahasa Daerah Matematika IPA
Kelas X Semester 1 Pendidikan Agama Pendidikan Kewarganegaraan Bahasa Indonesia Bahasa Inggris Matematika Fisika Biologi Kimia Sejarah Geografi
Semester2 Pendidikan Agama Pendidikan Kewarganegaraan Bahasa Indonesia Bahasa Inggris Matematika Fisika Biologi Kimia Sejarah Geografi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
IPS Pendidikan Seni Komputer Metode Belajar Sidang Akademi
IPS Pendidikan Seni Komputer Metode Belajar Sidang Akademi
Ekonomi Sosiologi Cantus Menggambar Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci Kelas XI
IPS Semester 1 Pendidikan Agama Pendidikan Kewarganegaraan Bahasa Indonesia Bahasa Inggris Matematika Sejarah Geografi Ekonomi Sosiologi Seni Musik Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci
Semester2 Pendidikan Agama Pendidikan Kewarganegaraan Bahasa Indonesia Bahasa Inggris Matematika Sejarah Geografi Ekonomi Sosiologi Seni Musik Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci
52
Ekonomi Sosiologi Cantus Menggambar Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci IPA
Semester 1 Semester2 Pendidikan Agama Pendidikan Agama Pendidikan Pendidikan Kewarganegaraan Kewarganegaraan Bahasa Indonesia Bahasa Indonesia Bahasa Inggris Bahasa Inggris Matematika Matematika Fisika Fisika Kimia Kimia Biologi Biologi Sejarah Sejarah Cantus Cantus Seni Lukis Seni Lukis Penjaskes Penjaskes TIK TIK Bahasa Daerah Bahasa Daerah Bahasa Latin Bahasa Latin Kitab Suci Kitab Suci Kelas XII IPS IPA Semester 1 Semester2 Semester 1 Semester2 Pendidikan Agama Pendidikan Agama Pendidikan Agama Pendidikan Agama Pendidikan Pendidikan Pendidikan Pendidikan Kewarganegaraan Kewarganegaraan Kewarganegaraan Kewarganegaraan Bahasa Indonesia Bahasa Indonesia Bahasa Indonesia Bahasa Indonesia Bahasa Inggris Bahasa Inggris Bahasa Inggris Bahasa Inggris Matematika Matematika Matematika Matematika Sejarah Sejarah Fisika Fisika Geografi Geografi Biologi Biologi Ekonomi Ekonomi Kimia Kimia
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Sosiologi Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci
Sosiologi Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci
Sejarah Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci
53
Sejarah Penjaskes TIK Bahasa Daerah Bahasa Latin Kitab Suci
Data sejumlah 137 dengan atribut berjumlah 186 ini yang akan diproses melalui tahap preprocessing, clustering, dan akhirnya perhitungan akurasi secara internal (Internal evaluation) dalam clustering yang coba dibentuk.
4.1.1.1 Preprocessing Sebelum dilakukan proses data mining dengan menggunakan clustering, data yang digunakan terlebih dahulu melalui tahap preprocessing. Hal ini perlu dilakukan guna mengatasi masalah-masalah yang mungkin timbul seperti jumlah populasi data yang terlalu besar, banyak data yang menyimpang (anomali data), dimensi yang terlalu tinggi, banyaknya fitur yang tidak berkontribusi besar, dan lain sebagainya. Tahap-tahap processing yang dilakukan adalah: 1. Data cleaning Data yang ditemukan merupakan data leger 37 para siswa Seminari Mertoyudan dari berbagai tahun angkatan. Leger tersebut berupa hasil print teks, file bertipe *.jpg hasil scan teks, dan file bertipe *.xls atau *.xlsx. Kemudian dari sejumlah data yang didapat dilakukan proses cleaning dengan memisahkan leger para seminaris angkatan tahun 2009 dan 2010. Data yang dipisahkan ini berjumlah
37
Leger adalah daftar nilai asli siswa sebelum dipindahkan ke dalam buku laporan pendidikan (Kamus Besar Bahasa Indonesia. Available at: http://kbbi.web.id/leger [Diakses tanggal 6 April 2015]).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
54
137 dari ratusan data yang didapatkan. 137 data ini yang akan digunakan di dalam tulisan ini. 2. Data integration
Leger yang dipisahkan ini kemudian dikelola dan digabungkan dengan menggunakan Microsoft Excel dan disimpan dalam sebuah file bertipe *.xlsx. Data para seminaris angkatan tahun 2009 dan 2010 digabung menjadi satu. Nomor induk seminaris (NIS) menjadi identitas setiap data. Seminaris yang hanya sampai KPP diberi NIS tersendiri. Hal ini dilakukan guna mempermudah proses clustering untuk mengindektifikasi seminaris tertentu dalam menganalisis data. 3. Data transformation
Data yang telah digabungkan dalam satu tempat file bertipe *.xlsx ini merupakan data matriks yang berisikan tipe yang sama, yaitu nilai numerik. Secara umum, data setiap seminaris pada kelas dan jurusan tertentu apabila ia masih menjalani pendidikan diseminari, rentang nilai yang ada adalah 50-100. Namun, apabila ia sudah keluar dari seminari sebelum menyelesaikan masa pendidikannya, maka selanjutnya akan diberi nilai 0. Mata pelajaran yang semua seminaris mendapatkan nilai 0 dibuang, karena dianggap bahwa mata pelajaran tersebut tidak diadakan. Transformasi data juga dilakukan terhadap nilai seminaris kelas XI dan XII. Pada kelas ini para seminaris telah masuk pada jurusan tertentu, baik IPA atau IPS. Transformasi yang dilakukan terhadap data adalah nilai mata pelajaran seminaris jurusan IPA pada jurusan IPS mendapat rata-rata dari nilai mata pelajaran seminaris jurusan IPS per mata pelajarannya. Sama halnya yang dilakukan untuk nilai mata
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
55
pelajaran seminaris jurusan IPS di jurusan IPA. Hal ini dilakukan setara dengan penanganan kesalahan data. Pada tahap ini juga dimungkinkan untuk dilakukan normalisasi. Normalisasi yang digunakan adalah Z-Score. 4. Data reduction Pada tahap ini, data masuk pada tahap reduksi dimensionalitas (dimensionality reduction). Metode reduksi dimensionalitas data bekerja dengan cara tertentu untuk menangkap karakteristik data dengan memetakan data dari dimensi awal ke dimensi yang baru yang relatif lebih kecil. Proses ini menghasilkan komponen utama (principal compnent) yang kemudian dapat dijadikan fitur yang baru yang mempunyai pengaruh yang besar pada data. fitur yang berpengaruh kecil atau bahkan tidak berpengaruh dapat dibuang. Untuk proses yang demikian dalam tulisan ini digunakan metode reduksi Principal Component Analysis (PCA) seperti yang telah diterangkan dan diberi contoh hasil pada bab II (Landasan Teori) di atas.
4.1.1.2 Clustering dan Akurasi Pengelompokkan data yang didasarkan hanya pada informasi yang ditemukan dalam data (obyek) yang menggambarkan data tersebut dan hubungan di antaranya disebut analisis kelompok (clustering analysis)38. Hal ini dilakukan supaya data yang berhubungan dalam sebuah kelompok merupakan obyek yang mirip atau memiliki hubungan satu dengan yang lain atau dengan kata lain memiliki similaritas yang tinggi. Ini juga berarti obyek dalam satu kelompok tersebut berbeda atau tidak berhubungan dengan kelompok yang lain pula. Untuk mengetahui sejauh
38
Eko Prasetyo, “… Konsep Dan Aplikasi …”, op. cit. hal. 173.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
56
mana pengelompokan yang dilakukan adalah baik dapat dilakukan uji akurasi dari setiap proses pembentukan kelompok dengan internal evaluation. Di dalam tulisan ini, pengelompokan digunakan dengan agglomerative hierarchical clustering (AHC). Setelah data melalui tahap preprocessing selanjutnya data diproses dengan menggunakan AHC. Data para seminaris sejumlah 137 dengan fitur 186 yang digunakan diproses dengan menggunakan AHC sehingga terbentuk kelompok-kelompok. Setiap proses pembentukan kelompok tersebut diuji dengan menggunakan sum of squares error (SSE). Proses ini dilakukan dengan menggunakan sistem yang telah dibuat. Sistem yang dibentuk dapat melakukan proses AHC dalam tiga metode, yaitu single linkage, average linkage, dan complete linkage, dengan setiap metodenya menggunakan perhitungan jarak euclidean. Hasil setiap perhitungan ditampilkan dalam tabel, dendrogram, dan visualisasi pengelompokan supaya secara visual tergambar pengelompokan obyek dan jarak antar kelompoknya. Sejalan dengan proses AHC tersebut, SSE dihitung. Hasil perhitungan SSE setiap pembentukan kelompok, baik itu dengan metode single linkage, average linkage, maupun complete linkage ditampilkan dalam bentuk grafik dengan masing-masing nilai SSE-nya. Berdasarkan grafik yang dihasilkan dapat dilihat nilai SSE dari masing-masing pembentukan kelompok. Pembentukan kelompok yang memiliki nilai SSE rendah dapat dikatakan bahwa pengelompokan tersebut similaritas yang tinggi. Dengan kata lain, nilai SSE dari grafik yang dapat diambil adalah nilai ekstrim minimum dari kurva parabola pertama. Berikut ini adalah contoh hasil dari proses tersebut.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
57
1. Single Linkage
Gambar 4.1 Implementasi – Grafik SSE single linkage
Proses pembentukan kelompok dengan menggunakan metode single linkage menunjukkan bahwa SSE terendah bernilai 50. SSE terendah ini didapat pada percobaan kedua menggunakan normalisasi dengan jumlah clustering 3. Dendrogram single linkage terendah ini adalah seperti tampak pada gambar 4.2.
Gambar 4.2 Implementasi – Dendrogram single linkage nilai SSE terkecil
2. Average Linkage
Gambar 4.3 Implementasi – Grafik SSE average linkage
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
58
Dari gambar 4.3 dapat dilihat bahwa percobaan 8 dan 9 dengan menggunakan normalisasi memberikan nilai SSE terendah yang sama, yaitu 125. Pada percobaan ini kelompok yang terbentuk berjumlah 9 dan 10. Apabila dibutuhkan kelompok yang lebih sedikit dari 9, percobaan ketiga dengan normalisasi untuk pembentukan 4 kelompok dengan nilai SSE 130 dapat menjadi pilihan. Dendrogram average linkage pembentukan 4 kelompok adalah seperti tampak pada gambar 4.4 .
Gambar 4.4 Implementasi – Dendrogram average linkage dengan 4 kelompok
3. Complete Linkage
Gambar 4.5 Implementasi – Grafik SSE complete linkage
Pembentuk kelompok dengan menggunakan metode complete linkage memberikan hasil seperti tampak pada gambar 4.5. Dari grafik tersebut dapat dilihat bahwa nilai SSE terendah di dapat dalam pembentukan kelompok berjumlah 5 dan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
59
6. Masing-masing nilai SSE tersebut sama, yaitu 149. Adapun dendrogram dari nilai SSE terendah dalam metode complete linkage seperti yang tampak pada gambar di bawah ini.
Gambar 4.6 Implementasi – Dendrogram complete linkage dengan 5 kelompok
Gambar 4.7 Implementasi – Dendrogram complete linkage dengan 6 kelompok
4.1.2 User Interface Matlab version 8.0.0.783 (R2012b) menjadi sarana untuk pembuatan sistem pengenalan pola keberhasilan seminaris dengan menggunakan agglomerative hierarchical clustering ini. Desain user interface yang telah dipaparkan pada bab sebelumnya diimplementasikan dan digunakan sebagai sarana untuk melakukan preprocessing sampai untuk mengetahui akurasi dari pengelompokan data dengan AHC. Sistem yang dibentuk dapat langsung menampilkan hasil keseluruhan proses. User interface ini tersimpan dalam file yang bernama Main.m dan Main.fig (lampiran 1 dan 2). Gambar 4.8 adalah contoh tampilan keseluruhan sistem yang telah dibentuk.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
60
Gambar 4.8 Contoh tampilan keseluruhan sistem
Dari gambar 4.8 dapat dilihat bahwa pada bagian paling atas sistem terdapat nama sistem, yaitu Pengenalan Pola Seminari Mertoyudan. Pada bagian menu terdapat menu utama Tutup yang berfungsi untuk menutup sistem. Untuk menutup sistem digunakan code close all force. Selain itu ada menu utama juga yang diikuti dengan submenu Manual dan Tentang. Submenu Manual berfungsi untuk menampilkan file yang berekstensi *.pdf yang berisi cara penggunaan sistem. Nama file tersebut adalah Manual.pdf dengan code winopen('Manual.pdf'). Gambar 4.9 adalah halaman awal tampilan manual sistem.
Gambar 4.9 Manual sistem
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
61
Submenu Tentang apabila diklik, maka akan menampilkan keterangan tentang sistem ini. Tampilan Tentang yang tampak pada gambar 4.10 tersimpan dalam file Tentang.m dan Tentang.fig (lampiran 4 dan 5).
Gambar 4.10 Tentang sistem
Setelah bagian menu, terdapat header berisikan judul tulisan ini yang diapit dengan logo Universitas Sanata Dharma dan logo Seminari Menengah Mertoyudan. Bagian selanjutnya adalah bagian inti dari tampilan user interface ini, yaitu input data sampai hasil akurasi. Selanjutnya bagian paling bawah sistem terdapat footer yang berisi koordinat posisi mouse dan keterangan singkat nama pembuat sistem. Pada prakteknya, ketika sistem dijalankan akan menampilkan tahap demi tahap proses yang dilalui. Tahap tampilan tersebut adalah input data, informasi dan tabel data, dan yang terakhir adalah hasil proses AHC dan akurasi. Proses PCA, AHC, dan SSE dilakukan dalam file yang bernama funcPPola.m (lampiran 3). 1. Input Data Sesaat setelah sistem dijalankan, sistem hanya menampilkan bagian input data sebagai tahap awal untuk memproses data. Tombol input berfungsi untuk
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
62
menginputkan data yang akan diproses. File yang dapat diproses hanyalah yang berekstensi *.xls atau *.xlsx. Setelah data diinputkan, fungsi lain yang terdapat dalam bagian yang diberi judul Principal Component Analysis ini akan aktif. Batasan data dapat ditentukan dengan memilih kedua pop-up menu Data. Atribut juga dapat dibatasi dengan memilih kedua pop-up menu Atribut. Normalisasi dengan Z-Score dapat digunakan atau tidak dengan mengklik check box Z-Score. Sesuai dengan judul bagian input data ini, principal component (PC) dapat ditentukan jumlahnya. Pada bagian selanjutnya adalah penentuan jumlah cluster yang akan diproses dalam program dengan menggunakan AHC, dan masingmasing pembentukan cluster akan otomatis dihitung SSE-nya. Untuk memulai proses, disediakan tombol Proses. Pada bagian input data ini juga disediakan tombol Reset yang berfungsi untuk mengembalikan sistem pada posisi awal saat dijalankan. Gambar 4.11 adalah tampilan implementasi input data saat awal di mana file belum diinputkan.
Gambar 4.11 Implementasi – Input data
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
63
2. Informasi Dan Tabel Data Sesaat setelah data diinputkan, sistem akan menampilkan informasi tentang data dan isi data di dalam tabel. Pada bagian ini ditampilkan tentang nama file yang diinputkan, jumlah data dan feature (fitur/atribut) yang dimiliki oleh data. Tabel data berisi semua data yang terdapat di dalam file inputan. Nama kolom merupakan nama mata pelajaran. Nama baris adalah NIS dari setiap seminaris.
Gambar 4.12 Implementasi – Informasi data dan tabel
Ketika tombol Proses pada bagian input data dipilih (diklik), tabel data menampilkan hasil proses PCA. Namun dengan bantuan pop-up menu yang ada, data awal, hasil single linkage, average linkage, dan complete linkage dapat ditampilkan pada tabel. Setiap data yang ditampilkan pada tabel dapat disimpan dengan memilih tombol Simpan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
64
3. Hasil Proses AHC Dan Akurasi User interface dari implementasi hasil proses AHC dan akurasi dapat dilihat pada gambar 4.13.
Gambar 4.13 Implementasi – Hasil proses AHC dan akurasi
Secara berurutan dari kiri ke kanan dari gambar tersebut adalah: a. tabel label dari dendrogram yang merupakan NIS dari masing-masing metode AHC. b. Dendrogram hasil perhitungan masing-masing metode AHC. c. Tabel jumlah obyek per kelompoknya. d. Visualisasi pengelompokkan. e. Grafik hasil perhitungan akurasi dengan SSE dari masing-masing metode AHC. Di bagian kanan atas terdapat toolbar yang dapat membantu untuk menganalisis hasil proses. Secara berurutan dari kiri ke kanan dari toolbar tersebut adalah: a. Slider yang berfungsi untuk merubah warna background dari putih ke hitam dan sebaliknya untuk semua axes.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
65
b. Zoom in untuk tampilan dendrogram dan grafik hasil SSE. c. Zoom out untuk tampilan dendrogram dan grafik hasil SSE. d. Pan berfungsi untuk menggeser tampilan dendrogram dan grafik hasil SSE. e. Rotate yang berfungsi untuk merotasi axes. f. Data cursor dapat digunakan pada seluruh axes guna melihat nilai oyek tertentu. g. Grid yang berfungsi untuk menampilkan garis grid hanya untuk axes grafik hasil SSE. h. Tombol simpan untuk menyimpan seluruh hasil proses AHC dan akurasi.
4.2
Analisis Hasil Implementasi yang telah dipaparkan di atas membantu analisis terhadap
pengenalan pola keberhasilan seminaris sebagaimana judul dari tulisan ini. Analisis ini dilakukan terhadap seluruh kelas dari dua angkatan seminaris (tahun 2009 dan 2010). Dengan demikian diharapkan akan dapat diketahui dengan baik pola keberhasilan yang telah dilalui dari dua angkatan tersebut. Perlu diingat kembali bahwa pembinaan bidang intelektual (scientia) yang telah dilalui para seminaris di Seminari Menengah Mertoyudan merupakan satu dari tiga jenis pembinaan yang harus dilalui. Pembinaan ini memberikan nilai kognitif terhadap para seminaris. Penilaian perkembangan intelektual dapat dilihat melalui setiap perolehan nilai setiap mata pelajaran yang diikuti. Nilai tersebut dimasukkan ke dalam leger penilaian (rapor) pada setiap akhir semester. Hal ini menunjukkan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
66
bahwa nilai yang terdapat dalam rapor setiap seminaris menggambarkan keberhasilan perkembangan intelektualnya. Daftar seluruh nilai rapor yang telah dikumpulkan diolah melalui tahap preprocessing data dengan Principal Component Analysis (PCA). Melewati tahap preprocessing, data masuk dalam tahap pengelompokan dengan Agglomerative hierarchical clustering (AHC) dalam tiga metode (single linkage, average linkage, dan complete linkage). Masing-masing metode menggunakan euclidean distance untuk perhitungan jarak. Sejalan dengan proses AHC, setiap pengelompokan diuji dengan Sum of Squares Error (SSE). Dalam seluruh proses ini, dimungkinkan juga untuk menggunakan normalisasi Z-Score atau tidak. Sebelum memasuki tahap proses pengelompokan, pertama-tama dapat dilihat dari sisi preprocessing data dengan menggunakan PCA. Dengan melalui tahap data reduction, dapat diketahui atribut atau fitur yang penting terhadap pembinaan intelektual para seminaris. Seperti yang terlihat dalam hasil PCA, gambar 4.14, mata pelajaran Kitab Suci mendapat tempat yang pertama, disusul dengan Bahasa Latin, Bahasa Daerah, dan seterusnya. Hal ini mengindikasikan bahwa mata pelajaran tersebut mendapat prioritas yang tinggi dalam pendidikan intelektual di Seminari Mertoyudan.
Gambar 4.14 Fitur hasil PCA
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
67
Dalam proses pengelompokan dengan AHC, fitur yang digunakan dari hasil PCA berjumlah 85 principal component (PC). Hal ini dipilih karena dengan 85 PC memberikan akurasi yang paling baik dibandingkan dengan jumlah PC yang lain. Percobaan pengelompokan dari 137 data untuk setiap metodenya dilakukan sebanyak 9 kali., yaitu mulai dengan pembentukan 2 kelompok sampai 10 kelompok. Dari setiap proses pembentukan ini dihitung SSE-nya. Nilai SSE yang dihasilkan juga sebanyak 9 nilai. Berikut ini adalah hasil dari proses tersebut. 1. Single linkage Pengelompokan data dengan metode single linkage, baik menggunakan normalisasi atau tidak memberikan hasil seperti yang dapat dilihat pada tabel berikut ini. Tabel 4.3 Analisis – Hasil single linkage SSE Jumlah Percobaan Tanpa Dengan Clustering Z-Score Z-Score 1 2 27341.54 829.44 2 3 29223.46 49.97 3 4 29223.46 95.79 4 5 29223.46 126.23 5 6 29223.46 172.76 6 7 22154.02 172.76 7 8 14872.74 172.76 8 9 14872.74 172.76 9 10 10835.45 138.07
Tabel ini menunjukkan bahwa nilai akurasi terkecil dengan menggunakan SSE terdapat pada percobaan kedua dengan jumlah kelompok sebanyak 3. Pada percobaan kedua ini nilai akurasinya adalah 49.97. Secara keseluruhan nilai SSE dengan data yang dinormalisasi ditunjukkan dengan grafik seperti yang dapat
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
68
dilihat pada gambar 4.15. Secara grafik, dapat dilihat dengan jelas bahwa pembentukan kelompok sebayak 3 berada pada koordinat yang paling rendah.
Gambar 4.15 Analisis – Grafik SSE single linkage
Jumlah obyek data setiap cluster dalam pembentukan 3 kelompok adalah sebagai berikut: cluater 1 berjumlah 128 obyek, cluster 2 berjumlah 8 obyek, dan cluster 3 berjumlah 1 obyek. Jumlah obyek data per cluster ini dapat dilihat dalam tabel 4.4 berikut ini. Tabel 4.4 Analisis – Jumlah obyek, SSE terkecil single linkage Jumlah Cluster Obyek 1 128 2 8 3 1
Jika dilihat dari sisi keseimbangan jumlah obyek untuk setiap cluster kiranya jauh dari ideal. Artinya bahwa cluster yang terbentuk tidak seimbang. Ketidakseimbangan tersebut dapat dilihat secara jelas dari dendrogram yang dihasilkan (gambar 4.16). Jika keseimbangan pembentukan dendrogram ingin dicapai maka jumlah cluster sebanyak 5 dengan SSE bernilai 126.23 dapat menjadi pilihan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
69
Gambar 4.16 Analisis – Dendrogram single linkage nilai SSE terkecil
Jika dilihat lebih jauh, sebagai contoh obyek cluster 3 adalah data yang memiliki label NIS 29681. Seminaris yang memiliki NIS ini ternyata satu-satunya seminaris yang tidak melanjutkan pendidikannya setelah semester satu di KPP (Kelas Persiapan Pertama). Dari sisi ketepatan sehubungan dengan data dapat dikatakan bahwa pengelompokkan dengan AHC (secara khusus metode single linkage) dapat memberikan akurasi yang tinggi. Tingginya akurasi ini dapat dilihat juga dengan perbandingan hasil SSE, metode single linkage memberikan nilai SSE terendah daripada kedua metode lainnya. 2. Average linkage AHC dengan metode average linkage memberikan daftar nilai akurasi SSE seperti yang tampak pada tabel 4.5 berikut ini. Tabel 4.5 Analisis – Hasil average linkage SSE Jumlah Percobaan Tanpa Dengan Clustering Z-Score Z-Score 1 2 27146.71 2051.27 2 3 24882.63 142.82 3 4 23140.97 130.14 4 5 32806.01 142.22 5 6 32806.01 195.73 6 7 26298.93 195.73
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
7 8 9
8 9 10
24384.68 16179.64 11569.15
70
195.73 125.50 125.50
Dari tabel tersebut dapat diketahui bahwa nilai SSE terkecil ada pada percobaan 8 dan 9 yang masing-masing memberikan nilai SSE yang sama, yaitu 125.50. Namun demikian, apabila dibutuhkan pengelompokkan yang lebih kecil, percobaan ketiga dengan jumlah cluster 4 dapat menjadi pilihan, dengan nilai SSE 130.14. Secara grafik, deretan nilai hasil SSE dengan data yang dinormalisasi dari metode average linkage dapat dilihat pada gambar 4.17.
Gambar 4.17 Analisis – Grafik SSE average linkage
Jumlah obyek data untuk pembentukan 4 kelompok dengan average linkage terdapat dalam tabel 4.6. Cluster 1 memiliki obyek 15, cluster 2 sebanyak 8, cluster 3 berjumlah 113, dan cluster 4 memiliki 1 obyek. Tabel 4.6 Analisis – Jumlah obyek, clustering 4 average linkage Jumlah Cluster Obyek 1 15 2 8 3 113 4 1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
71
Jika dibandingkan dengan hasil single linkage seperti yang telah dijelaskan di atas kiranya tidak jauh berbeda. Hasil yang ditunjukkan dendrogram juga tampak belum seimbang (gambar 4.18). Jika tekanan pada keseimbangan dendrogram maka cluster yang dibentuk adalah sebanyak 5 cluster. Namun, jika dibentuk dengan 5 cluster nilai SSE akan sedikit lebih besar, yaitu 142.22.
Gambar 4.18 Analisis – Dendrogram average linkage jumlah clustering 4
3. Complete linkage Proses pembentukan kelompok dengan metode complete linkage memberikan nilai SSE seperti yang tampak pada tabel berikut ini. Tabel 4.7 Analisis – Hasil complete linkage SSE Jumlah Percobaan Tanpa Dengan Clustering Z-Score Z-Score 1 2 35962.84 191.71 2 3 25835.27 179.37 3 4 24082.54 179.37 4 5 34348.24 149.42 5 6 34348.24 149.42 6 7 25274.71 163.32 7 8 28687.19 163.32 8 9 23121.24 163.32 9 10 22213.79 157.50
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
72
Tabel 4.7 menunjukkan bahwa nilai SSE terkecil ada pada pembentukan cluster berjumlah 5 dan 6, dengan nilai SSE yang sama yaitu 149.42. Secara grafik dapat dilihat pada gambar 4.19. Dari grafik SSE hasil complete linkage dapat dilihat bahwa nilai SSE pembentukan cluster berjumlah 5 dan 6 berada pada posisi yang paling rendah.
Gambar 4.19 Analisis – Grafik SSE complete linkage
Jumlah obyek dalam 5 cluster adalah cluster 1 sebanyak 62, cluster 2 berjumlah 51, cluster 3 ada 15 oyek, cluster 4 sebanyak 8, dan cluster 5 beranggotakan 1 obyek data. Dengan jelas jumlah ini dapat dilihat pada tabel 4.8. Untuk jumlah masing-masing obyek pembentukan 6 cluster dapat dilihat di tabel 4.9. Perbedaan antara 5 cluster dengan 6 cluster terletak pada cluster pertama di cluster 5 dibagi dua untuk 6 cluster.
Tabel 4.8 Analisis – Jumlah obyek, clustering 5 complete linkage Jumlah Cluster Obyek 1 62 2 51 3 15 4 8 5 1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
73
Tabel 4.9 Analisis – Jumlah obyek, clustering 6 complete linkage Jumlah Cluster Obyek 1 45 2 17 3 51 4 15 5 8 6 1
Dendrogram yang dihasilkan dari pembentukan 5 (gambar 4.20) dan 6 cluster (gambar 4.21) dengan metode complete linkage tampaknya lebih baik daripada hasil single linkage dan average linkage. Kendati demikian, dari sisi nilai SSE, single linkage dan average linkage lebih unggul.
Gambar 4.20 Analisis – Dendrogram complete linkage jumlah clustering 5
Gambar 4.21 Analisis – Dendrogram complete linkage jumlah clustering 6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
74
Kemampuan intelektual yang dipetakan secara keseluruhan dengan menggunakan AHC, baik dengan metode single linkage, average linkage, maupun complete linkage, menghasilkan pengelompokan seperti yang telah dipaparkan di atas. Supaya lebih jelas pemetaan tersebut dapat dilihat pada tabel berikut ini. Tabel 4.10 Analisis – Hasil analisis SSE terkecil Metode Single linkage Average linkage Complete linkage
SSE Terkecil
Jumlah Dendrogram Clustering Seimbang
Jumlah Obyek Per Cluster 1
2
3
4
5
6
-
-
-
49.97
3
Tidak
128
8
1
130.14
4
Tidak
15
8
113
1
-
-
149.42 149.42
5 6
Ya Ya
62 45
51 17
15 51
8 15
1 8
1
Tabel 4.10 merupakan hasil analisis dengan tekanan pada pemilihan nilai SSE yang terkecil dari setiap pembentukan kelompok. Lebih jauh, dari hasil percobaan yang dilakukan, ada kemungkinan pengelompokkan lain yang dapat dipilih. Kemungkinan tersebut dapat dilihat pada tabel berikut. Tabel 4.11 Analisis – Hasil analisis keseimbangan dendrogram Jumlah Obyek Per Jumlah Dendrogram Cluster Metode SSE Clustering Seimbang 1 2 3 4 Single 126.23 5 Ya 62 51 15 8 linkage Average 142.22 5 Ya 62 51 15 8 linkage Complete 149.42 5 Ya 62 51 15 8 linkage
5 1 1 1
Kendati nilai SSE yang dipilih bukanlah nilai SSE terkecil (untuk metode single linkage dan average linkage), namun kemungkinan lain seperti pada tabel
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
75
4.11 menjadikan dendrogram relatif lebih seimbang (lihat gambar 4.22, 4.23, dan 4.24). Selain itu, hasil pengelompokan, baik single linkage, average linkage, maupun complete linkage memiliki jumlah obyek yang sama per cluster-nya. Kemungkinan tambahan, jika dilihat hasil pengelompokkan ini, karena cluster 5 hanya beranggotakan 1, tampaknya juga bisa tidak digunakan.
Gambar 4.22 Analisis – Dendrogram relatif seimbang single linkage
Gambar 4.23 Analisis – Dendrogram relatif seimbang average linkage
Gambar 4.24 Analisis – Dendrogram relatif seimbang complete linkage
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
76
Dengan tetap mempertahankan pembentukan 5 cluster, lebih jauh, label node dendrogram hasil setiap metode coba untuk dibandingkan. Perbandingan yang dilakukan adalah antara obyek per cluster dengan melihat label node-nya antara dendrogram hasil single linkage dengan average linkage (SL-AL), single linkage dengan complete linkage (SL-CL), dan average linkage dengan complete linkage (AL-CL). Label node yang sama pada cluster yang sama antara masing-masing dendrogram dijumlahkan. Kemudian hasilnya dikurangkan dengan jumlah data, didapatkan selisih. Dengan cara ini akan diketahui selisih sebagai jumlah obyek yang tidak berada pada cluster yang sama antar setiap dendrogram. Hasil dari perbandingan ini dapat dilihat dalam tabel berikut ini. Tabel 4.12 Analisis – Perbandingan label node SL-AL, SL-CL, dan AL-CL SL-AL SL-CL AL-CL Jumlah Jumlah Jumlah Cluster Obyek Sama Obyek Sama Obyek Sama 1 61 59 58 2 50 48 47 3 15 15 15 4 8 8 8 5 1 1 1 Total Data Selisih
135 137 2
131 137 6
129 137 8
Tabel 4.12 menunjukkan bahwa perbandingan posisi obyek di setiap cluster antara single linkage dengan average linkage memiliki selisih yang paling kecil, yaitu 2. Jika dibandingkan dengan jumlah data keseluruhan (137), selisih 2 ini tergolong kecil. Karena selisih ini tergolong kecil dan merupakan jumlah label node
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
77
dendrogram yang tidak terletak pada posisi yang sama, maka dapat dikatakan bahwa cluster yang terbentuk dengan 5 cut-off antara dendrogram hasil single linkage dan average linkage sangat mirip. Hal ini menunjukkan bahwa dalam penggunaan ke depan, sebagai data model misalnya, sudah dapat diprediksi hasil yang akan diberikan antara hasil penggunaan pengelompokan single linkage akan tidak jauh berbeda, cenderung sama, dengan hasil penggunaan pengelompokan average linkage. Bahkan jika dilihat secara keseluruhan dari nilai selisih hasil perbandingan setiap dendrogram tersebut, yang relatif kecil, dapat dikatakan baik penggunaan hasil single linkage, average linkage, maupun complete linkage, akan memberikan hasil yang tidak jauh berbeda. Usaha pengenalan pola keberhasilan seminaris dari sisi intelektual ini dipetakan dengan pengelompokan data nilai rapor menggunakan alggomerative hierarchical clustering dengan metode single linkage, average linkage, dan complete linkage. Dari hasil usaha pemetaan tersebut dapat dilihat dari dua sisi. Pertama, apabila pengelompokan yang dipilih adalah dari sisi nilai sum of squares error yang paling kecil, maka hasil pengelompokan data yang telah melalui proses normalisasi dan dikelompokkan dengan metode single linkage berjumlah cluster 3 adalah yang paling baik, yaitu bernilai SSE sebesar 49.97. Pembentukan 3 cluster ini sejalan dengan untuk mengetahui kelompok seminaris yang memang berhasil dari sisi intelektual, yang gagal, atau yang kemungkinan membutuhkan pembinaan khusus. Namun dengan pengelompokan obyek data ke dalam 3 cluster menggunakan metode single linkage ini akan terbentuk ketimpangan yang jauh dari sisi jumlah data per kelompoknya.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
78
Kedua, jika tekanan pada jumlah pengelompokan yang relatif seimbang dengan tetap mengusahakan untuk berada pada nilai SSE yang relatif kecil, maka hasil pengelompokan data yang telah melalui proses normalisasi dan dikelompokkan, baik dengan metode single linkage, average linkage, maupun complete linkage yang masing-masing berjumlah cluster 5 dapat dipertimbangkan untuk menjadi pilihan. Namun demikian, perlu tetap diingat bahwa penilaian terhadap seorang seminaris sebagai calon imam Katolik tidak hanya melulu dari sisi intelektual saja. Di Seminari Menengah Mertoyudan, seorang seminaris layak dinyatakan lulus apabila ia memiliki kemampuan yang baik terhadap intelektual (scientia), kesehatan (sanitas) yang baik, dan harus memiliki kesucian hidup (sanctitas). Pengenalan pola dalam tulisan ini tidak menyertakan sisi kesehatan dan kesucian hidup. Harus diakui bahwa pengenalan pola terhadap keberhasilan studi seminaris ini belum secara holistik. Kemungkinan, hal ini juga yang menyebabkan ketidakseimbangan jumlah obyek data dalam pembentukan 3 cluster dengan nilai SSE terendah sesuai dengan tujuan dari tulisan ini.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
5
BAB V PENUTUP
Bab akhir tulisan ini berisikan tentang kesimpulan dan saran. Kesimpulan berisi tentang hal-hal yang berkaitan dengan pengelompokan keberhasilan para seminaris di Seminari Menengah Mertoyudan. Saran akan memuat hal-hal yang berkaitan tentang pengembangan sistem dalam tulisan ini.
5.1
Kesimpulan Pengenalan pola keberhasilan para seminaris di Seminari Menengah
Mertoyudan di dalam tulisan ini menggunakan agglomerative hierarchical clustering. Data yang digunakan merupakan data nilai rapor mulai dari KPP sampai kelas XII perolehan para seminaris angkatan tahun 2009 dan tahun 2010. Setelah melalui preprocessing, reduksi data dengan menggunakan principal component analysis, data sebagai obyek dikelompokkan dengan menggunakan metode single linkage, average linkage, dan complete linkage. Dalam proses pengelompokkan tersebut dihitung sum of squares error dari masing-masing percobaan pembentukan kelompoknya. Kesimpulan dari seluruh proses pengenalan pola ini adalah sebagai berikut: 1. Principal component analysis dapat digunakan di dalam preprocessing data untuk memberikan hasil transformasi dari dimensi lama ke dimensi baru yang
79
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
80
relatif lebih rendah serta melalui indeks yang terbentuk dapat menunjukkan secara berurutan mulai dari atribut/fitur yang paling penting. 2. Algomerative hierarchical clustering dapat mengelompokkan data untuk pengenalan pola keberhasilan para seminaris dengan menunjukkan nilai sum of squares error terendah dalam percobaan pengelompokannya. 3. Percobaan pembentukan kelompok dengan data nilai intelektual para seminaris yang dinormalisasi menggunakan z-score memberikan nilai sum of squares error terendah (49.97) pada metode single linkage dalam pembentukan 3 kelompok. Pembentukan 3 kelompok ini sejalan dengan untuk mengetahui kelompok seminaris yang memang berhasil dari sisi intelektual, yang kemungkinan membutuhkan pembinaan khusus, atau yang gagal. Namun kelompok yang dihasilkan memuat jumlah obyek data yang tidak seimbang. Hal ini kemungkinan disebabkan karena data yang digunakan hanya berupa data nilai intelektual dari rapor para seminaris. 4. Jika tekanan pada keseimbangan jumlah obyek data perkelompok bentukan, maka pembentukan 5 kelompok dari data yang telah dinormalisasi dengan zscore untuk masing-masing metode, baik single linkage, average linkage, maupun complete linkage dapat menjadi pilihan.
5.2
Saran Pengenalan pola keberhasilan para seminaris tidak dapat memberikan hasil
secara menyeluruh jika hanya dilihat dari sisi intelektual saja. Supaya pengenalan dan penilaian dapat bersifat holistik, maka, untuk para seminaris di Seminari
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
81
Menengah Mertoyudan, penilaian dari sisi kesehatan dan kesucian hidup juga harus disertakan dalam data. Saran utama adalah data penelitian harus menyertakan juga data nilai kesehatan (sanitas) dan kesucian (sanctitas) para seminaris, tidak hanya data nilai intelektual (scientia) saja. Saran sekunder, apabila data yang dimaksud dalam saran primer telah terpenuhi, hendaknya sistem yang dibuat tidak hanya sebatas pengenalan pola, tetapi sampai pada pembentukan sistem pembantu pengambilan keputusan. Dengan demikian, sistem yang dibuat kemungkinan akan dapat lebih berdaya guna bagi lembaga tempat penelitian, dalam hal ini adalah Seminari Menengah St. Petrus Canisius, Mertoyudan, Magelang.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
82
DAFTAR PUSTAKA
______. (tanpa tahun). Seminari Menengah St. Petrus Canisius. Diakses dari http://www.seminarimertoyudan.sch.id pada tanggal 11 Juni 2014. Jiawei Han, M. K. (2011). Data mining Concepts and Techniques. USA: Morgan Kaufmann. KWI. (2006). Kitab Hukum Kanonik (Codex Iuris Canonici) - Edisi Resmi Bahasa Indonesia. Bogor: Grafika Mardi Yuana. Prasetyo, E. (2012). Data Mining: Konsep Dan Aplikasi Menggunakan Matlab. Yogyakarta: Andi. Prasetyo, E. (2014). Data Mining: Pengolahan Data Menjadi Informasi Menggunakan Matlab. Yogyakarta: Andi. Rokach, L. (tanpa tahun). Chapter 15: Clustering Methods. Diakses dari http://www.ise.bgu.ac.il/faculty/liorr/hbchap15.pdf pada tanggal 25 Januari 2015. Santosa, B. (2007). Data Mining: Teknik Pemanfaatan Data untuk Keperluan Bisnis. Yogyakarta: Graha Ilmu. Setiawan, E. (2012). Kamus Besar Bahasa Indonesia Daring (Dalam Jaringan/Online). Diakses dari http://www.kbbi.web.id pada tanggal 6 April 2015. Smith, L. I. (2002, February 26). A Tutorial on Principal Component Analysis. Diakses dari http://www.ce.yildiz.edu.tr/personal/songul /file/1097/principal_components.pdf pada tanggal 5 Juli 2014. Stroud, K. A., dan Booth, D. J. (2001). Engineering Mathematics. 5th Ed. New York: Industrial Press, Inc. Tan, P.-N., Steinbach, M., dan Kumar, V. (2006). Introduction to Data Mining. Boston: Pearson Education, Inc. Theodoridis, S., dan Koutroumbas, K. (2003). Pattern Recognition. 2nd Ed. USA: Elsevier. Webb, A. R. (2002). Statistical Pattern Recognition. 2nd Ed. England: Butterworth Heinemann. Ye, N. (2003). The Handbook of Data Mining. New Jersey: Lawrence Erlbaum Associates, Inc.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
83
LAMPIRAN
Source Code 1. Main.fig
2. Main.m function varargout = Main(varargin) % MAIN MATLAB code for Main.fig % MAIN, by itself, creates a new MAIN or raises the existing % singleton*. % % H = MAIN returns the handle to a new MAIN or the handle to % the existing singleton*. % % MAIN('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in MAIN.M with the given input arguments. % % MAIN('Property','Value',...) creates a new MAIN or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Main_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Main_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
84
% Edit the above text to modify the response to help Main % Last Modified by GUIDE v2.5 18-Mar-2015 03:13:25 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Main_OpeningFcn, ... 'gui_OutputFcn', @Main_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before Main is made visible. function Main_OpeningFcn(hObject,... eventdata,... handles,... varargin) %#ok
% This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Main (see VARARGIN) % Choose default command line output for Main handles.output = hObject; % Pembersihan command window clc; % Logo axes(handles.axLogoUSD); imshow('Images\LogoUSD.jpg'); axes(handles.axLogoSM); imshow('Images\LogoSM.jpg'); % Gambar background panel % Buat dan tentukan posisi axes di gui axesBg = axes('unit', 'normalized', 'position', [0 0 1 1]); % Ambil gambar dan tempatkan pada axes gambar = imread('Images\bg.jpg'); imagesc(gambar);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
% Tampilkan gambar dan mematikan tampilan axes set(axesBg,'handlevisibility','off','visible','off'); % Pastikan bahwa gambar di belakang dari semua tampilan program. uistack(axesBg, 'bottom'); % Icon button input file icon=imread('Images\Icons\input_file.jpg'); set(handles.btnInputFile,'CData',icon); % Icon button simpan icon=imread('Images\Icons\simpan.jpg'); set(handles.btnSimpanTabelData,'CData',icon); % Icon Slide warna icon=imread('Images\Icons\slider.jpg'); set(handles.sliderColorBGAxes,'CData',icon); % Icon toggle button zoom in icon=imread('Images\Icons\zoom_in.jpg'); set(handles.tBtnZoomIn,'CData',icon); % Icon toggle button zoom out icon=imread('Images\Icons\zoom_out.jpg'); set(handles.tBtnZoomOut,'CData',icon); % Icon toggle button hand icon=imread('Images\Icons\hand.jpg'); set(handles.tBtnHand,'CData',icon); % Icon toggle button rotasi icon=imread('Images\Icons\rotate_3d.jpg'); set(handles.tBtnRotasi,'CData',icon); % Icon toggle button data cursor icon=imread('Images\Icons\data_cursor.jpg'); set(handles.tBtnDataCursor,'CData',icon); % Icon toggle button grid icon=imread('Images\Icons\grid.jpg'); set(handles.tBtnGrid,'CData',icon); % Icon button simpan AHC dan sse icon=imread('Images\Icons\simpan_dendro_sse.jpg'); set(handles.btnSimpanAHC_SSE,'CData',icon); % Icon button simpan panel PCA icon=imread('Images\Icons\panahKeKiri.jpg'); set(handles.btnSimpanPanPCA,'CData',icon); % Icon button tampilkan panel PCA icon=imread('Images\Icons\panahKeKanan.jpg'); set(handles.btnTampilPanPCA,'CData',icon);
85
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
86
% Mengambil posisi pAHC untuk resize handles.posPanAHC=get(handles.pAHC,'Position'); % Mengambil ukuran awal button tampil panel PCA dan panel ketiga label handles.posBtnTampilPanPCA=get(handles.btnTampilPanPCA,'Position') ; handles.posLabSingle=get(handles.pLabelSingle,'Position'); handles.posLabAverage=get(handles.pLabelAverage,'Position'); handles.posLabComplete=get(handles.pLabelComplete,'Position'); % Warna dasar axes whitebg([1 1 1]); % Update handles structure guidata(hObject, handles); % UIWAIT makes Main wait for user response (see UIRESUME) % uiwait(handles.Main); % --- Outputs from this function are returned to the command line. function varargout = Main_OutputFcn(hObject,... eventdata,... handles) %#ok % varargout % hObject % eventdata MATLAB % handles
cell array for returning output args (see VARARGOUT); handle to figure reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in btnInputFile. function btnInputFile_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to btnInputFile (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Menggunakan uigetfile untuk mengambil nama dan alamat file [namaFile, alamatFile] = uigetfile({'*.xls';'*.xlsx'}, 'Pilih file Anda',... 'Data\DataAwal\'); if namaFile ~=0 alamatNamaFile=fullfile(alamatFile,namaFile); set(handles.edInputFile,'String',alamatNamaFile); set(handles.edNamaFile,'String',namaFile);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
% Baca file excel [dataAngka, dataText]=xlsread(alamatNamaFile); handles.dataAngka=dataAngka; featureAwal=dataText(1,2:end); anggotaAwal =dataAngka(:,1); dataAwal = dataAngka(:,2:end); % Pengaturan untuk pembatasan data yang akan digunakan % Pengaturan tampilan popup batasan data % Pemberian indeks pada popup anggotaAwalPop={anggotaAwal}; for i=1:size(anggotaAwal,1) anggotaAwalPop{i}=num2str(anggotaAwal(i)); anggotaAwalPop{i}=[num2str(i) '. ' anggotaAwalPop{i}]; end popDataAwal=['0' anggotaAwalPop]; popDataAkhir=popDataAwal; set(handles.popDataAwal,'String',popDataAwal); set(handles.popDataAkhir,'String',popDataAkhir); % Pengaturan tampilan popup batasan atribut % Pemberian indeks pada popup featureAwalPop= featureAwal; for i=1:size(featureAwal,2) featureAwalPop{i}=[num2str(i) '. ' featureAwalPop{i}]; end popAtributAwal=['0' featureAwalPop]; popAtributAkhir=popAtributAwal; set(handles.popAtributAwal,'String',popAtributAwal); set(handles.popAtributAkhir,'String',popAtributAkhir); % Informasi data set(handles.edJmlFeature,'String',size(featureAwal,2)); set(handles.edJmlData,'String',size(anggotaAwal,1)); % Memasukkan data ke dalam tabel set(handles.tblTabelData,'ColumnName',featureAwal); set(handles.tblTabelData,'RowName',anggotaAwal); set(handles.tblTabelData,'Data',dataAwal); set(handles.tblTabelData,'ColumnWidth',{77}); set(handles.tblTabelData,'Visible','on'); % Pembentukan atribut dan pemberian nilai handles.featureAwalnya=featureAwal; handles.anggotaAwalnya=anggotaAwal; handles.dataAwalnya=dataAwal; % Icon button proses, string button proses dihilangkan set(handles.btnProses,'String',''); icon=imread('Images\Icons\proses.jpg'); set(handles.btnProses,'CData',icon); % Pengaturan tampilan komponenPeoses_aktif(hObject, handles); set(handles.edInputFile,'TooltipString',alamatNamaFile);
87
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
88
end guidata(hObject,handles); % --- Executes on button press in btnProses. function btnProses_Callback(hObject,... eventdata,... handles) % hObject % eventdata MATLAB % handles
handle to btnProses (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Pembersihan command window clc; % Pembentukan penggunaan function handle funcPPola func=funcPPola; % Pembatasan data dan atribut indeksPopDataAwal=get(handles.popDataAwal,'Value'); indeksPopDataAkhir=get(handles.popDataAkhir,'Value'); indeksPopAtributAwal=get(handles.popAtributAwal,'Value'); indeksPopAtributAkhir=get(handles.popAtributAkhir,'Value'); if indeksPopDataAwal>1 && indeksPopDataAkhir>indeksPopDataAwal handles.anggotaAwal=handles.anggotaAwalnya(indeksPopDataAwal1:indeksPopDataAkhir-1,:); if indeksPopAtributAwal>1 ... && indeksPopAtributAkhir>indeksPopAtributAwal... && (indeksPopAtributAkhir-indeksPopAtributAwal+1)>=3 handles.featureAwal=... handles.featureAwalnya(:,indeksPopAtributAwal1:indeksPopAtributAkhir-1); handles.anggotaAwal=... handles.anggotaAwalnya(indeksPopDataAwal1:indeksPopDataAkhir-1,1); handles.dataAwal=... handles.dataAwalnya(indeksPopDataAwal1:indeksPopDataAkhir-1,indeksPopAtributAwal1:indeksPopAtributAkhir-1); % Pengecekan apakah data bernilai 0 di awal kelas % jika 'ya' berarti data tidak digunakan [m,~]=size(handles.dataAwal); dataAwal=zeros(0,0); idData=zeros(0,0); n=1; for i=1:m if handles.dataAwal(i,1) ~= 0 dataAwal(n,:)=handles.dataAwal(i,:); idData(n,:)=handles.anggotaAwal(i,:); n=n+1; end end
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
handles.anggotaAwal=idData; handles.dataAwal=dataAwal; % Proses Data prosesData(hObject,eventdata,handles,func); elseif indeksPopAtributAwal==1 && indeksPopAtributAkhir==1 handles.featureAwal=handles.featureAwalnya; handles.anggotaAwal=... handles.anggotaAwalnya(indeksPopDataAwal1:indeksPopDataAkhir-1,1); handles.dataAwal=... handles.dataAwalnya(indeksPopDataAwal1:indeksPopDataAkhir-1,1:end); % Pengecekan apakah data bernilai 0 di awal kelas % jika 'ya' berarti data tidak digunakan [m,~]=size(handles.dataAwal); dataAwal=zeros(0,0); idData=zeros(0,0); n=1; for i=1:m if handles.dataAwal(i,1) ~= 0 dataAwal(n,:)=handles.dataAwal(i,:); idData(n,:)=handles.anggotaAwal(i,:); n=n+1; end end handles.anggotaAwal=idData; handles.dataAwal=dataAwal; % Proses Data prosesData(hObject,eventdata,handles,func); else func.penangananError(0,0,0,0,0,0,0); end elseif indeksPopDataAwal==1 && indeksPopDataAkhir==1 handles.anggotaAwal=handles.anggotaAwalnya; if indeksPopAtributAwal>1 ... && indeksPopAtributAkhir>indeksPopAtributAwal... && (indeksPopAtributAkhir-indeksPopAtributAwal+1)>=3 handles.featureAwal=... handles.featureAwalnya(:,indeksPopAtributAwal1:indeksPopAtributAkhir-1); handles.anggotaAwal=... handles.anggotaAwalnya(1:end,1); handles.dataAwal=... handles.dataAwalnya(1:end,indeksPopAtributAwal1:indeksPopAtributAkhir-1); % Pengecekan apakah data bernilai 0 di awal kelas % jika 'ya' berarti data tidak digunakan [m,~]=size(handles.dataAwal); dataAwal=zeros(0,0); idData=zeros(0,0); n=1; for i=1:m
89
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
if handles.dataAwal(i,1) ~= 0 dataAwal(n,:)=handles.dataAwal(i,:); idData(n,:)=handles.anggotaAwal(i,:); n=n+1; end end handles.anggotaAwal=idData; handles.dataAwal=dataAwal; % Proses Data prosesData(hObject,eventdata,handles,func); elseif indeksPopAtributAwal==1 && indeksPopAtributAkhir==1 handles.featureAwal=handles.featureAwalnya; handles.anggotaAwal=handles.anggotaAwalnya; handles.dataAwal=handles.dataAwalnya; % Pengecekan apakah data bernilai 0 di awal kelas % jika 'ya' berarti data tidak digunakan [m,~]=size(handles.dataAwal); dataAwal=zeros(0,0); idData=zeros(0,0); n=1; for i=1:m if handles.dataAwal(i,1) ~= 0 dataAwal(n,:)=handles.dataAwal(i,:); idData(n,:)=handles.anggotaAwal(i,:); n=n+1; end end handles.anggotaAwal=idData; handles.dataAwal=dataAwal; % Proses Data prosesData(hObject,eventdata,handles,func); else func.penangananError(0,0,0,0,0,0,0); end else func.penangananError(0,0,0,0,0,0,1); end % Proses Data function prosesData(hObject,... eventdata,... handles,... func) %#ok % Informasi data set(handles.edJmlFeature,'String',size(handles.featureAwal,2)); set(handles.edJmlData,'String',size(handles.anggotaAwal,1)); % Pembentukan atribut untuk pengecekan inputan selain pembatasan data dan % atribut featureAwal=size(handles.featureAwal,2);
90
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
anggota=size(handles.anggotaAwal,1); JmlPCStr=get(handles.edJmlPC,'String'); cls1Str=get(handles.edJmlClusterAwal,'String'); cls2Str=get(handles.edJmlClusterAkhir,'String'); % Cek inputan apakah memenuhi aturan berikut ini: % 1. Semua inputan berupa bilangan cacah tanpa titik (.) % atau koma (,) % 2. Jumlah principal component minimal 3' % dan tidak lebih dari jumlah feature data input' % 3. Jumlah cluster awal minimal 2, % maksimal sama dengan cluster akhir % 4. Jumlah cluster akhir minimal sama dengan cluster awal, % maksimal sama dengan banyaknya data [hasil]=func.penangananError(JmlPCStr,... cls1Str,... cls2Str,... featureAwal,... anggota,1,0); % Kondisi hasil==false sudah ditangani dalam method penangananError if hasil==true if isequal(str2double(get(handles.edJmlPC,'String')),0) jmlPC = 0; else jmlPC = str2double(get(handles.edJmlPC,'String')); end if (get(handles.chkZScore,'Value') == get(handles.chkZScore,'Max')) % Normalisasi Z-Score DataZScore=zscore(handles.dataAwal); [dataPCA,indeksPCA] = func.pca(DataZScore,jmlPC); else [dataPCA,indeksPCA] = func.pca(handles.dataAwal,jmlPC); end featurePCA={zeros(size(indeksPCA))}; for i=1:size(indeksPCA) featurePCA(i)= handles.featureAwal(indeksPCA(i)); end % Mengambil featurePCA dan dataPCA handles.featurePCA=featurePCA; handles.dataPCA=dataPCA; % Mengisi tabel data dengan hasil PCA set(handles.tblTabelData,'ColumnName',featurePCA); set(handles.tblTabelData,'RowName',handles.anggotaAwal); set(handles.tblTabelData,'Data',dataPCA);
% Jumlah cluster
91
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
92
jmlCluster=str2double(get(handles.edJmlClusterAwal,'String')); % Single Linkage [dataHasil,clusterSSE]=singleLinkage(handles,func,jmlCluster); handles.hasilSingle=dataHasil; handles.clusterSSESingle=clusterSSE; % Untuk keperluan simpan data SSE % Average Linkage [dataHasil,clusterSSE]=averageLinkage(handles,func,jmlCluster); handles.hasilAverage=dataHasil; handles.clusterSSEAverage=clusterSSE; % Untuk keperluan simpan data SSE % Complete Linkage [dataHasil,clusterSSE]=completeLinkage(handles,func,jmlCluster); handles.hasilComplete=dataHasil; handles.clusterSSEComplete=clusterSSE; % Untuk keperluan simpan data SSE % Mengkatifkan komponen tabel hasi dan panel AHC; komponenTabelData_aktif(hObject,handles); end set(handles.btnSimpanPanPCA,'Visible','on'); toolBar_nonAktif(hObject,handles) guidata(hObject,handles); % Single Linkage function [dataHasil,clusterSSE]=singleLinkage(handles,... func,... jmlCluster) % Proses ahc single linkage dataHasil=func.ahc(handles.dataPCA,'single'); % Tampil dendrogram axes(handles.axDendroSingle); labelDendro=func.tampilDendrogram(dataHasil,jmlCluster); % Menampilkan tabel leaf nodes dendrogram [leafNode]=func.leafNodeDendro(dataHasil,jmlCluster,... labelDendro,handles.anggotaAwal); set(handles.tblLabelSingle,'ColumnName',{'Cls','NIS'}); set(handles.tblLabelSingle,'RowName',leafNode(:,1)); set(handles.tblLabelSingle,'Data',leafNode(:,2:3)); set(handles.tblLabelSingle,'ColumnWidth',{20 30}); % Tampil cluster axes(handles.axClsSingle); [jmlLabelCls]=func.tampilCluster(handles.dataPCA,dataHasil,jmlClus ter);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
93
set(handles.tblJmlClsSingle,'ColumnName',{'Cls','Jml'}); set(handles.tblJmlClsSingle,'RowName',''); set(handles.tblJmlClsSingle,'Data',jmlLabelCls); set(handles.tblJmlClsSingle,'ColumnWidth',{25 25}); % Akurasi SSE clusterAwal=str2double(get(handles.edJmlClusterAwal,'String')); clusterAkhir=str2double(get(handles.edJmlClusterAkhir,'String')); axes(handles.axSSESingle); [clusterSSE]=func.sseData(clusterAwal,clusterAkhir,dataHasil); obj = findobj(handles.axSSESingle); set(obj, 'buttonDownFcn', {@gantiDendrogramSingle,... handles,func,... dataHasil,handles.anggotaAwal,... clusterSSE}) % Keterangan Dendrogram for i=1:size(clusterSSE,1) if clusterSSE(i,1)== jmlCluster dtSSE=clusterSSE(i,2); end end text(0.01,0.93,... ['Cutoff: ',num2str(jmlCluster),... ' \Leftrightarrow ',... 'SSE: ',num2str(dtSSE)],... 'FontSize',8,... 'HorizontalAlignment','left',... 'Units','normalized',... 'backgroundcolor','none',... 'parent',handles.axDendroSingle) % Cutoff dendrogram single linkage dan tabel labelnya sesuai cluster function gantiDendrogramSingle(hObject,... eventData,... handles,... func,... dataHasil,... anggota,... clusterSSE) %#ok F = get(gca, 'CurrentPoint'); P = round([F(1), F(3)]); if P(1) >= str2double(get(handles.edJmlClusterAwal,'String'))... && P(1) <= str2double(get(handles.edJmlClusterAkhir,'String')) % Tampil dendrogram axes(handles.axDendroSingle); labelDendro=func.tampilDendrogram(dataHasil,P(1));
% Menampilkan tabel label dendrogram
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
94
[leafNode]=func.leafNodeDendro(dataHasil,P(1),labelDendro,anggota) ; set(handles.tblLabelSingle,'ColumnName',{'Cls','NIS'}); set(handles.tblLabelSingle,'RowName',leafNode(:,1)); set(handles.tblLabelSingle,'Data',leafNode(:,2:3)); if strcmp(get(handles.pPCA,'Visible'),'on') set(handles.tblLabelSingle,'ColumnWidth',{20 30}); else set(handles.tblLabelSingle,'ColumnWidth',{30 50}); end % Keterangan Dendrogram for i=1:size(clusterSSE,1) if clusterSSE(i,1)== P(1) dtSSE=clusterSSE(i,2); end end text(0.01,0.93,... ['Cutoff: ',num2str(P(1)),... ' \Leftrightarrow ',... 'SSE: ',num2str(dtSSE)],... 'FontSize',8,... 'HorizontalAlignment','left',... 'Units','normalized',... 'backgroundcolor','none',... 'parent',handles.axDendroSingle) % Tampil cluster axes(handles.axClsSingle); [jmlLabelCls]=func.tampilCluster(handles.dataPCA,dataHasil,P(1)); set(handles.tblJmlClsSingle,'ColumnName',{'Cls','Jml'}); set(handles.tblJmlClsSingle,'RowName',''); set(handles.tblJmlClsSingle,'Data',jmlLabelCls); if strcmp(get(handles.pPCA,'Visible'),'on') set(handles.tblJmlClsSingle,'ColumnWidth',{25 25}); else set(handles.tblJmlClsSingle,'ColumnWidth',{40 40}); end end % Average Linkage function [dataHasil,clusterSSE]=averageLinkage(handles,... func,... jmlCluster) % Proses ahc average linkage dataHasil=func.ahc(handles.dataPCA,'average'); % Tampil dendrogram axes(handles.axDendroAverage); labelDendro=func.tampilDendrogram(dataHasil,jmlCluster); % Menampilkan tabel leaf nodes dendrogram [leafNode]=func.leafNodeDendro(dataHasil,jmlCluster,...
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
95
labelDendro,handles.anggotaAwal); set(handles.tblLabelAverage,'ColumnName',{'Cls','NIS'}); set(handles.tblLabelAverage,'RowName',leafNode(:,1)); set(handles.tblLabelAverage,'Data',leafNode(:,2:3)); set(handles.tblLabelAverage,'ColumnWidth',{20 30}); % Tampil cluster axes(handles.axClsAverage); [jmlLabelCls]=func.tampilCluster(handles.dataPCA,dataHasil,jmlClus ter); set(handles.tblJmlClsAverage,'ColumnName',{'Cls','Jml'}); set(handles.tblJmlClsAverage,'RowName',''); set(handles.tblJmlClsAverage,'Data',jmlLabelCls); set(handles.tblJmlClsAverage,'ColumnWidth',{25 25}); % Akurasi SSE clusterAwal=str2double(get(handles.edJmlClusterAwal,'String')); clusterAkhir=str2double(get(handles.edJmlClusterAkhir,'String')); axes(handles.axSSEAverage); [clusterSSE]=func.sseData(clusterAwal,clusterAkhir,dataHasil); obj = findobj(handles.axSSEAverage); set(obj, 'buttonDownFcn', {@gantiDendrogramAverage,... handles,func,... dataHasil,handles.anggotaAwal,... clusterSSE}) % Keterangan Dendrogram for i=1:size(clusterSSE,1) if clusterSSE(i,1)== jmlCluster dtSSE=clusterSSE(i,2); end end text(0.01,0.93,... ['Cutoff: ',num2str(jmlCluster),... ' \Leftrightarrow ',... 'SSE: ',num2str(dtSSE)],... 'FontSize',8,... 'HorizontalAlignment','left',... 'Units','normalized',... 'backgroundcolor','none',... 'parent',handles.axDendroAverage) % Cutoff dendrogram average linkage dan tabel labelnya sesuai cluster function gantiDendrogramAverage(hObject,... eventData,... handles,... func,... dataHasil,... anggota,... clusterSSE) %#ok F = get(gca, 'CurrentPoint'); P = round([F(1), F(3)]);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
96
if P(1) >= str2double(get(handles.edJmlClusterAwal,'String'))... && P(1) <= str2double(get(handles.edJmlClusterAkhir,'String')) % Tampil dendrogram axes(handles.axDendroAverage); labelDendro=func.tampilDendrogram(dataHasil,P(1)); % Menampilkan tabel label dendrogram [leafNode]=func.leafNodeDendro(dataHasil,P(1),labelDendro,anggota) ; set(handles.tblLabelAverage,'ColumnName',{'Cls','NIS'}); set(handles.tblLabelAverage,'RowName',leafNode(:,1)); set(handles.tblLabelAverage,'Data',leafNode(:,2:3)); if strcmp(get(handles.pPCA,'Visible'),'on') set(handles.tblLabelAverage,'ColumnWidth',{20 30}); else set(handles.tblLabelAverage,'ColumnWidth',{30 50}); end % Keterangan Dendrogram for i=1:size(clusterSSE,1) if clusterSSE(i,1)== P(1) dtSSE=clusterSSE(i,2); end end text(0.01,0.93,... ['Cutoff: ',num2str(P(1)),... ' \Leftrightarrow ',... 'SSE: ',num2str(dtSSE)],... 'FontSize',8,... 'HorizontalAlignment','left',... 'Units','normalized',... 'backgroundcolor','none',... 'parent',handles.axDendroAverage) % Tampil cluster axes(handles.axClsAverage); [jmlLabelCls]=func.tampilCluster(handles.dataPCA,dataHasil,P(1)); set(handles.tblJmlClsAverage,'ColumnName',{'Cls','Jml'}); set(handles.tblJmlClsAverage,'RowName',''); set(handles.tblJmlClsAverage,'Data',jmlLabelCls); if strcmp(get(handles.pPCA,'Visible'),'on') set(handles.tblJmlClsAverage,'ColumnWidth',{25 25}); else set(handles.tblJmlClsAverage,'ColumnWidth',{40 40}); end end % Complete Linkage function [dataHasil,clusterSSE]=completeLinkage(handles,... func,... jmlCluster)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
97
% Proses ahc complete linkage dataHasil=func.ahc(handles.dataPCA,'complete'); % Tampil dendrogram axes(handles.axDendroComplete); labelDendro=func.tampilDendrogram(dataHasil,jmlCluster); % Menampilkan tabel leaf nodes dendrogram [leafNode]=func.leafNodeDendro(dataHasil,jmlCluster,... labelDendro,handles.anggotaAwal); set(handles.tblLabelComplete,'ColumnName',{'Cls','NIS'}); set(handles.tblLabelComplete,'RowName',leafNode(:,1)); set(handles.tblLabelComplete,'Data',leafNode(:,2:3)); set(handles.tblLabelComplete,'ColumnWidth',{20 30}); % Tampil cluster axes(handles.axClsComplete); [jmlLabelCls]=func.tampilCluster(handles.dataPCA,dataHasil,jmlClus ter); set(handles.tblJmlClsComplete,'ColumnName',{'Cls','Jml'}); set(handles.tblJmlClsComplete,'RowName',''); set(handles.tblJmlClsComplete,'Data',jmlLabelCls); set(handles.tblJmlClsComplete,'ColumnWidth',{25 25}); % Akurasi SSE clusterAwal=str2double(get(handles.edJmlClusterAwal,'String')); clusterAkhir=str2double(get(handles.edJmlClusterAkhir,'String')); axes(handles.axSSEComplete); [clusterSSE]=func.sseData(clusterAwal,clusterAkhir,dataHasil); obj = findobj(handles.axSSEComplete); set(obj, 'buttonDownFcn', {@gantiDendrogramComplete,... handles,func,... dataHasil,handles.anggotaAwal,... clusterSSE}) % Keterangan Dendrogram for i=1:size(clusterSSE,1) if clusterSSE(i,1)== jmlCluster dtSSE=clusterSSE(i,2); end end text(0.01,0.93,... ['Cutoff: ',num2str(jmlCluster),... ' \Leftrightarrow ',... 'SSE: ',num2str(dtSSE)],... 'FontSize',8,... 'HorizontalAlignment','left',... 'Units','normalized',... 'backgroundcolor','none',... 'parent',handles.axDendroComplete) % Cutoff dendrogram complete linkage dan tabel labelnya sesuai cluster function gantiDendrogramComplete(hObject,... eventData,... handles,...
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
98
func,... dataHasil,... anggota,... clusterSSE) %#ok F = get(gca, 'CurrentPoint'); P = round([F(1), F(3)]); if P(1) >= str2double(get(handles.edJmlClusterAwal,'String'))... && P(1) <= str2double(get(handles.edJmlClusterAkhir,'String')) % Tampil dendrogram axes(handles.axDendroComplete); labelDendro=func.tampilDendrogram(dataHasil,P(1)); % Menampilkan tabel label dendrogram [leafNode]=func.leafNodeDendro(dataHasil,P(1),labelDendro,anggota) ; set(handles.tblLabelComplete,'ColumnName',{'Cls','NIS'}); set(handles.tblLabelComplete,'RowName',leafNode(:,1)); set(handles.tblLabelComplete,'Data',leafNode(:,2:3)); if strcmp(get(handles.pPCA,'Visible'),'on') set(handles.tblLabelComplete,'ColumnWidth',{20 30}); else set(handles.tblLabelComplete,'ColumnWidth',{30 50}); end % Keterangan Dendrogram for i=1:size(clusterSSE,1) if clusterSSE(i,1)== P(1) dtSSE=clusterSSE(i,2); end end text(0.01,0.93,... ['Cutoff: ',num2str(P(1)),... ' \Leftrightarrow ',... 'SSE: ',num2str(dtSSE)],... 'FontSize',8,... 'HorizontalAlignment','left',... 'Units','normalized',... 'backgroundcolor','none',... 'parent',handles.axDendroComplete) % Tampil cluster axes(handles.axClsComplete); [jmlLabelCls]=func.tampilCluster(handles.dataPCA,dataHasil,P(1)); set(handles.tblJmlClsComplete,'ColumnName',{'Cls','Jml'}); set(handles.tblJmlClsComplete,'RowName',''); set(handles.tblJmlClsComplete,'Data',jmlLabelCls); if strcmp(get(handles.pPCA,'Visible'),'on') set(handles.tblJmlClsComplete,'ColumnWidth',{25 25}); else set(handles.tblJmlClsComplete,'ColumnWidth',{40 40}); end
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
99
end % --- Executes on button press in btnSimpanTabelData. function btnSimpanTabelData_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to btnSimpanTabelData (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Menghilangkan peringatan penulisan di excel warning('off', 'MATLAB:xlswrite:AddSheet'); [namaFile,alamatFile] = uiputfile({'*.xls';'*.xlsx'},'Simpan',... 'Data\'); if isequal(namaFile,0) || isequal(alamatFile,0) uiwait(msgbox('Proses simpan telah Anda batalkan.','Peringatan','modal')); else popupTblDataVal=get(handles.popupTabelData,'Value'); % Jika tabel data adalah data awal atau PCA if popupTblDataVal == 1 || popupTblDataVal == 2 alamatNamaFile=fullfile(alamatFile,namaFile); dataTabel=get(handles.tblTabelData,'Data'); featureTabel=get(handles.tblTabelData,'ColumnName'); anggotaTabel=handles.dataAngka(:,1); nis='NIS'; dataTabelDitulis=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> anggotaTabelDitulis=mat2cell(anggotaTabel,... ones(size(anggotaTabel,1),1),... ones(size(anggotaTabel,2),1)); %#ok<MMTC> anggotaBaruDanDataIsi=[anggotaTabelDitulis,dataTabelDitulis]; featureTabelBaru=[nis,featureTabel']; dataDitulis=[featureTabelBaru;anggotaBaruDanDataIsi]; if exist(alamatNamaFile, 'file')==2 % Menghapus file kl sudah ada sebelumnya delete([alamatFile,namaFile]) % Menulis di excel xlswrite(alamatNamaFile,dataDitulis); else % Menulis di excel xlswrite(alamatNamaFile,dataDitulis); end % Jika tabel data selain data awal atau PCA else alamatNamaFile=fullfile(alamatFile,namaFile);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
100
dataTabel=get(handles.tblTabelData,'Data'); dataTabelDitulis=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> namaKolomDitulis={'Indeks1','Indeks2','Jarak'}; dataDitulis=[namaKolomDitulis;dataTabelDitulis]; anggota=handles.dataAngka(:,1); if exist(alamatNamaFile, 'file')==2 % Menghapus file kl sudah ada sebelumnya delete([alamatFile,namaFile]) % Menulis di excel xlswrite(alamatNamaFile,dataDitulis,1); xlswrite(alamatNamaFile,anggota,2); else % Menulis di excel xlswrite(alamatNamaFile,dataDitulis,1); xlswrite(alamatNamaFile,anggota,2); end end % Merubah nama sheet di file excel simpanan e = actxserver('Excel.Application'); % Mengaktifkan Activex server ewb = e.Workbooks.Open(alamatNamaFile); % Membuka file popupTblDataStr=get(handles.popupTabelData,'String'); switch popupTblDataVal case 1 ewb.Worksheets.Item(1).Name = ... popupTblDataStr{popupTblDataVal}; % Mengganti nama sheet1 case 2 ewb.Worksheets.Item(1).Name = ... popupTblDataStr{popupTblDataVal}; % Mengganti nama sheet1 case 3 ewb.Worksheets.Item(1).Name = ... popupTblDataStr{popupTblDataVal}; % Mengganti nama sheet1 ewb.Worksheets.Item(2).Name = 'NIS'; % Mengganti nama sheet2 case 4 ewb.Worksheets.Item(1).Name = ... popupTblDataStr{popupTblDataVal}; % Mengganti nama sheet1 ewb.Worksheets.Item(2).Name = 'NIS'; % Mengganti nama sheet2 case 5 ewb.Worksheets.Item(1).Name = ... popupTblDataStr{popupTblDataVal}; % Mengganti nama sheet1 ewb.Worksheets.Item(2).Name = 'NIS'; % Mengganti nama sheet2 end
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ewb.Save % Menyimpan file kembali ewb.Close(false) e.Quit e.delete uiwait(msgbox('Tabel data sudah berhasil disimpan.','Pesan','modal')); end % --- Executes on button press in btnReset. function btnReset_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to btnReset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Konfirmasi reset pilihan=questdlg('Apakah Anda akan melakukan reset?',... 'Konfirmasi Reset',... 'Ya','Tidak','Ya'); switch pilihan case 'Ya' set(handles.pAHC,'Visible','off'); set(handles.pTabelDasarData,'Visible','off'); set(handles.edInputFile,'String',''); set(handles.chkZScore,'Enable','off'); set(handles.chkZScore,'Value',0); set(handles.edJmlPC,'Enable','off'); set(handles.edJmlPC,'String','0'); set(handles.btnProses,'Enable','off'); set(handles.btnProses,'String','Proses'); set(handles.btnProses,'CData',[]); set(handles.popDataAwal,'Enable','off'); set(handles.popDataAwal,'Value',1); set(handles.popDataAkhir,'Enable','off'); set(handles.popDataAkhir,'Value',1); set(handles.popAtributAwal,'Enable','off'); set(handles.popAtributAwal,'Value',1); set(handles.popAtributAkhir,'Enable','off'); set(handles.popAtributAkhir,'Value',1); set(handles.edJmlClusterAwal,'Enable','off'); set(handles.edJmlClusterAwal,'String','2'); set(handles.edJmlClusterAkhir,'Enable','off'); set(handles.edJmlClusterAkhir,'String','10'); set(handles.btnSimpanPanPCA,'Visible','off'); set(handles.sliderColorBGAxes,'Value',1); x=get(handles.sliderColorBGAxes,'Value'); whitebg(gcf,[x x x]); set(handles.btnReset,'Enable','off'); end % Mengaktifkan komponen proses function komponenPeoses_aktif(hObject, handles) set(handles.chkZScore,'Enable','on');
101
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
102
set(handles.edJmlPC,'Enable','on'); set(handles.btnProses,'Enable','on'); set(handles.popDataAwal,'Enable','on'); set(handles.popDataAkhir,'Enable','on'); set(handles.popAtributAwal,'Enable','on'); set(handles.popAtributAkhir,'Enable','on'); set(handles.pTabelDasarData,'Visible','on'); set(handles.popupTabelData,'Value',1); set(handles.popupTabelData,'String','Data Awal'); set(handles.edJmlClusterAwal,'Enable','on'); set(handles.edJmlClusterAkhir,'Enable','on'); set(handles.btnReset,'Enable','on'); guidata(hObject,handles); % Mengaktifkan komponen tabel data dan panel AHC function komponenTabelData_aktif(hObject,handles) % set(handles.edInputFile,'Enable','inactive'); % Pengaturan popupmenu untuk pilihan tampilan tabel data set(handles.popupTabelData,'String',{'Data Awal';... 'PCA';... 'Single Linkage';... 'Average Linkage';... 'Complete Linkage'}); set(handles.popupTabelData,'Value',2); set(handles.pAHC,'Visible','on'); guidata(hObject,handles); % --- Executes on selection change in popupTabelData. function popupTabelData_Callback(hObject, eventdata, handles) %#ok % hObject handle to popupTabelData (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupTabelData contents as cell array % contents{get(hObject,'Value')} returns selected item from popupTabelData % get(handles.popupTabelData,'Value') popupTabelDataValue=get(handles.popupTabelData,'Value'); switch popupTabelDataValue case 1 set(handles.tblTabelData,'ColumnName',handles.featureAwal); set(handles.tblTabelData,'RowName',handles.anggotaAwal); set(handles.tblTabelData,'Data',handles.dataAwal); case 2 set(handles.tblTabelData,'ColumnName',handles.featurePCA); set(handles.tblTabelData,'RowName',handles.anggotaAwal); set(handles.tblTabelData,'Data',handles.dataPCA); case 3 set(handles.tblTabelData,'ColumnName','numbered'); set(handles.tblTabelData,'RowName','numbered'); set(handles.tblTabelData,'Data',handles.hasilSingle);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
case 4 set(handles.tblTabelData,'ColumnName','numbered'); set(handles.tblTabelData,'RowName','numbered'); set(handles.tblTabelData,'Data',handles.hasilAverage); case 5 set(handles.tblTabelData,'ColumnName','numbered'); set(handles.tblTabelData,'RowName','numbered'); set(handles.tblTabelData,'Data',handles.hasilComplete); end
% --- Executes during object creation, after setting all properties. function popupTabelData_CreateFcn(hObject, eventdata, handles) %#ok % hObject handle to popupTabelData (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % Menonaktifkan toolbar function toolBar_nonAktif(hObject,handles) set(handles.tBtnZoomIn,'Value',0); set(handles.tBtnZoomOut,'Value',0); set(handles.tBtnHand,'Value',0); set(handles.tBtnRotasi,'Value',0); set(handles.tBtnDataCursor,'Value',0); set(handles.tBtnGrid,'Value',0); zoom off; pan off; rotate3d off; datacursormode off; guidata(hObject,handles);
% --- Executes on slider movement. function sliderColorBGAxes_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to sliderColorBGAxes (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
103
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
% Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider % Mengubah warna axex x=get(hObject,'Value'); whitebg(gcf,[x x x]); btnProses_Callback(hObject, eventdata, handles); % Pengaturan tabel label dendrogram posPanAHC=get(handles.pAHC,'Position'); posPanPCA=get(handles.pPCA,'Position'); if posPanAHC(1) == posPanPCA(1) set(handles.tblLabelSingle,'ColumnWidth',{30 50}); set(handles.tblLabelAverage,'ColumnWidth',{30 50}); set(handles.tblLabelComplete,'ColumnWidth',{30 50}); set(handles.tblJmlClsSingle,'ColumnWidth',{40 40}); set(handles.tblJmlClsAverage,'ColumnWidth',{40 40}); set(handles.tblJmlClsComplete,'ColumnWidth',{40 40}); end % --- Executes during object creation, after setting all properties. function sliderColorBGAxes_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to sliderColorBGAxes (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes on button press in tBtnZoomIn. function tBtnZoomIn_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to tBtnZoomIn (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of tBtnZoomIn inValue=get(handles.tBtnZoomIn,'Value'); hZoomIn=zoom;
104
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
105
if inValue==1 set(handles.tBtnZoomOut,'Value',0); set(handles.tBtnHand,'Value',0); set(handles.tBtnRotasi,'Value',0); set(handles.tBtnDataCursor,'Value',0); hZoomIn.Enable='on'; hZoomIn.Direction='in'; setAllowAxesZoom(hZoomIn,handles.axDendroSingle,1); setAllowAxesZoom(hZoomIn,handles.axDendroAverage,1); setAllowAxesZoom(hZoomIn,handles.axDendroComplete,1); setAllowAxesZoom(hZoomIn,handles.axClsSingle,false); setAllowAxesZoom(hZoomIn,handles.axClsAverage,false); setAllowAxesZoom(hZoomIn,handles.axClsComplete,false); setAllowAxesZoom(hZoomIn,handles.axSSESingle,1); setAllowAxesZoom(hZoomIn,handles.axSSEAverage,1); setAllowAxesZoom(hZoomIn,handles.axSSEComplete,1); else hZoomIn.Enable='off'; set(handles.tBtnZoomIn,'Value',0); end
% --- Executes on button press in tBtnZoomOut. function tBtnZoomOut_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to tBtnZoomOut (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of tBtnZoomOut outValue=get(handles.tBtnZoomOut,'Value'); hZoomOut=zoom; if outValue==1 set(handles.tBtnZoomIn,'Value',0); set(handles.tBtnHand,'Value',0); set(handles.tBtnRotasi,'Value',0); set(handles.tBtnDataCursor,'Value',0); hZoomOut.Enable='on'; hZoomOut.Direction='out'; setAllowAxesZoom(hZoomOut,handles.axDendroSingle,1); setAllowAxesZoom(hZoomOut,handles.axDendroAverage,1); setAllowAxesZoom(hZoomOut,handles.axDendroComplete,1); setAllowAxesZoom(hZoomOut,handles.axClsSingle,false); setAllowAxesZoom(hZoomOut,handles.axClsAverage,false); setAllowAxesZoom(hZoomOut,handles.axClsComplete,false); setAllowAxesZoom(hZoomOut,handles.axSSESingle,1); setAllowAxesZoom(hZoomOut,handles.axSSEAverage,1); setAllowAxesZoom(hZoomOut,handles.axSSEComplete,1); else
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
hZoomOut.Enable='off'; set(handles.tBtnZoomOut,'Value',0); end % --- Executes on button press in tBtnHand. function tBtnHand_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to tBtnHand (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of tBtnHand panValue=get(handles.tBtnHand,'Value'); hPan=pan; if panValue==1 set(handles.tBtnZoomIn,'Value',0); set(handles.tBtnZoomOut,'Value',0); set(handles.tBtnRotasi,'Value',0); set(handles.tBtnDataCursor,'Value',0); hPan.Enable = 'on'; setAllowAxesPan(hPan,handles.axDendroSingle,1); setAllowAxesPan(hPan,handles.axDendroAverage,1); setAllowAxesPan(hPan,handles.axDendroComplete,1); setAllowAxesPan(hPan,handles.axClsSingle,false); setAllowAxesPan(hPan,handles.axClsAverage,false); setAllowAxesPan(hPan,handles.axClsComplete,false); setAllowAxesPan(hPan,handles.axSSESingle,1); setAllowAxesPan(hPan,handles.axSSEAverage,1); setAllowAxesPan(hPan,handles.axSSEComplete,1); else hPan.Enable='off'; set(handles.tBtnHand,'Value',0); end % --- Executes on button press in tBtnRotasi. function tBtnRotasi_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to tBtnRotasi (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of tBtnRotasi rotasiValue=get(handles.tBtnRotasi,'Value'); if rotasiValue==1 set(handles.tBtnZoomIn,'Value',0); set(handles.tBtnZoomOut,'Value',0); set(handles.tBtnHand,'Value',0); set(handles.tBtnDataCursor,'Value',0);
106
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
rotate3d on else rotate3d off set(handles.tBtnRotasi,'Value',0); end % --- Executes on button press in tBtnDataCursor. function tBtnDataCursor_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to tBtnDataCursor (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of tBtnDataCursor dataCursorValue=get(handles.tBtnDataCursor,'Value'); if dataCursorValue==1 set(handles.tBtnZoomIn,'Value',0); set(handles.tBtnZoomOut,'Value',0); set(handles.tBtnHand,'Value',0); set(handles.tBtnRotasi,'Value',0); datacursormode on; else datacursormode off; set(handles.tBtnDataCursor,'Value',0); end % --- Executes on button press in tBtnGrid. function tBtnGrid_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to tBtnGrid (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of tBtnGrid gridValue=get(handles.tBtnGrid,'Value'); if gridValue==1 set(handles.axSSESingle,'XGrid','on','YGrid','on'); set(handles.axSSEAverage,'XGrid','on','YGrid','on'); set(handles.axSSEComplete,'XGrid','on','YGrid','on'); else set(handles.axSSESingle,'XGrid','off','YGrid','off'); set(handles.axSSEAverage,'XGrid','off','YGrid','off'); set(handles.axSSEComplete,'XGrid','off','YGrid','off'); end % --- Executes on button press in btnSimpanAHC_SSE. function btnSimpanAHC_SSE_Callback(hObject,...
107
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
108
eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to btnSimpanAHC_SSE (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Menghilangkan peringatan penulisan di excel warning('off', 'MATLAB:xlswrite:AddSheet'); % Memilih alamat folder penyimpanan pilihan=questdlg({'Apakah Anda akan menyimpan dendrogram' 'dan leaf node/label, serta hasil sse?'},... 'Simpan hasil AHC dan SSE',... 'Ya','Tidak','Ya'); switch pilihan case 'Tidak' uiwait(msgbox('Anda membatalkan penyimpanan.',... 'Peringatan','modal')); case 'Ya' % Menampilkan dialog pilihan folder tempat penyimpanan alamatPenyimpanan = uigetdir('Data\AHC\','Pilih Folder Penyimpanan'); if alamatPenyimpanan ~= 0 % Pembentukan folder dan penentuan alamat untuk penyimpanan namaFolder = datestr(now); % Nama folder adalah tanggal dan jam sekarang namaFolder = strrep(namaFolder, ':', '-'); % Mengganti format ':' pada jam menjadi '-' % Menambahkan keterangan pada nama folder dengan ZScore atau tidak if (get(handles.chkZScore,'Value') == get(handles.chkZScore,'Max')) namaFolder=[namaFolder,'_ZScore']; else namaFolder=[namaFolder,'_nonZScore']; end status = mkdir(alamatPenyimpanan,namaFolder); %#ok % Pembentukan dan penempatan folder penyimpanan pada alamat yang telah ditentukan pengguna alamatPenyimpanan = strcat(alamatPenyimpanan,'\',namaFolder); % Mengambil alamat folder penyimpanan % Menyimpan axes dendrogram, cluster, dan SSE % Dendrogram single linkage axesDisimpan = getframe(handles.axDendroSingle); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
109
alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axDendroSingle.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % Dendrogram average linkage axesDisimpan = getframe(handles.axDendroAverage); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axDendroAverage.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % Dendrogram complete linkage axesDisimpan = getframe(handles.axDendroComplete); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axDendroComplete.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % Cluster single linkage axesDisimpan = getframe(handles.axClsSingle); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axClsSingle.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % Cluster average linkage axesDisimpan = getframe(handles.axClsAverage); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axClsAverage.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % Cluster Complete linkage axesDisimpan = getframe(handles.axClsComplete); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axClsComplete.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % SSE single linkage
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
110
axesDisimpan = getframe(handles.axSSESingle); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axSSESingle.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % SSE average linkage axesDisimpan = getframe(handles.axSSEAverage); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axSSEAverage.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % SSE complete linkage axesDisimpan = getframe(handles.axSSEComplete); % Mengambil frame axes dendrogram dari GUI axesDisimpan = frame2im(axesDisimpan); % Konversi frame axes ke gambar alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','axSSEComplete.jpg'); % Penentuan alamat dan nama file gambar format '*.jpg' imwrite(axesDisimpan, alamatNamaFilePenyimpanan); % Menyimpan gambar % Menyimpan hasil SSE dalam tabel alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','SSE.xls'); % Penentuan alamat dan nama file label format '*.xls' namaKolomDitulis={'Percobaan','JumlahCluster','SSE'}; [m,~]=size(handles.clusterSSESingle); percobaan=zeros(m,1); for i=1:m; percobaan(i)=i; end % Tabel SSE single linkage dtSSE=[percobaan,handles.clusterSSESingle]; dtSSE=mat2cell(dtSSE,... ones(size(dtSSE,1),1),... ones(size(dtSSE,2),1)); %#ok<MMTC> dtSSE=[namaKolomDitulis;dtSSE]; xlswrite(alamatNamaFilePenyimpanan,dtSSE,1); % Tabel SSE average linkage dtSSE=[percobaan,handles.clusterSSEAverage]; dtSSE=mat2cell(dtSSE,... ones(size(dtSSE,1),1),... ones(size(dtSSE,2),1)); %#ok<MMTC> dtSSE=[namaKolomDitulis;dtSSE]; xlswrite(alamatNamaFilePenyimpanan,dtSSE,2);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
111
% Tabel SSE complete linkage dtSSE=[percobaan,handles.clusterSSEComplete]; dtSSE=mat2cell(dtSSE,... ones(size(dtSSE,1),1),... ones(size(dtSSE,2),1)); %#ok<MMTC> dtSSE=[namaKolomDitulis;dtSSE]; xlswrite(alamatNamaFilePenyimpanan,dtSSE,3); % Merubah nama sheet di file excel simpanan e = actxserver('Excel.Application'); % Mengaktifkan Activex server ewb = e.Workbooks.Open(alamatNamaFilePenyimpanan); % Membuka file ewb.Worksheets.Item(1).Name = 'SSE Single'; % Mengganti nama sheet1 ewb.Worksheets.Item(2).Name = 'SSE Average'; % Mengganti nama sheet2 ewb.Worksheets.Item(3).Name = 'SSE Complete'; % Mengganti nama sheet3 ewb.Save % Menyimpan file kembali ewb.Close(false) e.Quit e.delete % Menyimpan label dendrogram alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','labelDendrogram.xls'); % Penentuan alamat dan nama file label format '*.xls' namaKolomDitulis={'NO','CLS','NIS'}; % Label untuk dendrogram single linkage dataTabel=get(handles.tblLabelSingle,'Data'); dataRow=get(handles.tblLabelSingle,'RowName'); dataRow=mat2cell(dataRow,ones(size(dataRow,1),1)); dataTabel=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> tblLabelSingle=[dataRow,dataTabel]; tblLabelSingle=[namaKolomDitulis;tblLabelSingle]; xlswrite(alamatNamaFilePenyimpanan,tblLabelSingle,1); % Label untuk dendrogram average linkage dataTabel=get(handles.tblLabelAverage,'Data'); dataRow=get(handles.tblLabelAverage,'RowName'); dataRow=mat2cell(dataRow,ones(size(dataRow,1),1)); dataTabel=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> tblLabelAverage=[dataRow,dataTabel]; tblLabelAverage=[namaKolomDitulis;tblLabelAverage]; xlswrite(alamatNamaFilePenyimpanan,tblLabelAverage,2); % Label untuk dendrogram complete linkage dataTabel=get(handles.tblLabelComplete,'Data');
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
112
dataRow=get(handles.tblLabelComplete,'RowName'); dataRow=mat2cell(dataRow,ones(size(dataRow,1),1)); dataTabel=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> tblLabelComplete=[dataRow,dataTabel]; tblLabelComplete=[namaKolomDitulis;tblLabelComplete]; xlswrite(alamatNamaFilePenyimpanan,tblLabelComplete,3); % Merubah nama sheet di file excel simpanan e = actxserver('Excel.Application'); % Mengaktifkan Activex server ewb = e.Workbooks.Open(alamatNamaFilePenyimpanan); % Membuka file ewb.Worksheets.Item(1).Name = 'Single'; % Mengganti nama sheet1 ewb.Worksheets.Item(2).Name = 'Average'; % Mengganti nama sheet2 ewb.Worksheets.Item(3).Name = 'Complete'; % Mengganti nama sheet3 ewb.Save % Menyimpan file kembali ewb.Close(false) e.Quit e.delete % Menyimpan jumlah anggota per cluster alamatNamaFilePenyimpanan = strcat(alamatPenyimpanan,'\','jumlahAnggotaPerClustering.xls'); % Penentuan alamat dan nama file label format '*.xls' namaKolomDitulis={'CLS','Jumlah'}; % Jumlah anggota per cluster single linkage dataTabel=get(handles.tblJmlClsSingle,'Data'); dataTabel=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> tblJmlClsSingle=[namaKolomDitulis;dataTabel]; xlswrite(alamatNamaFilePenyimpanan,tblJmlClsSingle,1); % Jumlah anggota per cluster average linkage dataTabel=get(handles.tblJmlClsAverage,'Data'); dataTabel=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> tblJmlClsAverage=[namaKolomDitulis;dataTabel]; xlswrite(alamatNamaFilePenyimpanan,tblJmlClsAverage,2); % Jumlah anggota per cluster complete linkage dataTabel=get(handles.tblJmlClsComplete,'Data'); dataTabel=mat2cell(dataTabel,... ones(size(dataTabel,1),1),... ones(size(dataTabel,2),1)); %#ok<MMTC> tblJmlClsComplete=[namaKolomDitulis;dataTabel];
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
113
xlswrite(alamatNamaFilePenyimpanan,tblJmlClsComplete,3); % Merubah nama sheet di file excel simpanan e = actxserver('Excel.Application'); % Mengaktifkan Activex server ewb = e.Workbooks.Open(alamatNamaFilePenyimpanan); % Membuka file ewb.Worksheets.Item(1).Name = 'Cluster Single'; % Mengganti nama sheet1 ewb.Worksheets.Item(2).Name = 'Cluster Average'; % Mengganti nama sheet2 ewb.Worksheets.Item(3).Name = 'Cluster Complete'; % Mengganti nama sheet3 ewb.Save % Menyimpan file kembali ewb.Close(false) e.Quit e.delete uiwait(msgbox('Proses penyimpanan berhasil.',... 'Pesan','modal')); end end % --- Executes on button press in btnSimpanPanPCA. function btnSimpanPanPCA_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to btnSimpanPanPCA (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
set(handles.btnSimpanPanPCA,'Visible','off'); % Panel PCA dan panel tabel data disembunyikan set(handles.pPCA,'Visible','off'); set(handles.pTabelDasarData,'Visible','off'); % Posisi panel AHC diperbesar dengan width ditambah dengan milik panel PCA posPanPCA=get(handles.pPCA,'Position'); posPanAHC_Baru=handles.posPanAHC; posPanAHC_Baru(1)=posPanPCA(1); posPanAHC_Baru(3)=posPanAHC_Baru(3)+posPanPCA(3); set(handles.pAHC,'Position',posPanAHC_Baru); % Pengaturan Ukuran button tampilkan panel PCA % dan ketiga tabel label dendrogram serta jumlah cluster posBtnTampilPanPCA_Baru=get(handles.btnTampilPanPCA,'Position'); posBtnTampilPanPCA_Baru(3)=0.015; set(handles.btnTampilPanPCA,'Position',posBtnTampilPanPCA_Baru); % Tabel label Dendrogram set(handles.tblLabelSingle,'ColumnWidth',{30 50}); set(handles.tblLabelAverage,'ColumnWidth',{30 50});
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
114
set(handles.tblLabelComplete,'ColumnWidth',{30 50}); % Tabel jumlah percluster set(handles.tblJmlClsSingle,'ColumnWidth',{40 40}); set(handles.tblJmlClsAverage,'ColumnWidth',{40 40}); set(handles.tblJmlClsComplete,'ColumnWidth',{40 40}); % Menampilkan button tampil panel PCA set(handles.btnTampilPanPCA,'Visible','on'); % --- Executes on button press in btnTampilPanPCA. function btnTampilPanPCA_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to btnTampilPanPCA (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Pengaturan tampilan tombol dan panel PCA dan AHC ke posisi awal set(handles.pPCA,'Visible','on'); set(handles.pTabelDasarData,'Visible','on'); set(handles.pAHC,'Position',handles.posPanAHC); set(handles.btnSimpanPanPCA,'Visible','on'); set(handles.btnTampilPanPCA,'Visible','off'); set(handles.btnTampilPanPCA,'Position',handles.posBtnTampilPanPCA) ; set(handles.pLabelSingle,'Position',handles.posLabSingle); set(handles.pLabelAverage,'Position',handles.posLabAverage); set(handles.pLabelComplete,'Position',handles.posLabComplete); set(handles.tblLabelSingle,'ColumnWidth',{20 30}); set(handles.tblLabelAverage,'ColumnWidth',{20 30}); set(handles.tblLabelComplete,'ColumnWidth',{20 30}); set(handles.tblJmlClsSingle,'ColumnWidth',{25 25}); set(handles.tblJmlClsAverage,'ColumnWidth',{25 25}); set(handles.tblJmlClsComplete,'ColumnWidth',{25 25}); function edInputFile_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to edInputFile (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edInputFile as text % str2double(get(hObject,'String')) returns contents of edInputFile as a double % --- Executes during object creation, after setting all properties. function edInputFile_CreateFcn(hObject,... eventdata,...
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
115
handles) %#ok % hObject handle to edInputFile (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popDataAwal. function popDataAwal_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to popDataAwal (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popDataAwal contents as cell array % contents{get(hObject,'Value')} returns selected item from popDataAwal popDataAwal=get(hObject,'Value'); % TooltipString batasan data awal if popDataAwal>1 set(hObject,... 'TooltipString',... sprintf('Batasan data awal\n Data: %s \n Indeks: %s',... num2str(handles.anggotaAwalnya(popDataAwal-1)),... num2str(popDataAwal-1))); else set(hObject,... 'TooltipString',... 'Batasan data awal'); end % --- Executes during object creation, after setting all properties. function popDataAwal_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to popDataAwal (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
116
% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popDataAkhir. function popDataAkhir_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to popDataAkhir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popDataAkhir contents as cell array % contents{get(hObject,'Value')} returns selected item from popDataAkhir popDataAkhir=get(hObject,'Value'); % TooltipString batasan data akhir if popDataAkhir>1 set(hObject,... 'TooltipString',... sprintf('Batasan data akhir\n Data: %s \n Indeks: %s',... num2str(handles.anggotaAwalnya(popDataAkhir-1)),... num2str(popDataAkhir-1))); else set(hObject,... 'TooltipString',... 'Batasan data akhir'); end % --- Executes during object creation, after setting all properties. function popDataAkhir_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to popDataAkhir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
117
% --- Executes on selection change in popAtributAwal. function popAtributAwal_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to popAtributAwal (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popAtributAwal contents as cell array % contents{get(hObject,'Value')} returns selected item from popAtributAwal popAtributAwal=get(hObject,'Value'); % TooltipString batasan atribut awal if popAtributAwal>1 set(hObject,... 'TooltipString',... sprintf('Batasan atribut awal\n Atribut: %s \n Indeks: %s',... handles.featureAwalnya{popAtributAwal-1},... num2str(popAtributAwal-1))); else set(hObject,... 'TooltipString',... 'Batasan atribut awal'); end
% --- Executes during object creation, after setting all properties. function popAtributAwal_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to popAtributAwal (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on selection change in popAtributAkhir. function popAtributAkhir_Callback(hObject,... eventdata,... handles) %#ok
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
% hObject % eventdata MATLAB % handles
118
handle to popAtributAkhir (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popAtributAkhir contents as cell array % contents{get(hObject,'Value')} returns selected item from popAtributAkhir popAtributAkhir=get(hObject,'Value'); % TooltipString batasan atribut akhir if popAtributAkhir>1 set(hObject,... 'TooltipString',... sprintf('Batasan atribut akhir\n Atribut: %s \n Indeks: %s',... handles.featureAwalnya{popAtributAkhir-1},... num2str(popAtributAkhir-1))); else set(hObject,... 'TooltipString',... 'Batasan atribut akhir'); end % --- Executes during object creation, after setting all properties. function popAtributAkhir_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to popAtributAkhir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in chkZScore. function chkZScore_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to chkZScore (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
119
% Hint: get(hObject,'Value') returns toggle state of chkZScore function edJmlPC_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to edJmlPC (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edJmlPC as text % str2double(get(hObject,'String')) returns contents of edJmlPC as a double btnProses_Callback(hObject, eventdata, handles); % --- Executes during object creation, after setting all properties. function edJmlPC_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to edJmlPC (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlClusterAwal_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to edJmlClusterAwal (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edJmlClusterAwal as text % str2double(get(hObject,'String')) returns contents of edJmlClusterAwal as a double
% --- Executes during object creation, after setting all properties. function edJmlClusterAwal_CreateFcn(hObject,...
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
120
eventdata,... handles) %#ok % hObject handle to edJmlClusterAwal (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlClusterAkhir_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to edJmlClusterAkhir (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edJmlClusterAkhir as text % str2double(get(hObject,'String')) returns contents of edJmlClusterAkhir as a double
% --- Executes during object creation, after setting all properties. function edJmlClusterAkhir_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to edJmlClusterAkhir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edNamaFile_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to edNamaFile (see GCBO)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
% eventdata MATLAB % handles
121
reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edNamaFile as text % str2double(get(hObject,'String')) returns contents of edNamaFile as a double
% --- Executes during object creation, after setting all properties. function edNamaFile_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to edNamaFile (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlData_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to edJmlData (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edJmlData as text % str2double(get(hObject,'String')) returns contents of edJmlData as a double
% --- Executes during object creation, after setting all properties. function edJmlData_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to edJmlData (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
122
if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edJmlFeature_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to edJmlFeature (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edJmlFeature as text % str2double(get(hObject,'String')) returns contents of edJmlFeature as a double % --- Executes during object creation, after setting all properties. function edJmlFeature_CreateFcn(hObject,... eventdata,... handles) %#ok % hObject handle to edJmlFeature (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % ------------------------------------------------------------------function mnTutup_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to mnTutup (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %close(Main); close all force % ------------------------------------------------------------------function mnBantuan_Callback(hObject,... eventdata,...
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
123
handles) %#ok % hObject % eventdata MATLAB % handles
handle to mnBantuan (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% ------------------------------------------------------------------function mnManual_Callback(hObject,... eventdata,... handles) %#ok % hObject handle to mnManual (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) winopen('Manual.pdf'); % ------------------------------------------------------------------function mnTentang_Callback(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles Tentang
handle to mnTentang (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% --- Executes on mouse motion over figure - except title and menu. function Main_WindowButtonMotionFcn(hObject,... eventdata,... handles) %#ok % hObject % eventdata MATLAB % handles
handle to Main (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Pointer mouse di program posisiMouse = get(gcf,'CurrentPoint'); set(handles.txtMousePointerX,'String',['X: ',num2str(posisiMouse(1,1))]); set(handles.txtMousePointerY,'String',['Y: ',num2str(posisiMouse(1,2))]); drawnow;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
124
3. funcPPola.m function func = funcPPola % ====================== FUNCTION PENGENALAN POLA ========================= % funcPPola adalah singkatan dari Function Pengenalan Pola. Dalam file ini % terdapat berbagai fungsi yang digunakan untuk: % PENGENALAN POLA KEBERHASILAN SEMINARIS % DENGAN MENGGUNAKAN AGGLOMERATIVE HIERARCHICAL CLUSTERING % Sebuah Studi Kasus atas Keberhasilan para Seminaris % Di Seminari Menengah St. Petrus Canisius, Mertoyudan Magelang % (Sekripsi) % % Adapun function utama yang digunakan beserta keterangannya adalah: % % PRINCIPAL COMPONENT ANALYSIS (PCA) ====================================== % Fungsi ini adalah utuk feature analisis dengan menggunakan PCA. % % FUNCTION % function [ dataHasil, indeksPCA ] = pca( data, jmlPC ) % % MASUKAN % data : Matriks data yang akan diolah dengan PCA % jmlPC : Jumlah principal component yang dikehendaki % % KELUARAN % dataHasil : Matriks data yang telah diolah oleh PCA % indeksPCA : Indeks data yang digunakan setelah diolah oleh PCA % % KETERANGAN % Sumber : The MathWorks, Inc. % Jonathon Shlens, "A Tutorial on % Principal Component Analysis", % (Jurnal), 2014. % Modifikasi : Poldo Andreas Situmorang, 2014 % ================================================================== ======= % % AGGLOMERATIVE HIERARCHICAL CLUSTERING (AHC) ============================= % Fungsi ini adalah implementasi dari algoritma AHC. % % FUNCTION % function [ dataHasil ] = ahc(data, linkage) % % MASUKAN % data : Matriks data yang akan diolah dengan AHC % linkage : Method linkage yang digunakan, yaitu 'single', 'average' % atau 'complete' % % KELUARAN
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
125
% dataHasil : Matriks data yang telah diolah dengan AHC % % KETERANGAN % Sumber : The MathWorks, Inc. % Modifikasi : Poldo Andreas Situmorang, 2014 % ================================================================== ======= % % SUM OF SQUARES ERROR (SSE) ============================================== % Fungsi yang dinamakan sseData ini adalah untuk mencari SSE dari masing% masing percobaan cluster yang dilakukan. % % FUNCTION % function [ clusterSSE ] = sseData(clusterAwal,clusterAkhir,data) % % MASUKAN % clusterAwal : Jumlah cluster awal yang akan dicari nilai SSE-nya % clusterAkhir : Jumlah cluster akhir yang akan dicari nilai SSE-nya % data : Matriks data hasil AHC % % KELUARAN % clusterSSE : Matriks cluster yang berisi jumlah cluster dari % masing-masing percobaan dengan nilai SSE dari % masing-masing cluster % % KETERANGAN % Sumber : The MathWorks, Inc. % Modifikasi : Poldo Andreas Situmorang, 2015 % ================================================================== ======= func.pca=@pca; func.ahc=@ahc; func.tampilDendrogram=@tampilDendrogram; func.leafNodeDendro=@leafNodeDendro; func.sseData=@sseData; func.akurasi=@akurasi; func.tampilCluster=@tampilCluster; func.penangananError=@penangananError; end %% % =============================== PCA =================================== % function [ dataHasil, indeksPCA ] = pca( data, jmlPC) % IMPLEMENTASI ALGORITMA PCA % 1. Matriks X adalah hasil pengurangan rata-rata dari setiap dimensi data pada matriks data.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
[jmlBaris,jmlKolom] = size(data); rerataData = mean(data); X=data; for i=1:jmlBaris for j=1:jmlKolom X(i,j)=data(i,j)-rerataData(j); end end % 2. Hitung covariance matrix dari matriks X. Cx=cov(X); % Cx=X'*X; % Cx = 1 / (jmlKolom-1) * X * X'; % 3. Hitung eigenvector dan eigenvalue dari covariance matrix. % [eigenvector, eigenvalue] = eig(dataCov); [eigenvector,eigenvalue]=eig(Cx); % [eigenvector, eigenvalue] = eig(cov(dataCov)); % 4. Pilih component dan bentuk vector feature dan principal component dari % eigenvector yang memiliki eigenvalue paling besar diambil (decreasing order). % D2=diag(sort(diag(eigenvalue),'descend')); eigenvalue=diag(eigenvalue); [~, indeks]=sort(eigenvalue,'descend'); % eigenvalue = eigenvalue(indeks); featureVector=eigenvector(:,indeks); % 5. Menurunkan data set yang baru. % dataBaru = featureVector * X; dataBaru = X*featureVector; % assignin('base','X',X); % assignin('base','featureVector',featureVector); % jmlPC = jumlah principal component yang ingin digunakan if jmlPC==0 [jmlIndeks,~]=size(indeks); indeksPCA=indeks; dataHasil=dataBaru(:,1:jmlIndeks); else indeksPCA=indeks(1:jmlPC); dataHasil = dataBaru(:,1:jmlPC); end end %% % =============================== AHC =================================== % function[ dataHasil ] = ahc(data, linkage) % IMPLEMENTASI ALGORITMA AHC % 1. Hitung Matrik Jarak antar data.
126
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
127
% 2. Ulangi langkah 3 dan 4 higga hanya satu kelompok yang tersisa. % 3. Gabungkan dua kelompok terdekat berdasarkan parameter kedekatan % yang ditentukan. % 4. Perbarui Matrik Jarak antar data untuk merepresentasikan kedekatan % di antara kelompok baru dan kelompok yang masih tersisa. % Perhitungan jarak digunakan euclidean dataEuclidian = pdist(data, 'euclidean'); % Set data matriks dari perhitungan jarak eiclidean kolom = size(dataEuclidian,2); %baris = ceil(sqrt(2*kolom)); baris = (1+sqrt(1+8*kolom))/2; % Deklarasi matriks hasil dataHasil=zeros(baris-1,3); % Saat memperbarui cluster , indeks cluster terus berubah, % R adalah vektor indeks pemetaan indeks asli dengan arus ( baris, kolom ) % indeks di Y. jmlPoinDiSetiapCluster menunjukkan berapa banyak poin % yang terkandung dalam setiap cluster . jmlPoinDiSetiapCluster = zeros(1,2*baris-1); jmlPoinDiSetiapCluster(1:baris) = 1; kolom = baris; % Karena baris berubah, baris disimpan di kolom. vektorIndeks = 1:kolom; % Set data linkage yang digunakan loop=1; if strcmp(linkage,'single') while loop ~= kolom [v,k] = min(dataEuclidian); % Mencari dataHasil [hasilData,i,j,I,J]=olahDataHasil(loop,baris,v,k,vektorIndeks); dataHasil(loop,:)=hasilData(loop,:); dataEuclidian(I) = min(dataEuclidian(I),dataEuclidian(J)); [dataEuclidian,~,baris,jmlPoinDiSetiapCluster,vektorIndeks]=update Matriks(dataEuclidian,J,baris,jmlPoinDiSetiapCluster,kolom,loop,ve ktorIndeks,i,j); loop=loop+1; end elseif strcmp(linkage,'average') while loop ~= kolom [v,k] = average(dataEuclidian,baris,jmlPoinDiSetiapCluster,vektorIndeks); % Mencari dataHasil [hasilData,i,j,I,J]=olahDataHasil(loop,baris,v,k,vektorIndeks); dataHasil(loop,:)=hasilData(loop,:);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
128
dataEuclidian(I) = dataEuclidian(I) + dataEuclidian(J); [dataEuclidian,~,baris,jmlPoinDiSetiapCluster,vektorIndeks]=update Matriks(dataEuclidian,J,baris,jmlPoinDiSetiapCluster,kolom,loop,ve ktorIndeks,i,j); loop=loop+1; end elseif strcmp(linkage,'complete') while loop ~= kolom [v,k] = min(dataEuclidian); % Mencari dataHasil [hasilData,i,j,I,J]=olahDataHasil(loop,baris,v,k,vektorIndeks); dataHasil(loop,:)=hasilData(loop,:); dataEuclidian(I) = max(dataEuclidian(I),dataEuclidian(J)); [dataEuclidian,~,baris,jmlPoinDiSetiapCluster,vektorIndeks]=update Matriks(dataEuclidian,J,baris,jmlPoinDiSetiapCluster,kolom,loop,ve ktorIndeks,i,j); loop=loop+1; end else msgbox('Tidak ada linkage yang dipilih','Peringatan'); end end % Digunakan jika linkage ahc yang dipilih adalah average function [v,k]=average(dataEuclidian,... baris,... jmlPoinDiSetiapCluster,... vektorIndeks) p = (baris-1):-1:2; I = zeros(baris*(baris-1)/2,1); I(cumsum([1 p])) = 1; I = cumsum(I); J = ones(baris*(baris-1)/2,1); J(cumsum(p)+1) = 2-p; J(1)=2; J = cumsum(J); W = jmlPoinDiSetiapCluster(vektorIndeks(I)).*jmlPoinDiSetiapCluster(ve ktorIndeks(J)); [v, k] = min(dataEuclidian./W); end % Pencarian data hasil function [dataHasil,i,j,I,J]=olahDataHasil(loop,... baris,v,... k,vektorIndeks) i = floor(baris+1/2-sqrt(baris^2-baris+1/4-2*(k-1))); j = k - (i-1)*(baris-i/2)+i; % Memasukkan nilai ke data hasil dataHasil(loop,:)= [vektorIndeks(i) vektorIndeks(j) v]; % Penyimpanan sementara I1 = 1:(i-1); I2 = (i+1):(j-1); I3 = (j+1):baris;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
I = [I1.*(baris-(I1+1)/2)-baris+i i*(baris-(i+1)/2)-baris+I2 i*(baris-(i+1)/2)-baris+I3]; J = [I1.*(baris-(I1+1)/2)-baris+j I2.*(baris-(I2+1)/2)-baris+j j*(baris-(j+1)/2)-baris+I3]; end % Update matriks function [dataEuclidian,... J,baris,... jmlPoinDiSetiapCluster,... vektorIndeks]=updateMatriks(dataEuclidian,... J,baris,... jmlPoinDiSetiapCluster,... kolom,loop,vektorIndeks,i,j) J = [J i*(baris-(i+1)/2)-baris+j]; dataEuclidian(J) = []; % update baris, jmlPoinDiSetiapCluster, vektorIndeks baris = baris-1; jmlPoinDiSetiapCluster(kolom+loop) = jmlPoinDiSetiapCluster(vektorIndeks(i)) + jmlPoinDiSetiapCluster(vektorIndeks(j)); vektorIndeks(i) = kolom+loop; vektorIndeks(j:(kolom-1))=vektorIndeks((j+1):kolom); end %% % ======================== Tampil Dendrogram ============================ % function[dataIndeks]=tampilDendrogram(dataAHC,jmlCluster) warna = dataAHC(end-jmlCluster+2,3)-eps; [dendro,~,dataIndeks]= dendrogram(dataAHC, 0,'colorthreshold',warna); if size(dataIndeks,2)>100 set(dendro, 'LineWidth',1) else set(dendro, 'LineWidth',2) end set(gca, 'XTickLabel',[], 'TickLength',[0 0]) set(gca,'YColor',[0.4,0.4,0.4]); % set(gca,'YTickLabel',[])
% Pengaturan YLim yLim=get(gca, 'YLim'); if yLim(2)>100 yLim(2)=yLim(2)+100; else yLim(2)=yLim(2)+3; end
129
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
130
set(gca,'YLim',yLim) end % Leaf nodes dendrogram function [leafNode]=leafNodeDendro(dataHasil,... jmlCluster,... labelDendro,... anggota) pengelompokanCluster = cluster(dataHasil, 'maxclust',jmlCluster); % Indeks per cluster noCls=zeros(size(pengelompokanCluster)); klompokCluster=1; indeksPerCluster=1; for i=1:size(pengelompokanCluster,1) for j=1:length(find(pengelompokanCluster==klompokCluster)) noCls(indeksPerCluster)=j; indeksPerCluster=indeksPerCluster+1; end klompokCluster=klompokCluster+1; end % Leaf nodes label=zeros(size(labelDendro)); for i=1:size(labelDendro,2) label(i)=anggota(labelDendro(i)); end cls=sort(pengelompokanCluster); leafNode=[noCls(1:size(label'),:) cls(1:size(label'),:) label']; % assignin('base', 'leafNode', leafNode); end %% % ========================= Tampil cluster ============================== % function [jmlLabelCls]=tampilCluster(dataPCA,... dataHasil,... jmlCluster) jmlCls=jmlCluster; cls = cluster(dataHasil,'maxclust',jmlCls); x=dataPCA(:,1); y=dataPCA(:,2); z=dataPCA(:,3); scatter3(x,y,z,50,cls,'filled'); jmlLabelCls=zeros(jmlCls,2); for i=1:jmlCls jmlLabelCls(i,1)=i; jmlLabelCls(i,2)=length(find(cls==i)); % Label pengelompokan % text(x(round(jmlLabelCls(i,2)/2)),y(round(jmlLabelCls(i,2)/2)),z(r ound(jmlLabelCls(i,2)/2)), num2str(jmlLabelCls(i,2)),...
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
131
% 'horizontal','left',... % 'vertical','bottom',... % 'FontSize', 12); end % Label percluster % text(x+0.1, y+0.1, num2str(cls)); % Label perindeks data % labels = num2str((1:size(dataPCA,1))','%d'); % text(x, y, z, labels, 'horizontal','left', 'vertical','bottom') % Sudut pandang x,y view(180,90); set(gca,'XColor',[0.4,0.4,0.4],'YColor',[0.4,0.4,0.4],'ZColor',[0. 4,0.4,0.4]); xlabel('X','FontSize',7), ylabel ('Y','FontSize',7), zlabel('Z','FontSize',7) % set(gca,'XTickLabel',[],'YTickLabel',[],'ZTickLabel',[]) end %% % ====================== Sum of Squares Error =========================== % function [ clusterSSE ] = sseData(clusterAwal,... clusterAkhir,... data) K=data; jmlPercobaanCutoff=(clusterAkhir-clusterAwal)+1; cutoff=clusterAwal; dataSSE=zeros(jmlPercobaanCutoff,1); urutanCluster=zeros(jmlPercobaanCutoff,1); for i=1:jmlPercobaanCutoff if cutoff>=2 Ck = cluster(K, 'maxclust',cutoff); % assignin('base','Ck',Ck); [m, ~]=size(Ck); x=[Ck(2:m,:) K(:,3)]; % SSE ss=zeros(cutoff,1); for j=1:cutoff % Rerata jml=0; for k=1:length(find(Ck==j)) if x(k,1)==j jml=jml+x(k,2); end end rerata=jml/length(find(Ck==j)); % sum of squared error n=1;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
%
132
for k=1:length(find(Ck==j)) if x(k,1)==j ss(n,1)=(x(k,2)-rerata)^2; ss(n,1)=power((dat(k,2)-rerata),2); n=n+1; end end
end dataSSE(i)=sum(ss,1); % Perjumlah SSE untuk tiap cluster percobaan urutanCluster(i)=cutoff; % Jumlah cluster untuk tampilan urutan di plot cutoff=cutoff+1; % Penambahan jumlah cluster 1 dari tiap cluster sebelumnya else msgbox('Jumlah cluster awal minimal 2.'); end end clusterSSE=[urutanCluster dataSSE]; tampilSSE(urutanCluster,jmlPercobaanCutoff,dataSSE,clusterAwal,clu sterAkhir); end % Tampil SSE function tampilSSE(urutanCluster,... jmlPercobaanCutoff,... dataSSE,... clusterAwal,... clusterAkhir) plot(urutanCluster,dataSSE,'-s',... 'LineWidth',1,... 'MarkerSize',5,... 'MarkerEdgeColor','auto',... 'MarkerFaceColor','auto'); for i=1:jmlPercobaanCutoff Y=int2str(dataSSE(i)); text(urutanCluster(i)+0.1,dataSSE(i),Y, 'HorizontalAlignment','left','VerticalAlignment','bottom','FontSiz e', 8); end x1=clusterAwal-1; x2=clusterAkhir+1; y1=min(dataSSE); y2=max(dataSSE); if y1 > 1000 && y2 > 1000 y1=y1-1000; y2=y2+3000; elseif y1 > 100 && y2 > 100 y1=y1-100; y2=y2+300; else
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
y1=y1-10; y2=y2+30; end xlim([x1,x2]); ylim([y1,y2]); set(gca,'XColor',[0.4,0.4,0.4],'YColor',[0.4,0.4,0.4]); % xlabel('Clustering'); % ylabel('Nilai SSE'); % title('\fontsize{16}\color{red}Sum Squared Error'); end %% % Penanganan kesalahan input function [hasil]=penangananError(JmlPCStr,... cls1Str,... cls2Str,... featureAwal,... anggota,... error,err) if error==0 tampilPesanError(err) else hasil=false; ex1=isnan(str2double(JmlPCStr)); ex2=isnan(str2double(cls1Str)); ex3=isnan(str2double(cls2Str)); ex4=strfind(JmlPCStr,','); ex5=strfind(JmlPCStr,'.'); ex6=strfind(JmlPCStr,'-'); ex7=strfind(cls1Str,','); ex8=strfind(cls1Str,'.'); ex9=strfind(cls1Str,'-'); ex10=strfind(cls2Str,','); ex11=strfind(cls2Str,'.'); ex12=strfind(cls2Str,'-'); exA=ex1 || ex2 || ex3... || ~isempty(ex4) || ~isempty(ex5)... || ~isempty(ex6) || ~isempty(ex7)... || ~isempty(ex8) || ~isempty(ex9)... || ~isempty(ex10) || ~isempty(ex11)... || ~isempty(ex12); if exA tampilPesanError(2); else JmlPCStrNum=str2double(JmlPCStr); cls1Num=str2double(cls1Str); cls2Num=str2double(cls2Str); exB=JmlPCStrNum > 0 ... && JmlPCStrNum < 3 ... || JmlPCStrNum > featureAwal...
133
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
134
|| cls1Num < 2 ... || cls1Num > cls2Num... || cls2Num > anggota; if exB tampilPesanError(2); else hasil=true; end end end end % Tampil kesalahan function tampilPesanError(err) if err==0 uiwait(msgbox({'Ada kesalahan pada pembatasan atribut.' '1. Jika batasan awal 0 maka batasan akhir harus 0,' ' begitu juga sebaliknya' '2. Batas atribut akhir harus lebih besar dari' ' batas atribut awal.' '3. Minimal jumlah atribut yang digunakan = 3'},... 'Kesalahan','error','modal')); elseif err==1 uiwait(msgbox({'Ada kesalahan pada pembatasan data.' '1. Jika batasan awal 0 maka batasan akhir harus 0,' ' begitu juga sebaliknya' '2. Jumlah data minimal sama dengan jumlah' ' cluster akhir (minimal 2)'},... 'Kesalahan','error','modal')); else uiwait(msgbox({'Anda kemungkinan melalukan satu pelanggaran' 'atau lebih dari beberapa aturan berikut:' ' 1. Semua inputan berupa bilangan cacah tanpa titik (.)' ' atau koma (,)' ' 2. Jumlah principal component minimal 3' ' dan tidak lebih dari jumlah feature data input' ' 3. Jumlah cluster awal minimal 2,' ' maksimal sama dengan cluster akhir' ' 4. Jumlah cluster akhir minimal sama dengan cluster awal,' ' maksimal sama dengan banyaknya data'},... 'Kesalahan','error','modal')); end end
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
135
4. Tentang.fig
5. Tentang.m function varargout = Tentang(varargin) % TENTANG MATLAB code for Tentang.fig % TENTANG, by itself, creates a new TENTANG or raises the existing % singleton*. % % H = TENTANG returns the handle to a new TENTANG or the handle to % the existing singleton*. % % TENTANG('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in TENTANG.M with the given input arguments. % % TENTANG('Property','Value',...) creates a new TENTANG or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Tentang_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Tentang_OpeningFcn via varargin.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
% % *See GUI Options on GUIDE's Tools menu. only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES
136
Choose "GUI allows
% Edit the above text to modify the response to help Tentang % Last Modified by GUIDE v2.5 14-Dec-2014 15:20:45 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Tentang_OpeningFcn, ... 'gui_OutputFcn', @Tentang_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT
% --- Executes just before Tentang is made visible. function Tentang_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Tentang (see VARARGIN) % Choose default command line output for Tentang handles.output = hObject; axes(handles.axLogoUSD); imshow('Images\LogoUSD.jpg'); axes(handles.axLogoSM); imshow('Images\LogoSM.jpg'); % Update handles structure guidata(hObject, handles); % UIWAIT makes Tentang wait for user response (see UIRESUME) % uiwait(handles.figure1);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
137
% --- Outputs from this function are returned to the command line. function varargout = Tentang_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output;