SKRIPSI
Oleh :
Engelbertus Vione
125314112
i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
A THESIS
By :
Engelbertus Vione
125314112
i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
SKRIPSI
Oleh:
Engelbertus Vione
125314112
Pembimbing,
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PENGESAHAN
Yogyakarta, ………………………….
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
MOTTO
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Saya menyatakan dengan sesungguhnya bahwa di dalam skripsi yang saya tulis
ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah
ilmiah.
Yogyakarta, ...................................
Penulis
Engelbertus Vione
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dibuat di Yogyakarta
Pada tanggal........................................…
Yang Menyatakan
Engelbertus Vione
PLAGIAT MERUPAKAN TINDAKAN TIDAK
ABSTRAK
Means
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK
ABSTRACT
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK
KATA PENGANTAR
Puji dan syukur penulis penjatkan kepada Tuhan Yang Maha Esa, telah
memberikan berkat dan karunia sehingga penulis mampu menyelesaikan tugas
akhir ini dengan baik.
1. Tuhan Yang Maha Esa yang senantiasa memberikan limpahan berkat dan
karuniaNya, serta menyertai penulis dalam mengerjakan tugas akhir ini.
2. Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D. selaku Dekan Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
3. JB. Budi Darmawan S.T., M.Sc. selaku dosen pembimbing tugas akhir
yang telah dengan sabar dan penuh perhatian membimbing penulis
dalam menyusun tugas akhir.
4. Dr. Anastasia Rita Widiarti M.Kom selaku Ketua Program Studi Teknik
Informatika yang selalu memberikan dukungan dan perhatian serta saran
kepada mahasiswa tugas akhir dalam pengerjaan tugas akhir.
5. Kedua orang tua tercinta Bapak Siprianus Madu dan Ibu Ni Made Partini
yang selalu mendoakan, memotivasi, menasihati, dan memberikan
dukungan baik moral maupun materi kepada penulis.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8. Lorentina Elsi dan Yustina Rosa yang telah menjadi teman berbagi
pengalaman selama mengerjakan tugas akhir ini.
9. Terima kasih kepada semua pihak yang tidak dapat penulis sebutkan satu
persatu yang mendukung dan memotivasi penulis baik secara langsung
maupun secara tidak langsung.
Yogyakarta, ……………………
Penulis
Engelbertus Vione
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK
DAFTAR ISI
HALAMAN JUDUL........................................................................................i
TITLE PAGE.....................................................................................................ii
HALAMAN PERSETUJUAN PEMBIMBING....................................................iii
HALAMAN PENGESAHAN.........................................................................iv
MOTTO.............................................................................................................v
PERNYATAAN KEASLIAN KARYA............................................................vi
LEMBARAN PERNYATAAN PERSETUJUAN PUBLIKASI
KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS............................vii
ABSTRAK..................................................................................................viii
ABSTRACT......................................................................................................ix
KATA PENGANTAR.....................................................................................x
DAFTAR ISI....................................................................................................xii
DAFTAR TABEL.........................................................................................xv
DAFTAR GAMBAR....................................................................................xvi
DAFTAR LAMPIRAN..................................................................................xviii
BAB 1 PENDAHULUAN..................................................................................1
1.1 Latar Belakang..................................................................................................1
1.2 Rumusan Masalah............................................................................................2
1.3 Tujuan................................................................................................................2
1.4 Manfaat..............................................................................................................2
1.5 Batasan Masalah...............................................................................................3
1.6 Metodologi Penelitian......................................................................................3
1.7 Sistematika Penulisan......................................................................................4
BAB 2 LANDASAN TEORI..............................................................................6
2.1 Penambangan Data..........................................................................................6
2.1.1 Definisi Penambangan Data..................................................................6
2.1.2 Clustering................................................................................................7
2.2 Big Data...........................................................................................................10
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK
DAFTAR TABEL
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK
DAFTAR GAMBAR
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK
DAFTAR LAMPIRAN
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK
BAB 1 PENDAHULUAN
untuk menyimpan dan mengolah data. Teknologi big data menjadi solusi untuk
menyimpan data dan juga mampu mengolah data tersebut. Hadoop merupakan
sebuah framework yang dapat menyimpan data dalam skala besar tanpa
Koleksi data yang besar dapat diolah dan dianalisis untuk mendapatkan
nilai atatu value pada data. Hasil analisa data tersebut berupa informasi yang dapat
Hadoop.
MapReduce dan dapat beradaptasi pada sistem Hadoop. Sehingga, Mahout dapat
data. KMeans merupakan salah satu algoritma yang disediakan oleh Mahout. K
sifat.
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK
melakukan penelititan :
1.3 Tujuan
1.4 Manfaat
Manfaat yang dapat diperoleh dari penelitian ini ialah sebagai berikut:
1. Studi pustaka
2. Perancangan sistem
3. Luaran sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Luaran sistem ini ialah sebuah sistem big data dengan menggunakan
4. Evaluasi
penghitungan manual.
BAB I : PENDAHULUAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Means pada lingkungan big data dengan menggunakan library Mahout berbasis
BAB IV : IMPLEMENTASI
Bagian ini menjelaskan pula mengenai implementasi library Mahout pada sistem
Hadoop.
lengkap.
Kesimpulan dari penelitian akan dijelaskan pada bab ini dan saran dari
Bab ini membahas teoriteori yang berkaitan dengan penulisan tugas akhir
sebagai salah satu algoritma clustering, big data, Hadoop, Hadoop Distributed
Perkembangan data menjadi sebuah hal yang lumrah dewasa ini. Data
historis untuk menemukan keteraturan, pola atau hubungan dalam set data
berukuran besar. Hasil data mining ini bisa dipakai untuk memperbaiki
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK
2.1.2 Clustering
dalam sebuah cluster atau grup. Sebuah objek pada sebuah cluster memiliki
kemiripan yang sama dengan objek lain dan sebuah objek memiliki perbedaan
kelompok tertentu tanpa adanya label cluster sebelumnya. Teknik ini baik
digunakan pada koleksi data yang tidak memiliki label sebelumnya. Sedangkan
untuk data yang memiliki label, teknik ini dapat dijadikan sebagai pembanding
akurasi pada metode clustering tersebut. Teknik yang membutuhkan data label
kemiripan antar objek ialah dengan menghitung jarak terpendek. Salah satu
Dalam matematika, Euclidean Distance adalah jarak antara dua titik yang
disebut sebagai dengan vector geometri yang memiliki panjang (magnitude) dan
Jarak antar vektor atau panjang vektor dapat didefinisikan sebagai berikut
PLAGIAT MERUPAKAN TINDAKAN TIDAK
2.1.2.1 KMeans
menerapkan metode clustering. Jika diberikan sekumpulan data X = {x1, x2, ...,
xn} dimana xi = (xi1, xi2, ..., xin) adalah vector, maka algoritma KMeans akan
mempartisi x dalam k buah cluster (Prasetya, 2013). Sehingga proses awal dalam
(Santosa, 2007):
mengalami perubahan.
data berwarna ungu. Sedangkan kemiripan objek ditandai dengan warna yang
sama.
Big data dapat diartikan sebagai sebuah koleksi atau kumpulan data yang
1) Volume
Volume menjelaskan bahwa big data memiliki ukuran data yang besar.
Kumpulan data seperti data kesehatan merupakan jenis data yang sesuai
dengan konsep big data karena data tersebut terus berkembang (Rathi R. et
al., 2014). Teknologi big data hadir untuk menyimpan datadata yang
Indonesia, 2015).
2) Variety
dihasilkan dapat berupa data terstruktur, data semistruktur, dan data tidak
dan baris seperti data dengan format CSV (Comma Separated value). Data
berupa data teks lainnya, data gambar, data suara, dan data video (Ronk, J.
2014).
3) Velocity
Data velocity atau kecepatan data berbanding lurus dengan volume data.
Data tidak hanya datang dalam jumlah besar, tetapi juga dalam tempo
yang lebih singkat dan bahkan ada yang realtime. Hal ini menjadi
2.3 Hadoop
digunakan untuk proses terdistribusi dari kumpulan data yang besar pada
data yang besar dalam sebuah server paralel komputer (Rathi R. et al., 2014).
data yang mampu mendistribusikan data dengan kapasitas ukuran yang besar.
2014).
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Distributed File System (HDFS) akan membagi data yang besar ke dalam chunk
yang dikelola oleh setiap node pada cluster. Setiap chunk akan direplikasi pada
beberapa mesin komputer. Sehingga jika sebuah komputer atau node mengalami
kegagalan (failure) maka data masih dapat diakses pada komputer lain. Gambar
2.2 menunjukkan data didistribusikan pada seluruh node saat proses load (load
oriented. Setiap input file akan dipecah dalam baris atau format lain yang spesifik
pada aplikasi. Setiap proses berjalan pada sebuah node dalam keseluruhan cluster
PLAGIAT MERUPAKAN TINDAKAN TIDAK
record menggunakan konsep kerja dari sistem file terdistribusi. Sejak filefile
tersebar pada sistem file terdistribusi sebagai chunk, setiap proses komputasi
yang berjalan pada sebuah node beroperasi pada sebuah subset dari data. Data
yang dioperasikan oleh sebuah node dipilih berdasarkan locality dari node: data
paling banyak dibaca dari disk lokal langsung ke CPU, untuk mengurangi
ketegangan bandwidth jaringan dan mencegah transfer jaringan yang tidak perlu.
Locality data yang tinggi ini menjadi sebuah keunggulan pada Hadoop (Yahoo!,
2014).
HDFS memiliki 2 tipe operasi node yakni service NameNode pada master
node dan service DataNode pada slave node. NameNode bertugas dalam
mengatur namespace sistem file. NameNode mengatur susunan sistem file dan
metadata untuk semua file dan direktori pada susunan tersebut. Informasi tersebut
disimpan pada local disk kedalam 2 bentuk file yakni namespase image dan
edit log. NameNode juga mengetahui proses kerja dari DataNode, seperti letak
lokasi dari block data (chunk). Namun NameNode tidak bertugas dalam
menyimpan data tersebut, DataNode berfungsi sebagai tempat kerja dari sistem
kepada NameNode secara periodik tentang daftar block data yang disimpan.
dihilangkan, maka semua file pada HDFS akan hilang karena sistem tidak
PLAGIAT MERUPAKAN TINDAKAN TIDAK
membaca susunan block data pada DataNode. HDFS memiliki sebuah service
menggabungkan namespace image dengan edit log untuk mencegah edit log
2.3.3 Yarn
Gambar 2.3 menjelaskan bahwa Yarn memegang peran yang sangat penting pada
sistem Hadoop. Komponen utama dari Yarn ialah service ResourceManager dan
sumber daya dalam menjalankan aplikasi. Secara teknik, Yarn bertugas dalam
mencari sumber daya yang memungkinkan untuk memproses data pada slave
potongan bitesize yang disebut containers. Container adalah sebuah koleksi dari
semua sumber daya yang diperlukan untuk menjalankan aplikasi seperti CPU
cores, memory, network bandwidth, dan ruang pada disk. Container bersifat umum
atau generic sehingga dapat menjalankan berbagai jenis model komputasi, selama
tersebut. Semua proses Container yang berjalan pada slave node dimonitor oleh
2.4 MapReduce
proses. Setiap record diproses oleh sebuah task yang terisolasi dari task yang lain.
MapReduce.
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Pada MapReduce, record diproses dalam sebuah task yang disebut Mapping.
output dari Mapping task akan dibawa dan diproses pada task kedua yang disebut
sebagai Reducing, dimana hasil dari Mapping yang berbeda akan digabung
(Yahoo!, 2014).
Gambar 2.4 menunjukkan task Mapper dan task Reducer berjalan pada
nodenode dimana record dari data telah tersedia. Nodenode yang terpisah dalam
cluster Hadoop masih berkomunikasi antara satu dengan yang lain. Pecahan data
diberi tag atau tanda dengan sebuah key yang bertujuan menginformasikan
secara internal mengelola semua transfer data dan masalah topologi cluster
(Yahoo!, 2014).
Gambar 2.4: Proses Task Mapper dan Task Reducer (Yahoo!, 2014).
PLAGIAT MERUPAKAN TINDAKAN TIDAK
elemen data melalui sebuah fungsi yang disebut Mapper yang akan
Mapper tidak memodifikasi list input string tetapi menghasilkan sebuah string
baru yang menjadi bagian dari sebuah list output yang baru (Yahoo!, 2014).
Setiap element data output akan dipecah ke dalam sebuah pasangan data key dan
value (DeZyre, 2015). Key berfungsi sebagai identitas unik pada data, sedangkan
Gambar 2.5 menunjukkan task Mapping membuat sebuah list output yang
baru pada seluruh list data elemen input. Reducing memungkinkan pengumpulan
value bersama. Fungsi Reducer menerima sebuah iterator dari value masukkan
(input value) dari sebuah list input. Kemudian Reducer task menggabungkan
sebuah volume data yang besar menjadi sebuah summary yang lebih kecil. Salah
satu contoh dengan mengunakan operasi “+” sebagai sebuah fungsi reducing
Gambar 2.6 menunjukkan Proses reducing sebuah iterasi list pada seluruh
Dalam MapReduce, tidak ada value yang berdiri sendiri. Setiap value
memiliki key yang berasosiasi. key bertugas untuk mengidentifikasi value. Fungsi
mapping dan reducing tidak hanya menerima value, tetapi pasangan key dan
value. Sebuah fungsi reducing berfungsi untuk mengubah sebuah list dari value
yang besar ke dalam sebuah (atau beberapa) value output. Semua output value
tidak mengalami proses reduce bersamaan. Tetapi semua value yang memiliki key
PLAGIAT MERUPAKAN TINDAKAN TIDAK
sama yang akan mendapatkan proses reduce bersama (Yahoo!, 2014). Proses ini
biasa disebut shuffle task. Hal ini dikarenakan semua value yang memiliki key
yang sama akan dikelompokkan sebelum melalui proses reduce (Voruganti, S.,
2014).
berbeda. Semua value dengan key sama akan dipresentasikan ke dalam sebuah
dapat digunakan sebagai pilihan alat machine learning ketika koleksi data yang
akan diproses sangat besar yang ukurannya tidak dapat disimpan dalam sebuah
komputer. Mahout ditulis dengan menggunakan bahasa Java dan beberapa dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Oleh karena Mahout merupakan sebuah library Java. Sehingga library ini tidak
server, dan sebuah installer. Mahout merupakan sebuah framework yang cocok
Library Mahout yang bersifat open source atau sumber terbuka digunakan pada
1) Initial
Data yang diinputkan dapat dipecah ke dalam beberapa sub koleksi data.
Daftar sub koleksi data akan mengalami perubahan format <Key, Value>.
Daftar sub koleksi data tersebut akan diinputkan ke dalam funsi map.
penelitian ini data centroid yang diinput secara manual. Sedangkan dalam
PLAGIAT MERUPAKAN TINDAKAN TIDAK
2) Mapper
dilakukan pada selutuh item data. Luaran dari penghitungan ialah item
3) Reducer
dilakukan ialah membaca luaran item data <ai, zj> dari fase Mapper.
selanjutkan menghitung nilai ratarata dari setiap item data. Luaran dari
pada cluster atau kelompok yang sama. Jika nilai centroid tersebut lebih
dihentikan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK
22
pada sistem lokal atau pun pada Hadoop Distributed File System (HDFS). Metode
yang digunakan dalam menjalankan library Mahout ialah melalui command line.
menjalankan perintah $mahout kmeans pada command line lalu diikuti dengan
23
Perintah Penjelasan
input atau i Merupakan alamat file input yang harus berupa
Sequence File
clusters atau c Merupakan alamat input file centroid yang harus berupa
sequence file
output atau o Merupakan alamat file output yang harus berupa
Sequence File
distanceMeasure atau Algoritma pengukuran jarak.
dm
convergenceDelta Nilai konvergen merupakan nilai untuk menetukan
atau cd proses iterasi berhenti. Secara default, convergen delta
bernilai 0.5
maxIter (x) maxIter Jumlah maksimal iterasi
maxRed (r) maxRed Jumlah Task Reducin. Secara default, bernilai 2
k (k) k Nilai jumlah kelompok data atau cluster
overwrite (ow) Jika direktori ada, maka perintah ini akan menghapus
direktori tersebut, sebelum menjalankan perintah atau
Job.
help (h) Menampilkan informasi help
clustering (cl) Jika job berjalan maka jalankan proses clustering
setelah iterasi berjalan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK
dibagi dalam gambaran penetilian, kebutuhan sistem, dan skema sistem big data.
24
PLAGIAT MERUPAKAN TINDAKAN TIDAK
3.1.1 Data
Peneliti menggunakan sumber data atau dataset dari bank data UCI
Machine Learning mengenai liver Disorders Data Set. Berikut beberapa informasi
3. Lima variabel pertama ialah hasil tes darah yang dianggap sensitif untuk
alkohol menjadi salah satu penyebab. Setiap baris pada file bupa.data
No Atribut Keterangan
1. mcv mean corpuscular volume yaitu ratarata volume
korpuskuler darah
2. alkphos alkaline phosphotase yaitu kadar alkali fosfat dalam
darah
3. sgpt alamine aminotransferase yaitu kadar alamin
aminotransferase dalam darah
4. sgot aspartate aminotransferase yaitu kadar aspartat
aminotrasferase dalam darah
5. gammagt gammaglutamyl transpeptidase yaitu kadar gamma
glutamil transpeptidase dalam darah
6. drink jumlah minum minuman beralkohol per hari
dalam satuan halfpint (257 ml per satuan)
7. selector Attribut ini adalah atribut class yang nantinya
menjadi sumber penghitungan akurasi. Bernilai 1
atau 2. Jika 1 maka instance tersebut menderita
penyakit hati. Jika 2 maka instance tersebut normal.
7. Data liver disorder tidak memiliki missing value atau hilangnya sebuah
item data.
sifat dengan baik. Sehingga dapat dipastikan bahwa sebuh item data pada sebuh
kelompok atau cluster memiliki kemiripan yang sama dengan item data lain pada
kelompok yang sama. Sedangkan sebuah item data pada kelompok tertentu
memiliki perbedaan sifat dengan item data pada kelompok yang lain.
PLAGIAT MERUPAKAN TINDAKAN TIDAK
1) Data training yang akan menjadi input harus berformat sequence. File
Sequence merupakan format file yang dapat dibaca oleh library Apache
Mahout. File Sequence sendiri akan memiliki struktur format key dan
value.
3) Hasil atau output dari proses KMeans akan berupa sebuah direktori yang
1. Perangkat
a) Spesifikasi komputer
PLAGIAT MERUPAKAN TINDAKAN TIDAK
2. Perangkat Lunak
kerneln
b) Sun Java
PLAGIAT MERUPAKAN TINDAKAN TIDAK
2
a) Ubuntu 14.04
kerneln
b) Sun Java
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Sistem big data ini menggunakan SSH akses untuk mengatur seluruh
Versi Hadoop yang digunakan ialah 2.6.0. Versi ini sudah mendukung
g) Eclipse Kepler
h) LibreOffice Calc
PLAGIAT MERUPAKAN TINDAKAN TIDAK
editor nano hanya dapat berjalan pada terminal atau command line.
j) MATE Terminal
aplikasi atau paket program pada sistem Linux termasuk perintah dari
sebuah komputer disebut single node cluster. Setelah sistem big data
menyatukan selutuh node menjadi satu. Proses ini disebut multi node cluster.
hanya diimplementasikan pada sebuah komputer dapat dilihat pada gambar 3.2.
Komputer tunggal tersebut bertindak sebagai master node dan slave node.
Sehingga service yang dijalankan pada node ini ialah NameNode, DataNode,
PLAGIAT MERUPAKAN TINDAKAN TIDAK
31
untuk membuat koneksi jaringan lokal. Sehingga setiap komputer tunggal (single
Address yang saling terhubung dalam jaringan komputer, maka setiap komputer
32
master node dan 3 slave node. Router digunakan untuk membuat koneksi jaringan
lokal. Router bertindak sabagai gateway pada sistem jaringan, yang berfungsi
untuk menghubungkan sebuah node dengan node yang lain. IP Address digunakan
untuk memberi alamat pada masingmasing node. Master node akan menjalankan
BAB 4 IMPLEMENTASI
konfigurasi single node cluster dan multi node cluster, serta implementasi
library Mahout pada sistem Hadoop yang terdiri dari proses install Maven, IDE
Oleh karena itu, konfigurasi ini akan diimplementasikan pada 4 komputer cluster
yaitu 1 master node dan 3 slave node. Secara teknis, proses konfigurasi
menerapkan metode yang sama. Adapun beberapa paket aplikasi yang diinstall
berjalan diatas lingkungan Java. Screenshot proses install Java dapat dilihat pada
33
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Perintah yang digunakan untuk melakukan proses extract file Java ialah tar
digunakan untuk melakukan extract file pada arsip file yang berekstensi
menunjukkan ekstrak data dilakukan pada file arsip atau archive file.
Tujuan dari langkah ini ialah untuk membuat direktori khusus untuk
bahwa perintah harus dilakukan pada sisi administrator pada sistem Linux
Ubuntu.
direktori ialah mv. Sehingga format perintah yang digunakan ialah $sudo
“ls”. Perintah ls digunakan untuk melihat daftar file dari sebuah direktori.
Proses ini harus dilakukan karena proses install java menggunakan source
group merupakan sebuh wadah untuk mengelompokkan user atau pengguna pada
sistem Ubuntu. Implementasi ini menggunakan group dan user khusus untuk
konfigurasi group dan user sistem Hadoop dapat dilihat pada Lampiran 2. Berikut
penjelasan langkahlangkah konfigurasi group dan user atau pengguna dari sistem
Hadoop:
3. Menginstall opensshserver
server.
RSA Key berfungsi untuk dapat melakukan akses pada sebuah node
dengan password yang kosong. Hal ini dilakukan dengan maksud agar
ketika mengakses suatu node, sistem tidak meminta password. Cara ini
6. Membuat authorized_keys
sistem lokal.
Proses ini tidak hanya mengetes SSH pada sistem lokal. Namun, proses
dilakukan untuk menyimpan host key fingerprint pada sistem local yang
IPv6
Langkah ini sama seperti langkah dalam mengekstrak file Java, karena
Perintah chown digunakan untuk mengubah hak akses sebuah file atau
mengecek versi dari Hadoop. Hasil dari perintah $hadoop version ialah
Konfigurasi ini dilakukan pada node klaster tunggal atau single node
cluster. Konfigurasi dilakukan pada direktori sistem Hadoop yang terletak pada
pada sistem Ubuntu. Java sangat dibutuhkan agar sistem Hadoop dapat
menggunakan Java dan hanya dapat berjalan diatas Java environment atau
lingkungan Java.
2. Konfigurasi coresite.xml
Dengan kata lain langkah ini menjelaskan lokasi data Hadoop dan semua
mnode yang berperan sebagai administrator pada sistem Ubuntu. Hal ini
menempatkan HDFS pada local disk. Sehingga direktori ini secara khusus
6. Konfigurasi mapredsite.xml
7. Konfigurasi hdfssite.xml
sistem. Dengan kata lain, langkah ini menunjukkan berapa jumlah slave
8. Konfigurasi yarnsite.xml
Langkah ini akan menghapus semua data pada HDFS. Namun langkah ini
data.
pada slave node. Karena sistem ini bersifat single node cluster maka
Perintah jps yang digunakan untuk mengecek seluruh service Java yang
diterapkan pada seluruh komputer cluster. Proses multi node cluster merupakan
proses penggabungan seluruh single node cluster menjadi satu kelompok dalam
Screenshot dari langkah ini dapat dilihat pada bagian Lampiran 6. Berikut
1. Mengubah hostname
untuk komputer slave node 2, dan hostname slave3 untuk komputer slave
Penelitian ini seluruh IP Address pada komputer cluster diberi nama host
Konfigurasi tidak hanya dilakukan pada sisi master node saja, tetapi juga
pada seluruh slave node. Adapaun host yang digunakan untuk master node
ialah master. Komputer slave akan diberi host slave1, slave2, dan
slave3.
PLAGIAT MERUPAKAN TINDAKAN TIDAK
Konfigurasi SSH dilakukan dengan menyalin SSH public key dari master
Adapun pada konfigurasi single node, Public SSH key atau kunci publik
perintah sshcopyid maka maka sebuah node dapat mengakses node lain
perintah untuk mengakses node lain ialah $ssh master untuk mengakses
node lokal master, $ssh slave1 untuk mengakses node slave1, $ssh slave2
untuk mengakses node slave2, dan $ssh slave3 untuk mengakses node
slave3.
Setiap node sudah memiliki identifikasi host yakni master, slave1, slave2,
dan slave3. Namun, host merupakan identifikasi sistem Ubuntu. Untuk melakukan
identifikasi master node dan slave node pada lingkungan Hadoop ialah dengan
mengisi master node pada file masters dan daftar slave node pada file slaves.
screenshot langkah ini dapat dilihat pada Lampiran 8. Berikut penjelasan langkah
1. Konfigurasi coresite.xml
nilai dari parameter dikhsusukan buat host dan port dari master node.
semua node.
2. Konfigurasi mapredsite.xml
3. Konfigurasi hdfssite.xml
memiliki nilai 3.
sepenuhnya dapat menghapus semua data pada HDFS. Oleh karena itu,
berjalan pada master node. Luaran dari perintah startdfs.sh pada slave
node ialah service DataNode yang berjalan pada slave1 node, slave2 node,
Proses install maven sama seperti proses install paket Java dan Hadoop. Source
menggunakan source code. Sama seperti konfigurasi pada Java dan Hadoop,
langkah ini bertujuan agar Maven dapat dikenali oleh sistem Linux. Proses
mengetes Maven ialah dengan menjalankan perintah mvn –version. Luaran dari
perintah tersebut ialah versi Maven dan metadata lain. Adapun sreenshot langkah
sistem ini menggunakan source code tambahan. Eclipse juga memiliki plugin m2e
yang dapat berintegrasi dengan Maven, sehingga selain melakukan compile dan
dilakukan dengan menulis variabel Mahout pada sistem Linux. Oleh karena
fitur plugin maven yang telah disediakan Eclipse yaitu m2e. Dengan
menginput atau melakukan import dan secara otomatis Eclipse akan melakukan
4.3.1 Preprocessing
dilakukan yakni mengkonversi data dari format csv ke format sequence dan
membuat direktori untuk menyimpan data trining dan data centroid pada HDFS.
Konversi data numerik pada file csv akan dilakukan dengan menggunakan
Data liver disorder memiliki susunan informasi yakni id, mvc, alkphos,
sqpt, sgot, gammagt, drink, dan selector. Namun dalam melakukan konversi,
susunan file tersebut diubah menjadi selector, id, mvc, alkphos, sqpt, sgot,
gammagt, dan drink. Hasil atau output yang akan dicapai ialah file data liver
disorder dan file centroid yang masingmasing berformat sequence. Adapun data
centroid dipilih secara manual. Hasil output tersebut akan diinputkan ke dalam
Adapun file sequence tidak human readable atau tidak dapat dibaca secara
langsung. Gambar 4.1 menunjukkan fitur yang telah disediakan oleh Mahout
untuk membaca sequence file. Adapun nama dari sequence file ialah
kemudian diikuti
PLAGIAT MERUPAKAN TINDAKAN TIDAK
olah nama file. | less merupakan perintah dari bash linux yang digunakan untuk
tersebut ke dalam perintah less. Less merupakan perintah bash yang digunakan
ResourceManager pada master node dan service NodeManager pada slave node.
yang digunakan ialah $hdfs dfs mkdir diikuti nama direkori. Direktori yang
PLAGIAT MERUPAKAN TINDAKAN TIDAK
perintah yang digunakan ialah $hdfs dfs mkdir p diikuti nama direktori. Perintah
$hdfs dfs ls digunakan untuk melihat sebuah file atau direktori. Sehingga
Gambar 4.2: Membuat direktori data dan direktori centroid pada hdfs
HDFS.
Gambar 4.3: Menyimpan sebuah file data trining dari sistem lokal ke dalam
HDFS
pada HDFS. Perintah yang digunakan dalam menyimpan file ialah $hdfs dfs
copyFromLocal kemudian diikuti lokasi input data dan diakhir dengan lokasi
output data. Lokasi input data berasal dari sistem lokal, sedangkan lokasi output
ditujukan pada direktori pada HDFS. Perintah $hdfs dfs ls digunakan mengecek
Gambar 4.4: Menyimpan sebuah file centroid pada sistem lokal ke dalam HDFS
$mahout kmeans diikuti lokasi file data, lokasi file centroid, lokasi file output,
distance measure atau algoritma yang digunakan untuk menghitung jarang antara
item data dan pusat cluster atau centroid, iterasi maksimal, jumlah K atau cluster
dari data, convergen delta atau nilai untuk menentukan proses iterasi berhenti,
execution method atau metode yang digunakan untuk mengeksekusi data, dan
clustering menentukan agar proses clustering berjalan setelah proses iterasi telah
berlangsung.
kmeans berada pada HDFS. Sehingga lokasi output data juga terdapat dalam
HDFS. Gambar 4.5 menunjukkan bahwa Distance Measure (parameter dm) yang
kategori yakni kelompok yang memiliki kelainan hati (liver disorder) dan
kelompok yang tidak memiliki kelainan hati (non liver disorder). Convergen delta
PLAGIAT MERUPAKAN TINDAKAN TIDAK
51
(parameter cd) yang digunakan bernilai 0.1. Execution method (parameter xm)
memaksa sistem untuk menulis hasil output walaupun sistem sudah memiliki
Gambar 4.6 menunjukkan hasil akhir dari iterasi yan gditunjukkan dengan
dijalankan.
melihat hasil dari proses KMeans. Sedangkan perintah $hdfs dfs ls output atau
PLAGIAT MERUPAKAN TINDAKAN TIDAK
52
$hdfs dfs ls /user/hduser/output digunakan untuk melihat isi dari direktori output.
Hasil proses KMeans dapat dilihat dari aplikasi NameNode Web Interface yang
beralamat di master:50070.
interface.
aktivitas dan semua informasi dari sistem Hadoop baik sebelum dan sesudah
komputasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK
DataNode ini menunjukkan slave node yang aktif dan tidak aktif, kapasitas HDFS
dari masingmasing DataNode, dan storage HDFS yang telah digunakan, Aplikasi
ini juga dapat digunakan untuk mencari dan melihat data pada HDFS.
Hadoop. Beberapa informasi DataNode yang ditampilkan ialah alamat slave node.
Status slave node digunakan yang diperlihatkan pada Admin State. Informasi
ukuran HDFS juga diperlihatkan seperti total ukuran disk yang dapat digunakan
untuk menyimpan data (capacity) dan total kapasitas disk yang telah digunakan
(used).
PLAGIAT MERUPAKAN TINDAKAN TIDAK
dan output.
HDFS yakni permission, owner, group, size, replication, block size, dan name.
Permission merupakan hak akses atau priviledge yang diijinkan olah sistem
bahwa data mengalami proses replikasi di beberapa node. Block size merupakan
55
Aplikasi ini juga mampu menampilkan metadata dari file pada HDFS.
dengan menggunakan library Mahout dan analisa unjuk kerja dari sistem Hadoop.
file analisa yang mengelompokkan item data berdasarkan centroid atau pusat
menginputkan direktori clusteredPoints yang berupa hasil akhir dari data yang
56
PLAGIAT MERUPAKAN TINDAKAN TIDAK
identitas yang secara otomatis diberikan oleh Mahout. “n” merupakan total data
pada kelompok tersebut. “c” merupakan centroid atau pusat kelompok akhir. “r”
Gambar 5.2: Beberapa hasil analisa cluster data dengan identitas VL27
Gambar 5.2 menunjukkan bahwa kelompok VL27 memiliki total item data
sebanyak 306. Sedangkan pada gambar 5.3 menunjukkan bahwa kelompok VL49
memiliki total item data sebanyak 38. Sehingga total item data keseluruhan ialah
344.
Gambar 5.3: Beberapa hasil analisa cluster data dengan identitas VL49
PLAGIAT MERUPAKAN TINDAKAN TIDAK
label centroid C1 dan C2. Item data pada centroid C1 berjumlah 306, sedangkan
menggunakan library Mahout sebanyak 10 kali dalam jumlah slave node yang
berbda. Nilai ratarata digunakan untuk mengevaluasi hasil unjuk kerja. Tabel 5.2
PLAGIAT MERUPAKAN TINDAKAN TIDAK
59
menunjukkan bahwa semakin banyak jumlah slave node maka waktu eksekusi K
5
4.9
4.8
4.7
Waktu Eksekusi
4.6
KMeans (menit)
4.5
4.4
1 2 3
Gambar 5.4: Grafik hasil unjuk kerja sistem Hadoop
PLAGIAT MERUPAKAN TINDAKAN TIDAK
BAB 6 PENUTUP
6.1 Kesimpulan
berikut:
2. Hasil unjuk kerja menunjukkan bahwa semakin banyak slave node yang
6.2 Saran
Dari hasil penelitian implementasi KMeans pada lingkungan big data ini,
ada beberapa saran yang dapat dikemukakan oleh peneliti untuk penelitian dengan
topik yang sama ialah menggunakan algoritma data mining yang berbeda.
60
PLAGIAT MERUPAKAN TINDAKAN TIDAK
DAFTAR PUSTAKA
http://Hadoop.apache.org/docs/r2.7.1/HadoopMapReduceclient/Hadoop
2015].
https://mahout.apache.org/users/clustering/kmeanscommandline.html
deRoos, D. et al., (eds.). (2014) Hadoop for Dummies. New Jersey: John Wiley
2016].
https://www.dezyre.com/Hadooptutorial/HadoopMapReduce
Esteves, M. R., Pais, R., & Rong, C. (2011) ‘Kmeans clustering in the cloud a
Han, J. et al. (2000) DATA MINING Concepts and Techniques. 3th Ed. London :
Pearson.
PLAGIAT MERUPAKAN TINDAKAN TIDAK
https://mahout.apache.org/users/clustering/kmeansclustering.html
Prasetya, U., 2013, Aplikasi Rekomendasi Dokter Untuk Sales Obat Pada
Dharma, Yogyakarta.
Rathi, R. dan Lohiya, S. (2014) 'big data and Hadoop', International Journal of
The Glowing Python (2012) KMeans Clustering with Scipy, Available at:
http://glowingpython.blogspot.co.id/2012/04/KMeansclusteringwith
White, T. (2015) Hadoop: The Definitive Guide. 4Th Ed. United States of
https://developer.yahoo.com/Hadoop/tutorial/index.html [Accessed 10
December 2015].
https://yunmingzhang.wordpress.com/2014/01/13/apachemahoutkmeans
64
LAMPIRAN-LAMPIRAN
65
PLAGIAT MERUPAKAN TINDAKAN TIDAK
66
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK
68
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK
70
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK
74
76
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK
80
PLAGIAT MERUPAKAN TINDAKAN TIDAK
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK
84
85
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassificationDriver;
import org.apache.mahout.clustering.classify.ClusterClassifier;
import org.apache.mahout.clustering.iterator.ClusterIterator;
import org.apache.mahout.clustering.iterator.ClusteringPolicy;
import org.apache.mahout.clustering.iterator.KMeansClusteringPolicy;
import org.apache.mahout.clustering.topdown.PathDirectory;
import org.apache.mahout.common.AbstractJob;
import org.apache.mahout.common.ClassUtils;
import org.apache.mahout.common.HadoopUtil;
import org.apache.mahout.common.commandline.DefaultOptionCreator;
import org.apache.mahout.common.distance.DistanceMeasure;
import org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
PLAGIAT MERUPAKAN TINDAKAN TIDAK
@Override
public int run(String[] args) throws Exception {
addInputOption();
addOutputOption();
addOption(DefaultOptionCreator.distanceMeasureOption().create());
addOption(DefaultOptionCreator
.clustersInOption()
.withDescription(
"The input centroids, as Vectors. Must be a SequenceFile of Writable,
Cluster/Canopy. "
+ "If k is also specified, then a random set of vectors will be selected"
+ " and written out to this path
first").create()); addOption(DefaultOptionCreator
.numClustersOption()
.withDescription(
"The k in kMeans. If specified, then a random selection of k Vectors
will be chosen"
+ " as the Centroid and written to the clusters input
path.").create());
addOption(DefaultOptionCreator.useSetRandomSeedOption().create());
addOption(DefaultOptionCreator.convergenceOption().create());
addOption(DefaultOptionCreator.maxIterationsOption().create());
addOption(DefaultOptionCreator.overwriteOption().create());
addOption(DefaultOptionCreator.clusteringOption().create());
addOption(DefaultOptionCreator.methodOption().create());
addOption(DefaultOptionCreator.outlierThresholdOption().create());
if (parseArguments(args) == null) {
return 1;
}
if (hasOption(DefaultOptionCreator.NUM_CLUSTERS_OPTION)) {
int numClusters =
Integer.parseInt(getOption(DefaultOptionCreator.NUM_CLUSTERS_OPTION)
);
runClustering,
clusterClassificationThreshold, runSequential);
return 0;
}
/**
* Iterate over the input vectors to produce clusters and, if requested, use the
results of the final iteration to
* cluster the input vectors.
*
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for initial & computed clusters
* @param output
* the directory pathname for output points
* @param convergenceDelta
* the convergence delta value
* @param maxIterations
* the maximum number of iterations
* @param runClustering
* true if points are to be clustered after iterations are completed
* @param clusterClassificationThreshold
* Is a clustering strictness / outlier removal parameter. Its value should be
between 0 and 1. Vectors
* having pdf below this value will not be clustered.
* @param runSequential
* if true execute sequential algorithm
*/
public static void run(Configuration conf, Path input, Path clustersIn, Path
output,
double convergenceDelta, int maxIterations, boolean runClustering,
double clusterClassificationThreshold,
boolean runSequential) throws IOException,
InterruptedException, ClassNotFoundException {
delta, runSequential);
if (runClustering) {
log.info("Clustering data");
clusterData(conf, input, clustersOut, output, clusterClassificationThreshold,
runSequential);
}
}
/**
* Iterate over the input vectors to produce clusters and, if requested, use the
results of the final iteration to
* cluster the input vectors.
*
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for initial & computed clusters
* @param output
* the directory pathname for output points
* @param convergenceDelta
* the convergence delta value
* @param maxIterations
* the maximum number of iterations
* @param runClustering
* true if points are to be clustered after iterations are completed
* @param clusterClassificationThreshold
* Is a clustering strictness / outlier removal parameter. Its value should be
between 0 and 1. Vectors
* having pdf below this value will not be clustered.
* @param runSequential
* if true execute sequential algorithm
*/
public static void run(Path input, Path clustersIn, Path output,
double convergenceDelta,
int maxIterations, boolean runClustering, double
clusterClassificationThreshold, boolean runSequential)
throws IOException, InterruptedException, ClassNotFoundException {
run(new Configuration(), input, clustersIn, output, convergenceDelta,
maxIterations, runClustering,
clusterClassificationThreshold, runSequential);
}
/**
* Iterate over the input vectors to produce cluster directories for each iteration
PLAGIAT MERUPAKAN TINDAKAN TIDAK
*
*
* @param conf
* the Configuration to use
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for initial & computed clusters
* @param output
* the directory pathname for output points
* @param maxIterations
* the maximum number of iterations
* @param delta
* the convergence delta value
* @param runSequential
* if true execute sequential algorithm
*
* @return the Path of the final clusters directory
*/
public static Path buildClusters(Configuration conf, Path input, Path
clustersIn, Path output,
int maxIterations, String delta, boolean runSequential) throws
IOException, InterruptedException, ClassNotFoundException {
if (clusters.isEmpty()) {
throw new IllegalStateException("No input clusters found in " + clustersIn +
". Check your c argument.");
}
if (runSequential) {
ClusterIterator.iterateSeq(conf, input, priorClustersPath, output,
maxIterations);
} else {
ClusterIterator.iterateMR(conf, input, priorClustersPath, output,
PLAGIAT MERUPAKAN TINDAKAN TIDAK
maxIterations);
}
return output;
}
/**
* Run the job using supplied arguments
*
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for input clusters
* @param output
* the directory pathname for output points
* @param clusterClassificationThreshold
* Is a clustering strictness / outlier removal parameter. Its value should be
between 0 and 1. Vectors
* having pdf below this value will not be clustered.
* @param runSequential
* if true execute sequential algorithm
*/
public static void clusterData(Configuration conf, Path input, Path
clustersIn, Path output,
double clusterClassificationThreshold, boolean runSequential) throws
IOException, InterruptedException,
ClassNotFoundException {
if (log.isInfoEnabled()) {
log.info("Running Clustering");
log.info("Input: {} Clusters In: {} Out: {}", input, clustersIn, output);
}
ClusterClassifier.writePolicy(new KMeansClusteringPolicy(), clustersIn);
ClusterClassificationDriver.run(conf, input, output, new Path(output,
PathDirectory.CLUSTERED_POINTS_DIRECTORY),
clusterClassificationThreshold, true, runSequential);
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.mahout.clustering.iterator;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassifier;
import org.apache.mahout.common.iterator.sequencefile.PathFilters;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import
org.apache.mahout.common.iterator.sequencefile.SequenceFileDirValueIterable;
import
org.apache.mahout.common.iterator.sequencefile.SequenceFileValueIterator;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.VectorWritable;
PLAGIAT MERUPAKAN TINDAKAN TIDAK
import com.google.common.io.Closeables;
/**
* This is a clustering iterator which works with a set of Vector data and a
prior ClusterClassifier which has been
* initialized with a set of models. Its implementation is algorithmneutral
and works for any iterative clustering
* algorithm (currently kmeans and fuzzykmeans) that processes all the input
vectors in each iteration.
* The cluster classifier is configured with a ClusteringPolicy to select
the desired clustering algorithm.
*/
public final class ClusterIterator {
private ClusterIterator() {
}
/**
* Iterate over data using a priortrained ClusterClassifier, for a number
of iterations
*
* @param data
* a {@code List<Vector>} of input vectors
* @param classifier
* a prior ClusterClassifier
* @param numIterations
* the int number of iterations to perform
*
* @return the posterior ClusterClassifier
*/
public static ClusterClassifier iterate(Iterable<Vector> data, ClusterClassifier
classifier, int numIterations) {
ClusteringPolicy policy = classifier.getPolicy();
for (int iteration = 1; iteration <= numIterations; iteration+
+) { for (Vector vector : data) {
// update the policy based upon the
prior policy.update(classifier);
// classification yields probabilities
Vector probabilities = classifier.classify(vector);
// policy selects weights for models given those
probabilities Vector weights =
PLAGIAT MERUPAKAN TINDAKAN TIDAK
/**
* Iterate over data using a priortrained ClusterClassifier, for a number
of iterations using a sequential
* implementation
*
* @param conf
* the Configuration
* @param inPath
* a Path to input VectorWritables
* @param priorPath
* a Path to the prior classifier
* @param outPath
* a Path of output directory
* @param numIterations
* the int number of iterations to perform
*/
public static void iterateSeq(Configuration conf, Path inPath, Path
priorPath, Path outPath, int numIterations)
throws IOException {
ClusterClassifier classifier = new
ClusterClassifier();
classifier.readFromSeqFiles(conf, priorPath);
Path clustersOut =
null; int iteration =
1;
while (iteration <=
PathFilters.logsCRCFilter(), conf)) {
numIterations)
Vector vector {=forvw.get();
(VectorWritable vw : new
// classification yields probabilities
SequenceFileDirValueIterable<VectorWritable>(inPath,
Vector probabilities = classifier.classify(vector); PathType.LIST,
// policy selects weights for models given those
probabilities Vector weights =
PLAGIAT MERUPAKAN TINDAKAN TIDAK
/**
* Iterate over data using a priortrained ClusterClassifier, for a number of
iterations using a mapreduce
* implementation
*
* @param conf
* the Configuration
* @param inPath
* a Path to input VectorWritables
* @param priorPath
* a Path to the prior classifier
* @param outPath
* a Path of output directory
* @param numIterations
* the int number of iterations to perform
*/
public static void iterateMR(Configuration conf, Path inPath, Path priorPath,
Path outPath, int numIterations)
throws IOException, InterruptedException, ClassNotFoundException
PLAGIAT MERUPAKAN TINDAKAN TIDAK
job.setInputFormatClass(SequenceFileInputFormat.class);
job.setOutputFormatClass(SequenceFileOutputFormat.class);
job.setMapperClass(CIMapper.class);
job.setReducerClass(CIReducer.class);
FileInputFormat.addInputPath(job, inPath);
clustersOut = new Path(outPath, Cluster.CLUSTERS_DIR + iteration);
priorPath = clustersOut;
FileOutputFormat.setOutputPath(job, clustersOut);
job.setJarByClass(ClusterIterator.class);
if (!job.waitForCompletion(true)) {
throw new InterruptedException("Cluster Iteration " + iteration + "
failed processing " + priorPath);
}
ClusterClassifier.writePolicy(policy, clustersOut);
FileSystem fs = FileSystem.get(outPath.toUri(), conf);
iteration++;
if (isConverged(clustersOut, conf, fs)) {
break;
}
}
Path finalClustersIn = new Path(outPath, Cluster.CLUSTERS_DIR
+ (iteration 1) + Cluster.FINAL_ITERATION_SUFFIX);
FileSystem.get(clustersOut.toUri(), conf).rename(clustersOut,
finalClustersIn);
}
/**
* Return if all of the Clusters in the parts in the filePath have converged or not
PLAGIAT MERUPAKAN TINDAKAN TIDAK
*
* @param filePath
* the file path to the single file containing the clusters
@return true if all Clusters are converged
@throws IOException
if there was an IO error
*/
private static boolean isConverged(Path filePath, Configuration conf, FileSystem fs) throws I
for (FileStatus part : fs.listStatus(filePath, PathFilters.partFilter())) { SequenceFileValueItera
SequenceFileValueIterator<>( part.getPath(), true, conf);
while (iterator.hasNext()) { ClusterWritable value = iterator.next(); if (!value.getValue().isCon
return false;
}
}
}
return true;
}
}
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either
PLAGIAT MERUPAKAN TINDAKAN TIDAK
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.mahout.clustering.iterator;
import java.io.IOException;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassifier;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.math.VectorWritable;
@Override
protected void setup(Context context) throws
IOException, InterruptedException {
Configuration conf = context.getConfiguration();
String priorClustersPath = conf.get(ClusterIterator.PRIOR_PATH_KEY);
classifier = new ClusterClassifier();
classifier.readFromSeqFiles(conf, new Path(priorClustersPath));
policy = classifier.getPolicy();
policy.update(classifier);
super.setup(context);
}
@Override
protected void map(WritableComparable<?> key, VectorWritable value,
Context context) throws IOException,
InterruptedException {
Vector probabilities = classifier.classify(value.get());
Vector selections = policy.select(probabilities);
PLAGIAT MERUPAKAN TINDAKAN TIDAK
@Override
protected void cleanup(Context context) throws
IOException, InterruptedException {
List<Cluster> clusters =
classifier.getModels(); ClusterWritable cw =
new ClusterWritable();
for (int index = 0; index < clusters.size(); index++)
{ cw.setValue(clusters.get(index));
context.write(new IntWritable(index), cw);
}
super.cleanup(context);
}
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.mahout.clustering.iterator;
PLAGIAT MERUPAKAN TINDAKAN TIDAK
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassifier;
@Override
protected void reduce(IntWritable key, Iterable<ClusterWritable>
values, Context context) throws IOException,
InterruptedException {
Iterator<ClusterWritable> iter = values.iterator();
Cluster first = iter.next().getValue(); // there must always be at least
one while (iter.hasNext()) {
Cluster cluster = iter.next().getValue();
first.observe(cluster);
}
List<Cluster> models = new ArrayList<>();
models.add(first);
classifier = new ClusterClassifier(models, policy);
classifier.close();
context.write(key, new ClusterWritable(first));
}
@Override
protected void setup(Context context) throws
IOException, InterruptedException {
Configuration conf = context.getConfiguration();
String priorClustersPath = conf.get(ClusterIterator.PRIOR_PATH_KEY);
classifier = new ClusterClassifier();
classifier.readFromSeqFiles(conf, new Path(priorClustersPath));
policy = classifier.getPolicy();
policy.update(classifier);
PLAGIAT MERUPAKAN TINDAKAN TIDAK
super.setup(context);
}
//sumber : http://bigdatatechworld.blogspot.co.id/2014/09/runningkmeans
clusteringalgorithm.html
package org.apache.mahout.clustering.liverdisorder2.kmeans;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.math.DenseVector;
import org.apache.mahout.math.NamedVector;
import org.apache.mahout.math.VectorWritable;
NamedVector apple;
BufferedReader br = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK
br = new BufferedReader(new
[0];
apples.add(apple);
}
Configuration(); FileSystem fs =
Path(OUTPUT_FILE);
new VectorWritable();
OUTPUT_FILE),
conf);
value)) {
System.out.println(key.toString() + ","
+ value.get().asFormatString());
}
//sumber : http://bigdatatechworld.blogspot.co.id/2014/09/runningk-
means clusteringalgorithm.html
package org.apache.mahout.clustering.liverdisorder2.kmeans;
import java.io.BufferedReader;
import java.io.FileReader;
import
java.util.ArrayList;
import java.util.List;
import
org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import
org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.math.DenseVector;
import org.apache.mahout.math.NamedVector;
import org.apache.mahout.math.VectorWritable;
NamedVector apple;
BufferedReader br = null;
br = new BufferedReader(new
[0];
apples.add(apple);
}
Configuration(); FileSystem fs =
Path(OUTPUT_FILE);
PLAGIAT MERUPAKAN TINDAKAN TIDAK
writer.close();
value)) {
System.out.println(key.toString() + ","
+ value.get().asFormatString());
}
http://www.apache.org/licenses/LICENSE2.0
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl)
naming the FileSystem implementation class. The uri's authority is
used to determine the host, port, etc. for a
filesystem.</description>
</property>
<?xml version="1.0"?>
<?xmlstylesheet type="text/xsl" href="configuration.xsl"?>
<!
Licensed under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE2.0
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
<description>The host and port that the MapReduce job tracker
runs at. If "local", then jobs are run inprocess as a single map
and reduce task.
</description>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Lampiran 19 : Source Code File Hdfs-site.xml
http://www.apache.org/licenses/LICENSE2.0
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication.
The actual number of replications can be specified when the file is
created. The default is used if replication is not specified in create
time.
PLAGIAT MERUPAKAN TINDAKAN TIDAK
</description>
</property>
<property>
<name>dfs.DataNode.data.dir</name>
<value>/app/hadoop/tmp/files</value>
</property>
<property>
<name>dfs.NameNode.name.dir</name>
<value>/app/hadoop/tmp/metadata</value>
</property>
</configuration>
Lampiran 20 : Source Code File Yarn-site.xml
<?xml version="1.0"?>
<!
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE2.0
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.auxservices</name>
<value>mapreduce_shuffle</value>
</property>
PLAGIAT MERUPAKAN TINDAKAN TIDAK
<property>
<name>yarn.nodemanager.resource.memorymb</name>
<value>2200</value>
<! <description>Amount of physical memory, in MB, that can be allocated for
containers.</description> >
</property>
<property>
<name>yarn.scheduler.minimumallocationmb</name>
<value>500</value>
</property>
</configuration>
Lampiran 21 : Hasil Kalkulasi Manual
mcv,alkphos,sgpt,sgot,gammagt,drinks,Cluster
Selector 85,92,45,27,31,0,C1
85,64,59,32,23,0,C1
86,54,33,16,54,0,C1
91,78,34,24,36,0,C1
87,70,12,28,10,0,C1
98,55,13,17,17,0,C1
88,62,20,17,9,0.5,C1
88,67,21,11,11,0.5,C1
92,54,22,20,7,0.5,C1
90,60,25,19,5,0.5,C1
89,52,13,24,15,0.5,C1
82,62,17,17,15,0.5,C1
90,64,61,32,13,0.5,C1
86,77,25,19,18,0.5,C1
96,67,29,20,11,0.5,C1
91,78,20,31,18,0.5,C1
89,67,23,16,10,0.5,C1
89,79,17,17,16,0.5,C1
91,107,20,20,56,0.5,C1
94,116,11,33,11,0.5,C1
92,59,35,13,19,0.5,C1
93,23,35,20,20,0.5,C1
90,60,23,27,5,0.5,C1
96,68,18,19,19,0.5,C1
92,70,24,13,26,0.5,C1
90,47,28,15,18,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK
88,66,20,21,10,0.5,C1
91,102,17,13,19,0.5,C1
87,41,31,19,16,0.5,C1
86,79,28,16,17,0.5,C1
91,57,31,23,42,0.5,C1
93,77,32,18,29,0.5,C1
88,96,28,21,40,0.5,C1
94,65,22,18,11,0.5,C1
85,54,47,33,22,0.5,C1
79,39,14,19,9,0.5,C1
85,85,25,26,30,0.5,C1
89,63,24,20,38,0.5,C1
84,92,68,37,44,0.5,C1
89,68,26,39,42,0.5,C1
89,101,18,25,13,0.5,C1
86,84,18,14,16,0.5,C1
85,65,25,14,18,0.5,C1
88,61,19,21,13,0.5,C1
92,56,14,16,10,0.5,C1
95,50,29,25,50,0.5,C1
91,75,24,22,11,0.5,C1
83,40,29,25,38,0.5,C1
89,74,19,23,16,0.5,C1
85,64,24,22,11,0.5,C1
94,48,11,23,43,0.5,C1
87,52,21,19,30,0.5,C1
85,65,23,29,15,0.5,C1
84,82,21,21,19,0.5,C1
88,49,20,22,19,0.5,C1
96,67,26,26,36,0.5,C1
90,63,24,24,24,0.5,C1
90,45,33,34,27,0.5,C1
90,72,14,15,18,0.5,C1
91,55,4,8,13,0.5,C1
91,52,15,22,11,0.5,C1
87,71,32,19,27,1,C1
89,77,26,20,19,1,C1
89,67,5,17,14,1,C1
85,51,26,24,23,1,C1
103,75,19,30,13,1,C1
90,63,16,21,14,1,C1
90,63,29,23,57,2,C1
90,67,35,19,35,2,C1
87,66,27,22,9,2,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK
90,73,34,21,22,2,C1
86,54,20,21,16,2,C1
90,80,19,14,42,2,C1
96,72,28,19,30,2,C1
91,55,9,25,16,2,C1
95,78,27,25,30,2,C1
92,101,34,30,64,2,C1
89,51,41,22,48,2,C1
91,99,42,33,16,2,C1
94,58,21,18,26,2,C1
88,47,33,26,29,2,C1
92,65,17,25,9,2,C1
92,79,22,20,11,3,C1
84,83,20,25,7,3,C1
88,68,27,21,26,3,C1
86,48,20,20,6,3,C1
99,69,45,32,30,3,C1
88,66,23,12,15,3,C1
89,62,42,30,20,3,C1
90,51,23,17,27,3,C1
81,61,32,37,53,3,C1
89,65,26,18,36,3,C1
92,75,26,26,24,3,C1
85,59,25,20,25,3,C1
92,61,18,13,81,3,C1
89,63,22,27,10,4,C1
90,84,18,23,13,4,C1
88,95,25,19,14,4,C1
89,35,27,29,17,4,C1
91,80,37,23,27,4,C1
91,109,33,15,18,4,C1
91,65,17,5,7,4,C1
88,107,29,20,50,4,C1
87,76,22,55,9,4,C1
87,86,28,23,21,4,C1
87,42,26,23,17,4,C1
88,80,24,25,17,4,C1
86,67,11,15,8,4,C1
92,40,19,20,21,4,C1
85,60,17,21,14,4,C1
89,90,15,17,25,4,C1
91,57,15,16,16,4,C1
96,55,48,39,42,4,C1
79,101,17,27,23,4,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK
90,134,14,20,14,4,C1
89,76,14,21,24,4,C1
88,93,29,27,31,4,C1
90,67,10,16,16,4,C1
92,73,24,21,48,4,C1
91,55,28,28,82,4,C1
83,45,19,21,13,4,C1
90,74,19,14,22,4,C1
92,66,21,16,33,5,C1
93,63,26,18,18,5,C1
87,59,15,19,12,5,C1
86,44,21,11,15,5,C1
87,64,16,20,24,5,C1
92,57,21,23,22,5,C1
99,59,17,19,11,5,C1
92,80,10,26,20,6,C1
95,60,26,22,28,6,C1
91,63,25,26,15,6,C1
92,62,37,21,36,6,C1
95,50,13,14,15,6,C1
90,76,37,19,50,6,C1
96,70,70,26,36,6,C1
92,62,20,23,20,6,C1
91,63,25,26,15,6,C1
92,82,27,24,37,6,C1
90,63,12,26,21,6,C1
88,37,9,15,16,6,C1
100,60,29,23,76,6,C1
98,43,35,23,69,6,C1
92,87,57,25,44,6,C1
93,99,36,34,48,6,C1
90,72,17,19,19,6,C1
97,93,21,20,68,6,C1
93,50,18,25,17,6,C1
90,57,20,26,33,6,C1
92,76,31,28,41,6,C1
88,55,19,17,14,6,C1
89,63,24,29,29,6,C1
93,84,58,47,62,7,C1
97,71,29,22,52,8,C1
84,99,33,19,26,8,C1
96,44,42,23,73,8,C1
90,62,22,21,21,8,C1
92,94,18,17,6,8,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK
97,71,29,22,52,8,C1
91,69,25,25,66,8,C1
93,59,17,20,14,8,C1
90,50,26,22,53,8,C1
91,62,59,47,60,8,C1
92,77,86,41,31,10,C1
86,66,22,24,26,10,C1
98,57,31,34,73,10,C1
95,80,50,64,55,10,C1
97,92,22,28,49,12,C1
87,75,25,21,14,0,C1
88,56,23,18,12,0,C1
84,97,41,20,32,0,C1
94,91,27,20,15,0.5,C1
97,62,17,13,5,0.5,C1
92,85,25,20,12,0.5,C1
82,48,27,15,12,0.5,C1
88,74,31,25,15,0.5,C1
95,77,30,14,21,0.5,C1
88,94,26,18,8,0.5,C1
91,70,19,19,22,0.5,C1
83,54,27,15,12,0.5,C1
91,105,40,26,56,0.5,C1
86,79,37,28,14,0.5,C1
89,82,23,14,35,0.5,C1
90,73,24,23,11,0.5,C1
90,87,19,25,19,0.5,C1
89,82,33,32,18,0.5,C1
85,79,17,8,9,0.5,C1
85,119,30,26,17,0.5,C1
78,69,24,18,31,0.5,C1
88,107,34,21,27,0.5,C1
89,115,17,27,7,0.5,C1
92,67,23,15,12,0.5,C1
89,101,27,34,14,0.5,C1
91,84,11,12,10,0.5,C1
94,101,41,20,53,0.5,C1
88,46,29,22,18,0.5,C1
88,122,35,29,42,0.5,C1
84,88,28,25,35,0.5,C1
90,79,18,15,24,0.5,C1
87,69,22,26,11,0.5,C1
65,63,19,20,14,0.5,C1
90,64,12,17,14,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK
85,58,18,24,16,0.5,C1
88,81,41,27,36,0.5,C1
86,78,52,29,62,0.5,C1
82,74,38,28,48,0.5,C1
86,58,36,27,59,0.5,C1
94,56,30,18,27,0.5,C1
87,57,30,30,22,0.5,C1
94,75,20,25,38,0.5,C1
83,68,17,20,71,0.5,C1
93,56,25,21,33,0.5,C1
101,65,18,21,22,0.5,C1
92,65,25,20,31,0.5,C1
92,58,14,16,13,0.5,C1
86,58,16,23,23,0.5,C1
85,62,15,13,22,0.5,C1
86,57,13,20,13,0.5,C1
86,54,26,30,13,0.5,C1
81,41,33,27,34,1,C1
91,67,32,26,13,1,C1
91,80,21,19,14,1,C1
92,60,23,15,19,1,C1
91,60,32,14,8,1,C1
93,65,28,22,10,1,C1
87,92,21,22,37,1,C1
95,62,24,23,14,1,C1
93,59,41,30,48,1,C1
84,82,43,32,38,2,C1
87,71,33,20,22,2,C1
86,44,24,15,18,2,C1
86,66,28,24,21,2,C1
88,58,31,17,17,2,C1
90,61,28,29,31,2,C1
88,69,70,24,64,2,C1
93,87,18,17,26,2,C1
98,58,33,21,28,2,C1
91,44,18,18,23,2,C1
87,75,37,19,70,2,C1
94,91,30,26,25,2,C1
88,85,14,15,10,2,C1
89,109,26,25,27,2,C1
87,59,37,27,34,2,C1
93,58,20,23,18,2,C1
88,57,9,15,16,2,C1
94,65,38,27,17,3,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK
91,71,12,22,11,3,C1
90,55,20,20,16,3,C1
91,64,21,17,26,3,C1
88,47,35,26,33,3,C1
85,58,83,49,51,3,C1
91,54,25,22,35,4,C1
98,50,27,25,53,4,C1
86,62,29,21,26,4,C1
89,48,32,22,14,4,C1
82,68,20,22,9,4,C1
83,70,17,19,23,4,C1
96,70,21,26,21,4,C1
94,117,77,56,52,4,C1
93,45,11,14,21,4,C1
93,49,27,21,29,4,C1
84,73,46,32,39,4,C1
91,63,17,17,46,4,C1
90,57,31,18,37,4,C1
87,45,19,13,16,4,C1
91,68,14,20,19,4,C1
91,86,52,47,52,4,C1
88,46,15,33,55,4,C1
85,52,22,23,34,4,C1
89,72,33,27,55,4,C1
95,59,23,18,19,4,C1
96,56,38,26,23,5,C1
90,52,10,17,12,5,C1
94,45,20,16,12,5,C1
99,42,14,21,49,5,C1
93,102,47,23,37,5,C1
94,71,25,26,31,5,C1
87,54,41,29,23,6,C1
92,67,15,14,14,6,C1
98,101,31,26,32,6,C1
93,43,11,16,54,6,C1
93,68,24,18,19,6,C1
95,36,38,19,15,6,C1
92,80,10,26,20,6,C1
96,74,27,25,43,6,C1
95,93,21,27,47,6,C1
86,109,16,22,28,6,C1
91,46,30,24,39,7,C1
85,50,12,18,14,7,C1
91,57,33,23,12,8,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK
91,52,76,32,24,8,C1
93,70,46,30,33,8,C1
87,55,36,19,25,8,C1
98,123,28,24,31,8,C1
82,55,18,23,44,8,C1
97,80,17,20,53,8,C1
100,83,25,24,28,8,C1
91,138,45,21,48,10,C1
92,41,37,22,37,10,C1
86,123,20,25,23,10,C1
91,93,35,34,37,10,C1
87,87,15,23,11,10,C1
87,56,52,43,55,10,C1
99,75,26,24,41,12,C1
91,68,27,26,14,16,C1
98,99,57,45,65,20,C1
84,80,47,33,97,0.5,C2
91,72,155,68,82,0.5,C2
92,57,64,36,90,0.5,C2
87,90,43,28,156,2,C2
92,60,30,27,297,2,C2
89,89,23,18,104,3,C2
90,96,34,49,169,4,C2
86,78,47,39,107,5,C2
97,44,113,45,150,5,C2
90,70,25,23,112,5,C2
95,62,64,42,76,6,C2
82,56,67,38,92,6,C2
91,74,87,50,67,6,C2
92,79,70,32,84,7,C2
92,93,58,35,120,7,C2
90,67,77,39,114,8,C2
92,95,85,48,200,8,C2
92,93,22,28,123,9,C2
92,108,53,33,94,12,C2
93,77,39,37,108,16,C2
94,83,81,34,201,20,C2
91,96,35,22,135,0.5,C2
98,74,148,75,159,0.5,C2
90,63,45,24,85,1,C2
83,78,31,19,115,1,C2
82,72,31,20,84,3,C2
86,55,29,35,108,4,C2
94,43,154,82,121,4,C2
PLAGIAT MERUPAKAN TINDAKAN TIDAK
92,73,33,34,115,5,C2
92,53,51,33,92,6,C2
97,94,43,43,82,6,C2
99,86,58,42,203,6,C2
98,66,103,57,114,6,C2
102,82,34,78,203,7,C2
95,73,20,25,225,8,C2
88,91,56,35,126,9,C2
96,69,53,43,203,12,C2
98,77,55,35,89,15,C2
Lampiran 22 : Hasil K-Means Dengan Menggunakan Library Mahout
{"r":[4.376,18.582,12.582,7.431,16.407,3.032],"c":
[89.958,69.212,26.817,22.876,27.059,3.149],"n":306,"identifier":"VL27"}
Weight : [props optional]: Point:
1.0 : [distance=30.280828894023347]: [85.0,92.0,45.0,27.0,31.0]
1.0 : [distance=34.599583998773824]: [85.0,64.0,59.0,32.0,23.0]
1.0 : [distance=32.68527636902549]: [86.0,54.0,33.0,16.0,54.0]
1.0 : [distance=14.86696464396173]: [91.0,78.0,34.0,24.0,36.0]
1.0 : [distance=23.581464357715724]: [87.0,70.0,12.0,28.0,10.0]
1.0 : [distance=24.560193572385426]: [98.0,55.0,13.0,17.0,17.0]
1.0 : [distance=21.67911792635194]: [88.0,62.0,20.0,17.0,9.0,0.5]
1.0 : [distance=21.17783024613144]: [88.0,67.0,21.0,11.0,11.0,0.5]
1.0 : [distance=26.008366624162214]: [92.0,54.0,22.0,20.0,7.0,0.5]
1.0 : [distance=24.42951386189925]: [90.0,60.0,25.0,19.0,5.0,0.5]
1.0 : [distance=25.333536579666625]: [89.0,52.0,13.0,24.0,15.0,0.5]
1.0 : [distance=19.96673304710818]: [82.0,62.0,17.0,17.0,15.0,0.5]
1.0 : [distance=38.517085214370525]: [90.0,64.0,61.0,32.0,13.0,0.5]
1.0 : [distance=13.553953086120329]: [86.0,77.0,25.0,19.0,18.0,0.5]
1.0 : [distance=17.870188336692532]: [96.0,67.0,29.0,20.0,11.0,0.5]
1.0 : [distance=16.729015842485673]: [91.0,78.0,20.0,31.0,18.0,0.5]
1.0 : [distance=19.122681938530324]: [89.0,67.0,23.0,16.0,10.0,0.5]
1.0 : [distance=18.89246756078381]: [89.0,79.0,17.0,17.0,16.0,0.5]
1.0 : [distance=48.25284546263715]: [91.0,107.0,20.0,20.0,56.0,0.5]
1.0 : [distance=53.1318852099199]: [94.0,116.0,11.0,33.0,11.0,0.5]
1.0 : [distance=18.571989516138252]: [92.0,59.0,35.0,13.0,19.0,0.5]
1.0 : [distance=47.71707026408424]: [93.0,23.0,35.0,20.0,20.0,0.5]
1.0 : [distance=24.699312733141195]: [90.0,60.0,23.0,27.0,5.0,0.5]
1.0 : [distance=14.237384180847348]: [96.0,68.0,18.0,19.0,19.0,0.5]
1.0 : [distance=10.880988869149485]: [92.0,70.0,24.0,13.0,26.0,0.5]
1.0 : [distance=25.414546754652328]: [90.0,47.0,28.0,15.0,18.0,0.5]
1.0 : [distance=19.03051824446491]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK