i
KLASIFIKASI POSISI PEMAIN NBA
MENGGUNAKAN ALGORITMA DECISION
TREE
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Oleh:
Hieronymus Dimas Febrianto
065314024
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2010
ii
POSITION CLASSIFICATION NBA PLAYERS
USE THE DECISION TREE ALGORITHM
A Thesis
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Department of Informatics Engineering
By:
Hieronymus Dimas Febrianto
065314024
INFORMATICS ENGINEERING STUDY PROGRAM
INFORMATICS ENGINEERING DEPARTMENT
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY YOGYAKARTA
2010
iii
iv
v
HALAMAN PERSEMBAHAN
JANGAN MENYESAL MELIHAT MASA LALU
JANGAN TAKUT MELIHAT MASA DEPAN
TETAPI LIHATLAH SEKELILINGMU DENGAN
PENUH KESADARAN
Skripsi ini saya persembahkan untuk:
Yesus Kristus
Keluarga, Kekasih, Sahabat dan Temen-Temen
Terima Kasih Semua…..
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini
tidak memuat karya orang lain, kecuali yang telah disebutkan dalam
kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 22 September 2010 Penulis
Hieronymus Dimas Febrianto
vii
“Klasifikasi Posisi Pemain NBA Menggunakan
Algoritma Decision Tree”
Abstraksi
Basket merupakan olah raga yang terdiri dari dua tim yang masing-masing
tim terdiri dari lima orang yang bertanding mencetak poin dengan cara
memasukan bola kedalam keranjang lawan. NBA (National Basketball
Association) adalah liga basket pria di Amerika Serikat. Untuk dapat
memenangkan kompetisi, dibutuhkan strategi dan penempatan posisi dengan
tepat agar setiap pemain dapat melakukan tugasnya dengan maksimal.
Untuk mencari posisi yang terbaik dari seorang pemain dapat
menggunakan teknik data mining untuk keperluan klasifikasi. Klasifikasi adalah
penggolongan data ke dalam kelas tertentu berdasarkan nilai atribut atau
supervised classification. Salah satu metode dari klasifikasi adalah decision tree
menggunakan struktur pohon atau struktur berhirarki.
Pada TGA ini, algoritma decision tree yang digunakan adalah C 4.5
dengan mengunakan atribut: point per game, presentase free throw, presentase
field goal, presentase 3 point, assist per game, blok per game, steal per game,
turn over per game, personal foul per game, offensive rebound, defensive
rebound, total rebound, berat badan dan tinggi badan. Masing-masing atribut
dibagi menjadi 3 kelompok: jelek, sedang dan bagus. Data yang digunakan
diambil dari www.nba.com pada tanggal 11 September 2009 yang merupakan
data musim kompetisi 2008/2009.
Proses pengujian menggunakan teknik 5 cross validation dan akurasi
dihitung dengan membandingkan data hasil output program dengan data asli.
Hasil pengujian akurasi yaitu 86.3%, 86.3%, 77.5%, 87.8%, 73.8% den
menghasilkan rerata 82,2%. Berdasar hasil akurasi, sistem bekerja cukup baik.
viii
"Position Classification NBA Players Use the
Decision Tree Algorithm"
Abstraction
Basketball is a sport which consists of two teams, each consisting of five
members who played scored points by way of entering the ball into the opponent's
basket. NBA (National Basketball Association) is a male basketball league in the
United States. To be able to win the competition, needed a strategy and placement of
the appropriately so that each player can perform their duties with maximum.
To find the best position of a player can use data mining.
To search best position from player can use data mining technique for
classification. One method of classification is a decision tree using the tree structure
or hierarchy.
In this thesis, the decision tree algorithm used is C 4.5 that have attributes:
points per game, free throw percentage, field goal percentage, three percentage
points, assists per game, blocks per game, steals per game, turn over per game,
personal Foul-per game, offensive rebounds, defensive rebounds, total rebounds, the
body weight and height. Each attribute is divided into three groups: poor, moderate
and good. Data was taken from www.nba.com at September 11, 2009. The used data
is data in season competition 2008/2009.
Testing process using five cross validation technique and accuracy is counted
by comparing the output data from the program with the original data. Results of
accuracy testing is 86, 3%, 86.3%, 77.5%, 87.8% , 73.8% which give average 82.2%.
Based on test result, the system worked pretty well.
ix
HALAMAN PERSETUJUAN
PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma:
Nama : Hieronymus Dimas Febrianto
No : 065314024
Demi pengembangan ilmu pengetahuan, saya memberikan kepada perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul:
Klasifikasi Posisi Pemain NBA
Menggunakan Algoritma Decision Tree
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan
dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data,
mendistribusikan secara terbatas, dan mempublikasikannya di internet atau media lain
untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan
royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di Yogyakarta
Pada tanggal: 22 September 2010
Yang menyatakan
(Hieronymus Dimas Febrianto)
x
Kata Pengantar
Puji syukur kepada Yesus Kristus yang telah memberikan karunia dan
kesempatan sehingga penulis dapat menyelesaikan skripsi dengan judul “Klasifikasi
pemain basket NBA dengan menggunakan Decision Tree”.
Terima kasih sebesar-besarnya kepda semua pihak yang turut memberikan
dukungan, semangat dan bantuan sehingga selesainya skripsi ini:
1. Tuhan Yesus Kristus yang telah memberikan semuanya sehingga penulis
bisa menyelesaikan tugas akhir ini.
2. Bapak Puspaningtyas Sanjoyo Adi S.T., M.T. selaku dosen pembimbing
atas kesabaran, bimbingan, waktu dan saran yang diberikan.
3. Laboran komputer atas bantuan kepada penulis ketika melakukan ujian
akhir.
4. Kedua orang tua, papa Sri Sumanto, S.E., M.M. dan mama Wiwing
Mardewi, S. Sos, M.Sos yang telah memberikan semangat, perhatian dan
doa sehingga penulis dapat menyelesaikan tugas akhir ini.
5. Semua saudara, kakak Pricila Prima Devinta, S.Psi dan mas Untoro Adi,
S.S., M.S yang telah memberikan semangat, perhatian dan doa sehingga
penulis dapat menyelesaikan tugas akhir ini.
6. Kekasihku tercinta, Agatha Widyastuti, atas semangat, perhatian, dan
motivasinya.
7. Sahabat dan teman-teman, A. Cahyo Ridho dan Andreas Hermawan
selaku teman seperjuangan dalam menyelesaikan tugas akhir ini.
xi
8. Semua pihak yang berperan baik secara langsung maupun tidak langsung
sehingga penulis dapat menyelesaikan tugas akhir ini
Penulis menyadari bahwa masih banyak kekurangan yang terdapat pada
laporan tugas akhir ini. Saran dan kritik saya harapkan untuk perbaikan-perbaikan
pada masa yang akan datang. Semoga bermanfaat.
Yogyakarta, 22 September 2010
Penulis
(Hieronymus Dimas Febrianto)
xii
DAFTAR ISI
Bab Judul Halaman
Halaman Judul……………………………………………………………... i
Halaman Judul……………………………………………………………... ii
Halaman Persetujuaan……………………………………………………… iii
Halaman Pengesahan……………………………………………………..... iv
Halaman Persembahan……………………………………………………... v
Pernyataan Keaslian Karya………………………………………………… vi
Abstraksi…………………………………………………………………… vii
Abstract…………………………………………………………………….. viii
Halaman Persetujuan Publikasi……………………………………………. ix
Kata Pengantar……………………………………………………………... x
Dafar Isi……………………………………………………………………. xii
Daftar Gambar……………………………………………………………... xvi
Daftar Tabel………………………………………………………………... xix
1 Pendahuluan………………………………………………………………... 1
1.1 Latar Belakang Masalah…………………………………………………... 1
1.2 Rumusan Masalah………………………………………………………….. 2
1.3 Batasan Masalah…………………………………………………………… 2
1.4 Tujuan ……………………………………………………………………... 3
1.5 Metodologi…………………………………………………………………. 3
1.6 Sistematika Penulisan……………………………………………………… 4
2 Landasan Teori…………………………………………………………….. 5
2.1 Basket………………………………………………………………………. 5
2.2 Klasifikasi………………………………………………………………….. 8
2.3 Metode Decision Tree……………………………………………………… 9
2.3.1 Pengertian Decision Tree…………………………………………………... 9
2.3.2 Konsep Decision Tree……………………………………………………… 10
xiii
2.3.3 Jenis-jenis Decision Tree…………………………………………………... 10
2.3.4 Algoritma C.4.5……………………………………………………………. 11
2.3.5 Contoh Pembuatan Tree dengan Algoritma Decicoin Tree………………... 14
2.4 Model Evaluasi 5 Cross Validation………………………………………... 25
3 Analisa dan Perancangan…………………………………………………... 29
3.1 Analisa Sistem Secara Umum……………………………………………… 29
3.1.1 Analisa Preprocessing……………………………………………………… 30
3.2 Analisa Algoritma C.4.5…………………………………………………… 32
3.3 Use Case…………………………………………………………………… 34
3.3.1 Diagram Use Case…………………………………………………………. 34
3.3.2 Narasi Use Case……………………………………………………………. 35
3.3.3 Activity Diagram…………………………………………………………... 35
3.4 Model Analisis……………………………………………………………... 36
3.4.1 Realisasi Use Case…………………………………………………………. 36
3.4.2 Diagram Kelas Analisis Keseluruhan……………………………………… 36
3.5 Model Desain………………………………………………………………. 36
3.5.1 Atribut dan Method………………………………………………………… 36
3.5.2 Rancangan Interface.………………………………………………………. 37
3.6 Metode Evaluasi Tree……………………………………………………… 37
3.7 Metode Evaluasi 5 Cross Validation………………………………………. 38
4 Implementasi dan Analisa Sistem…………………………………………. 40
4.1 Implementasi………………………………………………………………. 40
4.1.1 Implementasi Data...……………………………………………………….. 40
4.1.2 Implementasi File………………………………………………………….. 40
4.1.3 Implementasi Antar Muka…………………………………………………. 41
4.2 Pengujian Hasil Tree……………………………………………………….. 41
4.2.1 Pengelompokan Data………………………………………………………. 41
4.2.2 Hasil Tree dari Perhitungan Manual……………………………………….. 43
xiv
4.2.3 Hasil Tre dari Program…………………………………………………….. 48
4.2.4 Perbandingan Hasil Tree…………………………………………………… 53
4.2.5 Analisa Tree………………………………………………………………... 53
4.3 5 Cross Validation…………………………………………………………. 54
4.3.1 Penentuan 5 Kelompok Data………………………………………………. 54
4.3.2 Pengujian dan Perhitungan Akurasi……………………………………….. 54
5 Kesimpulan dan Saran……………………………………………………... 56
5.1 Kesimpulan………………………………………………………………… 56
5.2 Saran……………………………………………………………………….. 57
Daftar Pustaka……………………………………………………………… 58
1 Lampiran 1: Narasi Use Case……………………………………………… 59
1.1 Narasi Use Case Create Tree………………………………………………. 60
1.2 Narasi Use Case Personal Klasifikasi……………………………………… 62
1.3 Narasi Use Case Group Klasifikasi...……………………………………… 63
1.4 Narasi Use Case Setting Atribut…..…..…………………………………… 65
2 Lampiran 2: Activity Diagram…………………………………………….. 67
2.1 Activity Diagram Create Tree……….………..……………………………. 68
2.2 Activity Diagram Personal Klasifikasi…….….…………………………… 69
2.3 Activity Diagram Group Klasifikasi…………..…………………………… 70
2.4 Activity Diagram Setting Atribut….…………………….………………… 71
3 Lampiran 3: Model Analisis……………………………………………….. 72
3.1 Sequnence Create Tree……….………..…………………………………... 73
3.2 Sequnence Personal Klasifikasi…….….…………………………………... 74
3.3 Sequnence Group Klasifikasi…………..………………………………….. 76
3.4 Sequnence Setting Atribut….…………………….………………………... 77
4 Lampiran 4: Diagram Kelas Keseluruhan…………………………………. 79
4.1 Diagram Kelas Keseluruhan…………….…………………………………. 79
5 Lampiran 5: Atribut dan Method…………………………………………... 80
xv
5.1 Player………………………………………………………………………. 81
5.2 PlayerK…………………………………………………………………….. 83
5.3 Tree………………………………………………………………………… 86
5.4 enumData………………………………………………………………….. 86
5.5 enumKategori……………………………………………………………… 87
5.6 enumPosisi…………………………………………………………………. 87
5.7 Tools……………………………………………………………………….. 87
5.8 HomeForm…………………………………………………………………. 94
5.9 Create TreeForm…………………………………………………………… 96
5.10 Personal Klasifikasi Form…………………………………………………. 106
5.11 Group Klasifikasi Form……………………………………………………. 111
5.12 Setting Form……………………………………………………………….. 119
6 Lampiran 6: Rancangan Interface………………………………………….. 123
6.1 Halaman Home…………………………………………………………….. 124
6.2 Halaman Create Tree………………………………………………………. 125
6.3 Halaman Personal Klasifikasi……………………………………………… 125
6.4 Halaman Group Klasifiaksi………………………………………………... 126
6.5 Halaman Setting……………………………………………………………. 127
7 Lampiran 7: Implementasi Interface………………………………………. 129
7.1 Halaman Home…………………………………………………………….. 129
7.2 Halaman Create Tree………………………………………………………. 130
7.3 Halaman View Tree………………………………………………………... 134
7.4 Halaman Personal Klasifikasi……………………………………………… 135
7.5 Halaman Group Klasifikasi………………………………………………... 136
7.6 Halaman Settng……………………………………………………………. 139
7.7 Halaman About……………………………………………………………. 140
7.8 Halaman Help……………………………………………………………… 141
8 Lampiran 8: Tabel Keputusan……………………………………………… 142
xvi
DAFTAR GAMBAR
Gambar Keterangan Halaman
2.1 Konsep Decision Tree…………………………………………... 10
2.2 Tree Node 1……………………………………………………... 19
2.3 Tree Node 2……………………………………………………... 22
2.4 Tree Node 3……………………………………………………... 24
2.5 Pembagian data statistic pemain ke dalam 5 kelompok data…… 25
2.6 Metode Evaluasi 5 Cross Validation pengujian 1………………. 26
2.7 Metode Evaluasi 5 Cross Validation pengujian 2………………. 26
2.8 Metode Evaluasi 5 Cross Validation pengujian 3………………. 27
2.9 Metode Evaluasi 5 Cross Validation pengujian 4………………. 27
2.10 Metode Evaluasi 5 Cross Validation pengujian 5………………. 28
3.1 Alur sistem klasifikasi pemain secara umum…………………… 29
3.2 Alur pre-processing……………………………………………... 30
3.3 Algoritma Decision Tree C 4.5…………………………………. 33
3.5 Use Case ………………………………………………………... 34
3.6 Pengelompokan Data Untuk Proses Evaluasi Tree……………... 37
3.7 Pengelompokan Data Untuk Proses Evaluasi…………………... 38
4.1 Pengelompokan Data Untuk Proses Evaluasi Tree……………... 41
4.2 Tree manual 1…………………………………………………… 43
4.3 Tree manual 2…………………………………………………… 44
4.4 Tree manual 3…………………………………………………… 45
4.5 Tree manual 4…………………………………………………… 46
4.6 Tree manual 5…………………………………………………… 47
4.7 Tree program 1…………..……………………………………… 48
4.8 Tree program 2……………..…………………………………… 49
4.9 Tree program 3………………………………………………….. 50
xvii
4.10 Tree program 4………………………………………………….. 51
4.11 Tree program 5………………………………………………….. 52
4.12 Pengelompokan Data Untuk Proses Evaluasi…………………... 54
2.1 Diagram Activity Create Tree…………………………………... 69
2.2 Diagram Activity Personal Klasifikasi………………………….. 70
2.3 Diagram Activity Group Klasifikasi……………………………. 71
2.4 Diagram Activity Setting……………………………………….. 72
3.1 Sequence Create Tree…………………………………………… 75
3.2 Sequence Personal Klasifikasi………………………………….. 76
3.3 Sequence Group Klasifikasi…………………………………….. 78
3.4 Sequence Setting………………………………………………... 79
4.1 Diagram Kelas Keseluruhan……………………………………. 80
6.1 Design Interface Home…………………………………………. 125
6.2 Design Interface Group Klasifikasi……………………………... 126
6.3 Design Interface Personal Klasifikasi…………………………... 127
6.4 Design Interface Setting………………………………………… 128
7.1 Halaman Home…………………………………………………. 131
7.2 Halaman Create Tree (sebelum data diinputkan)………………. 131
7.3 Kotak file selector untuk mengambil data……………………… 132
7.4 Pemberitahuan file sudah diinputkan…………………………… 132
7.5 Halaman Create Tree (setelah data diinputkan)………………… 133
7.6 Pemberitahuan file telah selesai di-preprocessing……………… 133
7.7 Halaman Create Tree (setelah dilakukan preprocessing)……….. 134
7.8 Pemberitahuan Tree sudah terbentuk…………………………… 134
7.9 Halaman View Tree…………………………………………….. 135
7.10 Halaman Personal Klasifikasi…………………………………... 136
7.11 Halaman Group Klasifikasi Gambar……………………………. 137
7.12 File selector untuk memilih file yang akan diklasifikasi……….. 137
xviii
7.13 Pemberitahuan File telah diinputkan……………………………. 138
7.14 Halaman Group Klasifikasi ( Setelah file diinputkan)………….. 138
7.15 Pemberitahuan file telah diinputkan…………………………….. 138
7.16 Halaman Group Klasifikasi ( Setelah proses Klasifikasi)………. 139
7.17 Pemberitahuan telah dilakukan preses Klasifikasi……………… 139
7.18 Halaman Setting………………………………………………… 140
7.19 Halaman About…………………………………………………. 141
7.20 Halaman Help…………………………………………………… 142
xix
DAFTAR TABEL
Tabel Keterangan Halaman
2.1 Data Asli Statistik Pemain……………………………….. 13
2.2 Data Preprocessing Statistik Pemain……………………… 15
2.3 Data Pengelompokan Statistik Pemain Node 1…………… 16
2.4 Data Pengelompokan Statistik Pemain Node 2…………… 20
2.5 Data Pengelompokan Statistik Pemain node 3……………. 23
3.1 Pengelompokan Data Statistik Pemain……………………. 30
3.2 Tabel Use Case…………………………………………… 35
5.1 Implementasi File………………………………………… 41
5.2 Perbandingan Tree ………………………………………... 53
5.3 Akurasi Program…………………………………………... 55
Lampiran :
3.1 Kelas Analisis Create Tree………………………………... 74
3.2 Kelas Analisis Personal Klasifikasi……………………….. 76
3.3 Kelas Analisis Group Klasifikasi………………………….. 77
3.4 Kelas Analisis Setting……………………………………... 78
L8 Tabel Keputusan…………………………………………... 143
1
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG MASALAH
Bola basket adalah olahraga bola berkelompok yang terdiri atas dua tim
beranggotakan masing-masing lima orang yang saling bertanding mencetak poin
dengan memasukkan bola ke dalam keranjang lawan. Sekarang hampir di setiap
negara telah mempunyai team basket dan liga basket, seperti NBA (national
basketball association). NBA adalah liga bola basket pria di amerika serikat.
Untuk memenangkan kompetisi, meraih banyak kemenangan merupakan syarat
penting. Tetapi dalam pertandingan bola basket banyak faktor yang menentukan
menang kalah suatu team, baik dari segi strategi maupun penempatan posisi
pemain. Tetapi tidak semua pelatih mampu menempatan posisi pemainnya
dengan tepat sehingga pemain tidak dapat melakukan tugasnya dengan
maksimal.
Data mining adalah teknik untuk menambang (mining) pengetahuan dari
sekumpulan data yang sangat besar. Data mining diterapkan untuk menarik
pengetahuan yang tersembunyi. Teknik data mining terdiri dari: asosiasi,
klastering dan klasifikasi. Asosiasi digunakan untuk mengenali kelakuan dari
kejadian-kejadian khusus atau proses dimana link asosiasi muncul pada setiap
kejadian. Klastering adalah memaksimalkan kesamaan antar anggota satu kelas
dan meminimumkan kesamaan antar cluster. Klasifikasi adalah menggolongkan
data ke dalam kelas tertentu berdasarkan nilai atribut atau supervised
classification. Salah satu metode dari klasifikasi adalah decision tree. Decision
tree adalah model klasifikasi menggunakan struktur pohon atau struktur
berhirarki.
2
Dengan adanya data statistik pemain NBA, masalah penempatan posisi
pemain bisa diselesaikan dengan data mining. Masalah penempatan pemain
diselesaikan dengan teknik klasifikasi dan metode decision tree. Data statistik
pemain akan digolongkan ke dalam kelas tertentu berdasarkan nilai atribut. Hasil
metode ini akan membantu pelatih dalam menentukan penempatan pemain
dengan tepat.
1.2 RUMUSAN MASALAH
1. Bagaimana membuat software untuk klasifikasi pemain NBA agar dapat
menempatkan posisi pemain dengan tepat?
2. Bagaimana mengaplikasikan data mining dengan metode decision tree
dalam olahraga basket?
1.3 BATASAN MASALAH
1. Data yang digunakan adalah data statistik pemain NBA. Data training
yang digunakan adalah data statistik NBA pada musim kompetisi 2008-
2009.
2. Algoritma yang akan digunakan adalah decision tree dan teknik decision
tree yang dipakai adalah C4.5.
3. File inputan berupa file dengan format .csv
4. Atribut-atribut yang akan dipilih adalah: point per game, presentase free
throw, presentase field goal, presentase 3 point, assist per game, blok per
game, steal per game, turn over per game, personal foul per game,
offensive rebound, defensive rebound, total rebound, berat badan dan
tinggi badan.
5.
3
6. Pengelompokan posisi pemain basket dibagi menjadi 3, yaitu guard,
forward dan center.
1.4 TUJUAN
1. Membuat software untuk klasifikasi posisi pemain NBA dengan
menggunakan decisioin tree, yang dapat membantu pelatih atau user
dalam menempatkan posisi pemain dengan tepat.
1.5 METODOLOGI
1. Referensi (Literatur)
Metode yang dilakukan dengan membaca dokumen, file, maupun referensi
buku yang telah ada, maupun sumber lain yang berkenaan dengan objek
yang sedang dibutuhkan.
2. Perancangan Sistem
Setelah memulai tahap literatur, selanjutnya dilakukan perancangan sistem
yang akan dibuat dengan metode berbasis objek. Proses perancangan ini
mempunyai beberapa tahap, yaitu pembuatan:
a. Use case
b. Narasi Use case
c. Activity Diagram
d. Model Analisis
Relasi Use Case
Diagram Kelas Analisis Keseluruhan
e. Model Desain
Atribut dan Method
Rancangan Interface
3. Implementasi
4
Tahap ini adalah penerapan desain kedalam bentuk program dengan
memanfaatkan bahasa pemrograman yang ada berdasarkan perancangan
system.
4. Pengujian
Tahap ini akan dilakukan pengujian terhadap hasil tree dengan cara
membandingkan dengan perhitungan secara manual dan pengujian akurasi
program dengan 5 cross validation.
1.6 SISTEMATIKA PENULISAN
BAB I. PENDAHULUAN
Bab ini berisi latar belakang masalah, rumusan masalah, batasan masalah,
tujuan, metode penelitian dan sistematika penulisan.
BAB II. LANDASAN TEORI
Bab ini berisi tentang dasar teori yang mendukung pembuatan tugas akhir ini.
BAB III. ANALISA DAN PERANCANGAN SISTEM
Bab ini berisi tentang analisi system dan membahas perancangan secara garis
besar dalam menampilkan klasifikasi yang akan dibuat.
BAB IV. IMPLEMENTASI DAN ANALISA HASIL
Menjelaskan mengenai implementasi rancangan (desain) ke dalam bentuk
utilitas yang nyata yang dapat dipergunakan secara langsung. Bab ini juga
berisi tentang hasil uji coba program yang telah dibuat dan membahas
kelebihan maupun kekurangan program. Serta menentukan dukungan
software terhadap program yang telah dibuat.
BAB V. KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan dan saran.
5
BAB II
LANDASAN TEORI
2.1 Basket
Basket adalah permainan yang membutuhkan kecepatan (tidak hanya
fisik, tapi juga kecepatan dalam berpikir), kekuatan, dan juga mengerti dasar-
dasar dalam permainan ini. Dalam basket ada beberapa posisi pemain yang
disesuaikan dengan skill dan juga postur tubuh. Orang yang mempunyai postur
tubuh tinggi di dalam team akan menempati posisi forward atau center.
Sedangkan orang mempunyai postur badan lebih kecil dan biasanya didukung
oleh kemampuan dribbling atau membawa bola yang baik akan menempati
posisi guard. Berikut ini merupakan posisi standart basket yang digunakan di
NBA:
Guard
Posisi ini lebih sering berada di luar key hole atau perimeter area. Pada
posisi guard biasanya dibagi menjadi 3 bagian:
Point guard
Kebanyakan tim menempatkan pemain mereka yang paling kecil
dan paling cepat untuk posisi ini. Guard lebih sedikit beradu
kontak fisik dengan pemain lawan dibandingkan dengan posisi
forward dan center. Bertugas mengatur permainan dengan
mengatur strategi yang akan diterapkan dengan menerapkan
pola-pola permainan. Biasanya mempunyai kemampuan dribble
paling baik. Point guard seharusnya menjadi yang terdepan
dalam memberikan assist di dalam timya.
6
Shooting guard
Tugas utama dari Shooting guard adalah sebagai penembak/
shooter baik 2 point maupun 3 point. Walaupun tugas utamanya
adalah menembak bola, tidak jarang shooting guard melakukan
drive dan layup. Tetapi diharapkan juga dapat membuat screen
dan mempunyai kemampuan rebound yang baik.
Small forward
Tugas utama dari small forward adalah drive/ menusuk ke
pertahanan lawan dan melakukan layup. Small forward biasanya
mencetak 2 point. Walaupun tugas utamanya adalah drive dan
layup, tidak jarang small foward melakukan shooting. Small
forward diharapkan juga dapat membuat screen dan mempunyai
kemampuan rebound yang baik.
Forward/ Power Forward
Kebanyakan forward mempunyai postur badan yang lebih besar dan lebih
kuat dibandingkan posisi guard dan mempunyai kemampuan rebound
yang lebih baik dibandingkan guard. Tugas utama mereka adalah
melakukan rebound dan bekerja di paint area. Forward diharuskan
memiliki kemampuan menembak medium yang baik karena akan lebih
banyak berada di dekat ring.
Center
Biasanya mereka pemain yang paling tinggi dan paling besar dalam team.
Pemain ini bertanggung jawab dalam melakukan rebound dan bermain di
area key hole, center harus dapat memperjuangkan rebound dan bermain
di bawah ring.
Selain posisi pemain, istilah-istilah dalam basket pun perlu dimengerti. Istilah-
istilah dibawah ini biasanya istilah yang terdapat dalam statistik di NBA.
7
Point adalah ketika pemain berhasil memasukan bola ke dalam
keranjang.
Point Per Game (PPG) adalah rata-rata point yang dihasilkan dalam 1
pertandingan.
Free Throw adalah lemparan bebas. Free throw terjadi ketika pemain
yang akan memasukan bola ke keranjang dilanggar oleh pemain lawan.
Presentase Free Throw (FT%) adalah presentase lemparan bebas.
Field Goal adalah point yang dihasilkan selain point dari free throw.
Presentase Field Goal (FG%)adalah presentase point yang dihasilkan
selain point dari free throw.
3 Point adalah lemparan 3 angka, 3 point terjadi ketika pemain
melakukan shooting diluar garis 3 point dan berhasil masuk ke dalam
keranjang.
Presentase 3 Point (3P%) adalah presentase lemparan 3 angka
Assist adalah dimana pemain mengoper bola kepada temannya, dan
pemain yang mendapat bola operan dari temannya itu tanpa men-dribble
(memantulkan bola ke tanah) langsung memasukkan bola kedalam jaring.
Assist Per Game adalah rata-rata jumlah assist yang dilakukan dalam 1
pertandingan.
Block adalah dimana seorang pemain bertahan melakukan lompatan dan
berhasil menghalang/menahan bola yang sedang dilempar oleh pihak
lawan atau penyerang, sehingga bola tidak berhasil melaju dan masuk
kedalam ring.
Blok Per Game adalah rata-rata jumlah blok yang dilakukan dalam 1
pertandingan.
Steal adalah dimana seorang pemain bertahan berhasil merebut bola yang
sedang dipegang, dioper atau di-dribble pihak lawan, tetapi tidak
menyentuh tangan lawan.
8
Rebound adalah dimana seorang pemain menangkap atau mendapatkan
bola pantul yang tidak berhasil masuk yang ditembakkan oleh pemain
lain.
Offensive Rebound: rebound yang dilakukan di area lawan.
Defensive Rebound: rebound yang dilakukan di area sendiri.
2.2 Klasifikasi
Menurut Zaiane (1999), dalam data mining dikenal sebuah istilah
klasifikasi. Klasifikasi adalah menggolongkan data ke dalam kelas yang
diberikan berdasarkan nilai atribut atau supervised classification. Tujuan dari
klasifikasi adalah untuk mengorganisasikan dan mengkategorikan data ke dalam
kelas yang telah di tentukan.. Tipe data klasifikasi bersifat kategorik. Tahapan-
tahapan dari klasifikasi dalam data mining terdiri dari :
Pembangunan model, dalam tahapan ini dibuat sebuah model untuk
menyelesaikan masalah klasifikasi class atau attribut dalam data, model
ini dibangun berdasarkan training sebuah contoh data dari permasalahan
yang dihadapi, training ini sudah mempunyai informasi yang lengkap
baik attribut maupun classnya
Penerapan model, pada tahapan ini model yang sudah dibangun
sebelumnya digunakan untuk menentukan attribut / class dari sebuah data
baru yang attribut / class-nya belum diketahui sebelumnya
Evaluasi, pada tahapan ini hasil dari penerapan model pada tahapan
sebelumnya dievaluasi menggunakan parameter terukur untuk
menentukan apakah model tersebut dapat diterima
9
2.3 Metode Decision Tree
2.3.1 Pengertian Decision Tree
Menurut Jiawei Han dan Micheline Kamber (2001), salah
satu metode data mining yang umum digunakan adalah decision tree.
Metode decision tree mengubah fakta yang sangat besar menjadi
pohon keputusan yang merepresentasikan aturan. Decision tree juga
berguna untuk mengeksplorasi data, menemukan hubungan
tersembunyi antara sejumlah calon variabel input dengan sebuah
variabel target. Konsep decision tree adalah suatu struktur flowchart
yang menyerupai tree (pohon), dimana setiap simpul internal
menandakan suatu tes pada atribut, setiap cabang merepresentasikan
hasil tes, dan simpul daun merepresentasikan kelas atau distribusi
kelas. Alur pada decision tree di telusuri dari simpul akar ke simpul
daun yang memegang prediksi kelas untuk contoh tersebut. Decision
tree mudah untuk dikonversi ke aturan klasifikasi.
Decision tree sesuai digunakan untuk kasus-kasus dimana
output-nya bernilai diskrit. Walaupun banyak variasi model decision
tree dengan tingkat kemampuan dan syarat yang berbeda, pada
umumnya beberapa ciri kasus berikut cocok untuk diterapkan dengan
decision tree:
Data/ example dinyatakan dengan pasangan atribut dan
nilainya.
Label/output data biasanya bernilai diskrit.
Data mempunyai missing value.
10
2.3.2 Konsep Decision Tree
Mengubah data menjadi pohon keputusan (decision tree) dan aturan-
aturan keputusan (rule)
Gambar 2.1 Konsep Decision Tree
2.3.3 Jenis-jenis Decision Tree
Beberapa jenis model decision tree yang sudah
dikembangkan antara lain ID3, C4.5 dan CART (Classification and
Regression Tree).
1. CART
Dalam CART, setiap simpul dipecah menjadi 2 cabang.
Ada dua langkah penting yang harus diikuti untuk mendapatkan tree
dengan performasi yang optimal. Yang pertama adalah pemecahan
obyek secara berulang berdasarkan atribut tertentu. Yang kedua,
pruning (pemangkasan) dengan menggunakan data validasi.
2. ID3 dan C4.5
Dalam ID3 menggunakan criteria informasi gain untuk
memilih atribut yang akan digunakan untuk pemisahan obyek. Atribut
yang mempunyai information gain paling tinggi dibandingkan atribut
yang lain relative terhadap set y dalam satu data, dipilih untuk
melakukan pemecahan. Sedangkan C4.5 merupakan pengembangan
dari ID3. Perbaikan dilakukan dalam hal:
~Bisa mengatasi missing data.
DATA DECISION
TREE
RULE
11
~Bisa mengatasi data continue.
~Pruning.
~Aturan.
2.3.4 Algoritma C 4.5
Menurut Larose (2005), algoritma C 4.5 merupakan
pengembangan dari ID3. Pengembangan yang dilakukan pada C4.5
adalah bisa mengatasi missing data, bisa mengatasi data continue,
pruning dan aturan.
Secara umum algoritma C 4.5 untuk membangun pohon
keputusan adalah sebagai berikut:
1. Pilih atribut sebagai root
2. Buat cabang untuk masing-masing nilai
3. Bagi kasus dalam cabang
4. Ulangi proses untuk masing-masing cabang sampai
semua kasus pada cabang memiliki kelas yang sama.
Untuk memilih atribut sebagai akar, dipilih atribut yang
menghasilkan simpul yang paling “purest” (paling bersih). Semakin
pure suatu cabang semakin baik. Ukuran purity dinyatakan dengan
tingkat impurity. Salah satu criteria impurity adalah information gain.
Jadi dalam memilih atribut untuk untuk memcah obyek dalam
beberapa kelas harus dipilih atibut yang menghasilkan information
gain paling besar. Untuk menghitung information gain digunakan
rumus:
12
𝐺𝑎𝑖𝑛 𝑆, 𝐴 = 𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑆 − |𝑆𝑖|
|𝑆|∗ 𝐸𝑛𝑡𝑟𝑜𝑝𝑦(𝑆𝑖)
𝑛𝑖=1
……………..……Rumus 1
Dengan :
S : Himpunan kasus
A : Atribut
n : Jumlah partisi atribut A
|Si| : Jumlah kasus pada partisi ke i
|S| : Jumlah kasus dalam S
Sedangkan perhitungan nilai entropy dapat dilihat di bawah ini:
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑆 = − 𝑝𝑖 ∗ 𝑙𝑜𝑔2𝑛𝑖=1 𝑝𝑖…………....Rumus 2
dengan :
S : Himpunan Kasus
A : Fitur
n : Jumlah partisi S
pi : Proporsi dari Si terhadap S
Berikut ini merupakan beberapa tugas akhir yang membahas
decision tree:
1. “Pencarian Karakteristik Calon Mahasiswa Baru Universitas
Sanata Dharma Yang Tidak Mendaftar Ulang Dengan
Menggunakan Algoritma Decision Tree.”
Tugas akhir yang dibuat oleh Lilik Haryanto ini, membahas
tentang bagaimana memprediksi karakteristik calon
13
mahasiswa yang akan melakukan daftar ulang maupun yang
tidak akan mendaftar ulang. Pada tugas akhir ini pohon tidak
terlihat. Akurasi program hanya 61.64%.
2. “Implementasi Data Mining Untuk Mengidentifikasikan Profil
Donatur Organisasi Veteran Amerika Menggunakan Pohon
Keputusan”
Tugas akhir yang dibuat oleh Stefany Yunita ini, membahas
tentang bagaimana memprediksi tipe-tipe donatur yang akan
memberikan bantuan ke organisasi veteran amerika. Pada
tugas akhir ini menggunakan 36 atribut dan dalam
pembentukan pohon belum terdapat proses pruning yang
maksimal. Pohon berbentuk tabel Akurasi program mencapai
64.75%.
3. “Implementasi Data Mining Pada Data Perusahaan Asuransi
Dengan Menggunakan Algoritma Decision Tree”
Tugas akhir yang dibuat oleh Berta Endah Mawarni ini,
membahas tentang bagaimana memprediksikan tipe-tipe
pemegang polis pada suatu perusahaan asuransi yang tertarik
maupun yang tidak tertarik untuk menggunakan polis asuransi
karavan dengan data mining dengan mengunakan algoritma
decision tree. Algoritma decision tree yang digunakan adalah
ID3 Quinlan. Dalam pembuatan tree, pertama-tama data
diubah menjadi model pohon. Untuk membuat node pohon
ditentukan node awalnya dengan mencari nilai entropy yang
terkecil. Kemudian menentukan apakah pohon bercabang atau
tidak. Bercabang jika kejadian memiliki nilai ya dan tidak
bercabang jika kejadian bernilai tidak. Kemudian pohon
diubah menjadi rule dan proses berikutnya adalah
14
penyederhanaan rule. Pohon yang terbentuk dapat terlihat.
Akurasi program mencapai 94.5%.
Dengan demikian dapat diambil sebuah kesimpulan bahwa
algoritma decision tree cukup prospek dalam menyelesaikan kasus.
2.3.5 Contoh Pembuatan Tree Dengan Algoritma C 4.5
Contoh pembuatan tree dengan menggunakan algoritma C
4.5 dalam kasus penentuan posisi pemain basket NBA. Pertama-tama
diambil data acak seperti terlihat pada tabel 2.1.
FG % 3P % FT% POSISI
0.545 0.444 0.75 Center
0.267 0.158 1 Guard
0.367 0.321 1 Forward
0.286 0 1 Center
0.286 0 1 Forward
0.419 0.367 0.8 Guard
0.424 0.347 0.821 Guard
0.32 0 0.375 Guard
0.449 0.389 0.868 Guard
0.235 0.333 0.333 Forward
0.307 0.292 0.81 Center
0.273 0.125 1 Forward
0.396 0.342 0.76 Guard
0.412 1 0.467 Forward
0.364 0.5 0 Forward
0.55 0 0 Guard
0.407 0.374 0.95 Forward
0.301 0.263 0.938 Forward
15
0.46 0.25 0.823 Forward
0.374 0.31 0.817 Guard
Tabel 2.1 Data Asli Statistik Pemain
Setelah mengalami preprocessing, data akan berubah menjadi data baru
seperti terlihat pada tabel 2.2.
FG % 3P% FT% Posisi
Sedang Sedang Bagus Center
Jelek Jelek Bagus Guard
Jelek Jelek Bagus Forward
Jelek Jelek Bagus Center
Jelek Jelek Bagus Forward
Sedang Jelek Bagus Guard
Sedang Jelek Bagus Guard
Jelek Jelek Jelek Guard
Sedang Jelek Bagus Guard
Jelek Jelek Jelek Forward
Jelek Jelek Bagus Center
Jelek Jelek Bagus Forward
Jelek Jelek Bagus Guard
Sedang Bagus Sedang Foward
Jelek Sedang Jelek Center
Sedang Jelek Jelek Guard
Sedang Jelek Bagus Forward
Jelek Jelek Bagus Forward
Sedang Jelek Bagus Forward
Bagus Bagus Sedang Foward
Tabel 2.2 Data Preprocessing Statistik Pemain
16
Jumlah Kasus Guard Forward Center
Total 20 7 9 4
FG%
Jelek 11 3 6 2
Sedang 8 4 2 2
Bagus 1 0 1 0
3P%
Jelek 16 7 7 2
Sedang 2 0 0 2
Bagus 2 0 2 0
FT%
Jelek 3 2 1 0
Sedang 3 0 1 2
Bagus 14 5 7 2
Tabel 2.3 Data Pengelompokan Statistik Pemain Node 1
Setelah dikelompokkan seperti terlihat pada tabel 2.3. Untuk mencari akar atau node,
pertama-tama harus menghitung entropy dengan menggunakan rumus 2. Kemudian
menghitung information gain dengan mengunakan rumus 1. Information gain yang
terbesar inilah yang akan menjadi akar atau node.
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑡𝑜𝑡𝑎𝑙) = − 7
20× 𝑙𝑜𝑔2
7
20 + −
9
20× 𝑙𝑜𝑔2
9
20 + −
2
20× 𝑙𝑜𝑔2
2
20
= −0.35 × −0.45 + −0.45 × −0.346 + −0.1 × −1
= 0.1595 + 0.1557 + 0.1
17
= 0.4152
Entropy FG% :
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑗𝑒𝑙𝑒𝑘 = − 3
11× 𝑙𝑜𝑔2
3
11 + −
6
11× 𝑙𝑜𝑔2
6
11 + −
3
11× 𝑙𝑜𝑔2
3
11
= (−0.272 x -0.565) + (-0.545 x -0.263) + (−0.272 x -0.565)
= 0.15368 + 0.143335 + 0.15368
= 0.450695
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑠𝑒𝑑𝑎𝑛𝑔 = − 4
8× 𝑙𝑜𝑔2
4
8 + −
2
8× 𝑙𝑜𝑔2
2
8 + −
2
8× 𝑙𝑜𝑔2
2
8
= − 0.5 × −0.301 + − 0.25 × −0.602 + − 0.25 × −0.602
= 0.1505 + 0.1505 + 0.1505
= 0.42275
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑏𝑎𝑔𝑢𝑠 = − 1
1× 𝑙𝑜𝑔2
1
1
= −1 ∗ 0
= 0
Entropy 3P% :
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑗𝑒𝑙𝑒𝑘 = − 7
16× 𝑙𝑜𝑔2
7
16 + −
7
16× 𝑙𝑜𝑔2
7
16 + −
2
16× 𝑙𝑜𝑔2
2
16
= − 0.4375 × −0.359 + − 0.4375 × −0.359 + − 0.125 × −0.903
= 0.1570625 + 0.1570625 + 0.112875
= 0.427
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑠𝑒𝑑𝑎𝑛𝑔 = − 2
2× 𝑙𝑜𝑔2
2
2
= 0
18
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑏𝑎𝑔𝑢𝑠) = − 2
2× 𝑙𝑜𝑔2
2
2
= 0
Entropy FT% :
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑗𝑒𝑙𝑒𝑘) = − 2
3× 𝑙𝑜𝑔2
2
3 + −
1
3× 𝑙𝑜𝑔2
1
3
= −0.66 𝑥 − 0.176 + (- 0.33 x -0.477)
= 0.11616 + 0.15741
= 0.27257
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑠𝑒𝑑𝑎𝑛𝑔) = − 2
3× 𝑙𝑜𝑔2
2
3 + −
1
3× 𝑙𝑜𝑔2
1
3
= −0.66 𝑥 − 0.176 + (- 0.33 x -0.477)
= 0.11616 + 0.15741
= 0.27257
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑏𝑎𝑔𝑢𝑠 = − 5
14× 𝑙𝑜𝑔2
5
14 + −
7
14× 𝑙𝑜𝑔2
7
14 + −
2
14× 𝑙𝑜𝑔2
2
14
= (−0.357 x − 0.447) + − 0.5 × −0.301 + (−0.142 x − 0.845)
= 0.159579 + 0.1505 + 0.143166
= 0.459821
Information Gain:
𝐺𝑎𝑖𝑛 𝐹𝐺% = 0.4152 − 11
20× 0.450695 +
8
20× 0.42275 +
1
20× 0
= 0.4152 − 0.24788225 + 0.1691 + 0
= 0.4152 − 0.41698225
= 0.00378225
𝐺𝑎𝑖𝑛 3𝑃% = 0.4132 − 16
20× 0.427 +
2
20× 0 +
2
20× 0
= 0.41324 − 0.3416 + 0 + 0
19
= 0.4132 − 0.3416
= 0.0716
𝐺𝑎𝑖𝑛 𝐹𝑇% = 0.4132 − 3
20× 0.27257 +
3
20× 0.27257
+ 14
20× 0.459821
= 0.41324 − 0.0408855 + 0.0408855 + 0.3218747
= 0.4132 − 0.4036457
= 0.0095543
Syarat menjadi akar adalah memiliki information gain yang paling besar. Karena
information gain 3p% adalah yang terbesar maka 3p% sebagai akar. Atribut dari
3p% ada 3 yaitu jelek, sedang dan bagus. Dari ketiga atribut tersebut, atribut sedang
dan bagus sudah mengklasifikasikan kasus menjadi satu. Sehingga tidak perlu
dilakukan perhitungan lebih lanjut lagi. Tetapi perhitungan untuk jelek masih perlu
dilanjutkan. Tree yang terbentuk dari perhitungan dan klasifikasi diatas dapat dilihat
pada gambar
?
3P%
Center Foward
Bagus Sedang Jelek
20
Gambar 2.2 Tree Node 1
Jumlah Kasus Guard Forward Center
3P% - Jelek 16 7 7 2
FG%
Jelek 10 3 5 2
Sedang 6 4 2 0
Bagus 0 0 0 0
FT%
Jelek 3 2 1 0
Sedang 0 0 0 0
Bagus 13 5 6 2
Tabel 2.4 Data Pengelompokan Statistik Pemain Node 2
Setelah dikelompokkan seperti terlihat pada tabel 2.4. Untuk mencari akar atau node
level 2, pertama-tama harus menghitung entropy dengan menggunakan rumus 2.
Kemudian menghitung information gain dengan mengunakan rumus 1. Information
gain yang terbesar inilah yang akan menjadi akar atau node.
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 3P% − jelek
= − 7
16× 𝑙𝑜𝑔2
7
16 + −
2
16× 𝑙𝑜𝑔2
2
16 + −
2
16× 𝑙𝑜𝑔2
2
16
= −0.4375 × −0.359 + − 0.125 × −0.903 + − 0.125 × −0.903
= 0.1570625 + 0.112875 + 0.112875
= 0.3828125
Entropy FG%:
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 (𝑗𝑒𝑙𝑒𝑘) = − 3
10× 𝑙𝑜𝑔2
3
10 + −
5
10× 𝑙𝑜𝑔2
5
10 + −
2
10× 𝑙𝑜𝑔2
2
10
21
= −0.3 𝑥 − 0.522 + −0.5𝑥 − 0.301 + (−0.2 𝑥 − 0.698)
= 0.1566 + 0.1505 + 0.1396
= 0.4467
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑠𝑒𝑑𝑎𝑛𝑔 = − 2
6× 𝑙𝑜𝑔2
2
6 + −
4
6× 𝑙𝑜𝑔2
4
6
= (- 0.33 x -0.477) + −0.66 𝑥 − 0.176
= 0.15741 + 0.11616
= 0.27257
Entropy FT%:
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑗𝑒𝑙𝑒𝑘 = − 1
3× 𝑙𝑜𝑔2
1
3 + −
2
3× 𝑙𝑜𝑔2
2
3
= (- 0.33 x -0.477) + −0.66 𝑥 − 0.176
= 0.15741 + 0.11616
= 0.27257
𝐸𝑛𝑡𝑟𝑜𝑝𝑦 𝑏𝑎𝑔𝑢𝑠 = − 5
13× 𝑙𝑜𝑔2
5
13 + −
6
13× 𝑙𝑜𝑔2
6
13 + −
2
13× 𝑙𝑜𝑔2
2
13
= −0.384 × −0.414 + −0.461 × −0.335 + −0.153 × −0.812
= 0.158976 + 0.154435 + 0.124236
= 0.437647
Information Gain:
𝐺𝑎𝑖𝑛 𝑗𝑒𝑙𝑒𝑘 − 𝐹𝐺% = 0.3828125 − 10
16× 0.4467 +
6
16× 0.27257
= 0.3828125 − 0.2791875 + 0.10221375
= 0.3828125 − 0.38140125
= 0.00141125
𝐺𝑎𝑖𝑛 𝑗𝑒𝑙𝑒𝑘 − 𝐹𝑇% = 0.3828125 − 3
16× 0.27257 +
13
16× 0.437647
22
= 0.3828125 − 0.01171875 + 0.3555881875
= 0.3828125 − 0.36721875
= 0.01559375
Syarat menjadi akar adalah memiliki information gain yang paling besar. Karena
information gain FT% adalah yang terbesar maka FT% sebagai akar
Gambar 2.3 Tree Node 2
?
FT%
Bagus
Sedang Jelek
? ?
3P%
Center Foward
Bagus
Sedang Jelek
23
Jumlah Kasus Guard Forward Center
3P% - Jelek
FT%- Jelek
7 3 4 0
FG%
Jelek 4 0 4 0
Sedang 3 3 0 0
Bagus 0 0 0 0
3P% - Jelek
FT%- Bagus
8 5 0 3
FG%
Jelek 5 5 0 0
Sedang 3 0 0 3
Bagus 0 0 0 0
Tabel 2.5 Data Pengelompokan Statistik Pemain node 3
Dari tabel 2.5, terlihat bahwa atribut dari FG% telah menuju ke satu klasifikasi
maka tidak perlu dilakukan perhitungan lagi. Dan dapat langsung dibuat tree-nya.
24
Gambar 2.4 Tree Node 3
3P%
Center Foward
Bagus
Sedang Jelek
Foward
FT%
Bagus
Jelek
FG% FG%
Sedang Jelek
Guard Guard
Center
Sedang
Jelek
25
2.4 Model Evaluasi 5 Cross Validation
Tingkat akurasi sebuah sistem klasifikasi dapat diukur dengan metode
5 cross validation yang membagi data statistik menjadi 5 bagian. Yang
kemudian secara bergantian dijadikan training dan testing dalam lima langkah
pengujian saling silang.
dimisalkan terdapat n buah data masukan untuk diklasifikasi, maka
tiap kelompok memiliki n/5anggota. Diberi nilai n=500 data, sehingga
pembagiannya iyalah:
Kelompok 1: data statistik ke 1-100
Kelompok 2: data statistik ke 101-200
Kelompok 3: data statistik ke 201-300
Kelompok 4: data statistik ke 301-400
Kelompok 5: data statistik ke 401-500
Gambar 2.5 Pembagian data statistic pemain ke dalam 5 kelompok data
Data masukan dipisah untuk memastikan tidak ada data yang sama,
Pemrosesan dengan data yang sama dapat terjadi ketika data masukan sangat
banyak. Jika data yang sama diproses dalam training dan testing, maka nilai
1 2 3 4 5 1 2 3 4
26
1 3 4 5 2
Training Testing
1 2 3 4 5
Training Testing
validasi terhapat evaluasi akan berkurang, walaupun nilai akurasi akan
meningkat.
Gambaran langkah evaluasi dengan metode 5 cross validation dapat
dilihat dalam gambar 2.5. Masing-masing mewakili satu kelompok data. Tiap
satu kelompok data akan bergantian menjadi training dan testing.
Pengujian pertama:
Gambar 2.6 Metode Evaluasi 5 Cross Validation pengujian 1
Pengujian kedua:
Gambar 2.7 Metode Evaluasi 5 Cross Validation pengujian 2
27
1 2 3 5 4
Training Testing
1 2 4 5 3
Training Testing
Pengujian ketiga:
Gambar 2.8 Metode Evaluasi 5 Cross Validation pengujian 3
Pengujian keempat:
Gambar 2.9 Metode Evaluasi 5 Cross Validation pengujian 4
28
5 2 3 4 1
Training Testing
Pengujian lima:
Gambar 2.10 Metode Evaluasi 5 Cross Validation Pengujian 5
28
BAB III
ANALISA DAN PERANCANGAN
3.1 Analisa Sistem Secara Umum
Sistem ini berfungsi sebagai alat bantu untuk menentukan posisi pemain
basket dengan tepat. Gambaran umum sistem dapat dilihat dalam gambar 3.1. Sistem
klasifikasi pemain basket NBA menggunakan algoritma decision tree dan
menggunakan teknik decision tree C 4.5. Data pemain akan melalui pre-porcessing
agar dapat diolah dengan decision tree. Dalam pre-processing mengubah data
numerik menjadi data nominal. Dalam pre-processing akan terjadi proses
pengelompokan. Kemudian data akan masuk dalam proses training dan testing dan
pada akhirnya akan mendapatkan output berupa posisi pemain yang tepat.
Gambar 3.1 Alur sistem klasifikasi pemain secara umum
Data Training
Pembuatan
Pohon dengan
algoritma C 4.5
Pembuatan
Keputusan
Data
Tree
Data Testing
END
29
3.1.1 Analisa Fase Pre-Prosesing
Sebelum data diproses dengan decision tree, data harus mengalami pre-
processing. Dalam pre-processing data yang bernilai numerik akan diubah menjadi
data nominal dengan cara pengelompokan. Pengelompokan data dilakukan dengan
memasukan data dalam range. Alur pre-processing terlihat pada gambar 3.2.
Gambar 3.2 alur pre-processing
Pengelompokan data dilakukan dengan memasukan data ke dalam range
tertentu, seperti terlihat pada table dibawah ini:
Nama Atribut Data Satuan Klasifikasi
FG%
< 0.4 % Jelek
0.4-0.7 % Sedang
> 0.7 % Bagus
3P%
< 0.4 % Jelek
0.4-0.7 % Sedang
> 0.7 % Bagus
FT%
< 0.4 % Jelek
0.4-0.7 % Sedang
> 0.7 % Bagus
Ofensive Rebound < 1.4 % Jelek
1.4-2.9 % Sedang
Pengelompokan Mulai Selesai Data
Awal
Data
Klasifikasi
30
>2.9 % Bagus
Nama Atribut Data % Klasifikasi
Defensive Rebound
< 3.3 % Jelek
3.3-6.5 % Sedang
> 6.5 % Bagus
Total Rebound
< 4.6 % Jelek
4.6-9.2 % Sedang
> 9.2 % Bagus
APG
< 3.7 % Jelek
3.7-7.3 % Sedang
> 7.3 % Bagus
SPG
< 1.0 % Jelek
1-2 % Sedang
> 2.0 % Bagus
BPG
< 1.0 % Jelek
1-2 % Sedang
> 2.0 % Bagus
TO
< 1.3 % Bagus
1.3-2.6 % Sedang
> 2.6 % Jelek
PF
< 1.3 % Bagus
1.3-2.6 % Sedang
> 2.6 % Jelek
PPG
< 10 % Jelek
10-20 % Sedang
> 20 % Bagus
Tinggi Badan < 1.93 Cm Jelek
31
1.93 - 2.11 Cm Sedang
> 2.11 Cm Bagus
Berat Badan
< 98 Kg Jelek
98-122 Kg Sedang
>122 Kg Bagus
Tabel 3.1 Pengelompokan Data Statistik Pemain
3.2 Analisa Algoritma C 4.5
Algoritma C 4.5 merupakan pengembangan dari ID3
(Larose, 2005). Pengembangan yang dilakukan pada C4.5 adalah bisa
mengatasi missing data, bisa mengatasi data continue, pruning dan
aturan. Secara umum algoritma C 4.5 untuk membangun pohon
keputusan adalah sebagai berikut:
1) Pilih atribut sebagai root
2) Buat cabang untuk masing-masing nilai
3) Bagi kasus dalam cabang
4) Ulangi proses untuk masing-masing cabang sampai semua
kasus pada cabang memiliki kelas yang sama.
Dalam memilih atribut untuk memecah obyek dalam
beberapa kelas harus dipilih atibut yang menghasilkan information
gain paling besar.
32
Gambar 3.3 Algoritma Decision Tree C 4.5
Ambil N atribut
END
START
Apakah
N>1?
Root = GAIN max
Uji N-1 atribut
YES
NO
Hitung GAIN dari
masing-masing atribut
33
3.3 Use Case
3.3.1 Diagram Use Case
Create Tree
Personal Klasifikasi
Setting Atribut
Group Klasifikasi
Gambar 3.5 Use Case
34
Tabel Use Case
No Nama Use Case Deskripsi use case Aktor
1 Create Tree Use case ini menggambarkan proses
memasukkan data training ke
sistem. Data training digunakan
untuk membuat Tree.
User
2 Personal Klasifkasi Use case ini menggambarkan proses
untuk memasukkan data tunggal
testing ke sistem dan melakukan
pelabelan.
User
3 Group Klasifkasi Use case ini menggambarkan proses
untuk memasukkan banyak data
testing ke sistem dan melakukan
pelabelan.
User
4 Setting Atribut Use case ini menggambarkan proses
untuk menge-set ranges dari atribut-
atribut yang digunakan.
User
Tabel 3.2 Use Case
3.3.2 Narasi Use case
Setiap usecase pada bagian sebelumnya akan dirinci dalam sebuah narasi
yang merupakan deskripsi tekstual dari kejadian bisnis dan bagaimana pengguna
berinteraksi dengan sistem untuk menyelesaikan tugas tersebut. Untuk lebih jelas
mengenai tahap ini dapat dilhat dilampiran 1.
3.3.3 Activity Diagram
Activity Diagram merupakan diagram yang menjelaskan aktivitas user dengan
program. Untuk lebih jelas mengenai tahap ini dapat dilhat dilampiran 2.
35
3.4 Model Analisis
Model analisis adalah salah satu proses untuk menterjemahkan skenario
usecase menjadi kelas analisis. Dalam kelas analisis terdapat tiga jenis, yakni
form/bonery, controller dan entitas. Bentuk model analisis merupakan kelas analisis,
untuk detailnya lihat lampiran 3 dan 4.
3.4.1 Relasi Use Case
Pada tahap ini, analisis kelas dilakukan setiap use case. Setiap use
case dicari kelas analisis sehingga kebutuhan kelas dapat ditentukan. Hasil
analisis kelas dapat dilihat pada lampiran 3.
3.4.2 Diagram Kelas Analisis Keseluruhan
Setelah melalui proses relasi use case, kemudian akan dibuat suatu
diagram kolaborasi dari seluruh use case. Diagram tersebut dapat dilihat pada
lampiran 4.
3.5 Model Desain
Tahap berikutnya dalam pengembangan perangkat lunak ini adalah dengan
membuat model desain. Pemodelan desain ini bertujuan untuk menghasilkan suatu
model atau representasi dari entitas yang kemudian akan dibangun. Bentuk model
desain adalah diagram kelas, dapat dilihat di lampiran 5 dan 6.
3.5.1 Atribut dan Method
Bagian ini akan menjelaskan lebih detail mengenai atribut dan method
dari kelas desain. Detail tentang atribut da method kelas desain dapat dilihat
pada lampiran 5.
36
3.5.2 Rancangan Interface
Bagian ini akan menjelaskan tentang user interface yang akan
diimplementasikan pada program. Rancangan user interface, dapat dilihat
pada lampiran 6.
3.6 Metode Evaluasi Tree
Langkah evaluasi merupakan langkah pengujian kebenaran tree.
Dengan asumsi, klasifikasi sesuai dengan tabel 3.1. Cara pengujiannya menggunakan
cara sebagai berikut:
1. Penentuan 5 kelompok data.
Terdapat 511 data pemain NBA yang akan dibagi menjadi 5 kelompok. Dan
diberi label 1, 2, 3, 4, 5.
Gambar 3.6 Pengelompokan Data Untuk Proses Evaluasi
2. Pembentukan Tree secara manual.
Dari pengelompokkan 5 data pemain, maka dengan menggunakan masing-
masing data. Bentuk tree dengan cara menghitung dengan decision tree C.4.5.
sehingga terbentuk 5 tree dari 5 kelompok data.
5 1 2 3 4
37
3. Pembentukan Tree dengan program.
Bentuk pohon dari 5 kelompok data yang sudah dibagi dengan menggunakan
program yang telah dibuat. Sehingga akan terbentuk 5 tree dari 5 kelompok
data.
4. Pembandingan Hasil.
Membandingkan tree yang telah dihitung secara manual dengan tree hasil
bentukan program.
3.7 Metode Evaluasi 5 Cross Validation
Langkah evaluasi merupakan langkah pengujian akurasi klasifikasi
posisi pemain. Langkah pengujian ini mengunakan 5 cross validation. Cara
pengujiannya menggunakan cara sebagai berikut:
1. Penentuan 5 kelompok data.
Terdapat 511 data pemain NBA yang akan dibagi menjadi 5 kelompok. Dan
diberi label 1, 2, 3, 4, 5.
Gambar 3.7 Pengelompokan Data Untuk Proses Evaluasi
5 1 2 3 4
38
2. Pengujian Akurasi
Pengujian akurasi dilakukan dengan 2 cara, yaitu langkah training dan testing.
Langkah training dikenali untuk membentuk tree. Langkah testing digunakan
untuk mengklasifikasikan posisi. Dalam satu kali pengujian, terdapat 5 set
training dan testing yang masing-masing menghasilkan 100 hasil posisi
pemain.
3. Penghitungan Akurasi
Angka akurasi dapat dihitung dengan cara menghitung jumlah posisi yang
sesuai. Penghitungan ini dilakukan dengan cara membandingkan data hasil
testing dengan data testing. Kemudian dibagi dengan jumlah data penguji
dikali 100%.
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = 𝐷𝑎𝑡𝑎 𝑦𝑎𝑛𝑔 𝑠𝑒𝑠𝑢𝑎𝑖 𝑑𝑎𝑡𝑎 𝑡𝑒𝑠𝑡𝑖𝑛𝑔
𝐽𝑢𝑚𝑙𝑎 ℎ 𝑑𝑎𝑡𝑎 𝑡𝑒𝑠𝑡𝑖𝑛𝑔 X 100 %……….Rumus 3
40
BAB IV
IMPLEMENTASI DAN ANALISIS SISTEM
Bab ini berisi tentang implementasi sistem yang dibuat berdasarkan analisa
dan perancangan yang telah dibuat pada tahap sebelumnya. Bab ini juga berisi
pengujian dan analisa sistem.
4.1 Implementasi
4.1. 1. Implementasi Data
Pada sistem ini, data input yang digunakan adalah data statistik
pemain NBA pada musim kompetisi 2008-2009. Data dari website www.nba.com di-
copy kemudian dipindahkan ke dalam exel dengan format .csv. Berdasarkan table 3.1,
data ini dikonversi dari data numerik ke data nominal agar dapat digunakan untuk
sistem.
4.1. 2. Implementasi File
Dari kelas disain yang telah dibuat pada bab sebelumnya, telah
diimplementasikan. Berikut ini adalah bentuk implementasi dari desain kelas menjadi
implementasi file yang digunakan sistem yang telah dibuat.
UseCase Kelas Desain Implementasi File Jenis
Create Tree homeForm HomeForm.java Interface
CreateTreeForm createTreeForm.java Interface
Player Player.java Entities
Tools Tools.java Entities
Tree Tree.java Entities
enumData enumData.java Entities
41
enumKategori enumKategori Entities
enumPosisi enumPosisi Entities
Personal
Klasifikasi
HomeForm HomeForm.java Interface
personalKlasifikasiForm personalKlasifikasiForm.java Interface
Tree Tree.java Entities
enumData enumData.java Entities
groupKlasifikasi homeForm HomeForm.java Interface
groupKlasifikasiForm groupklasifikasiForm.java Interface
playerK playerK.java Entities
Tools Tools.java Entities
Tree Tree.java Entities
enumData enumData Entities
Setting Atribut homeForm HomeForm.java Interface
SettingForm settingForm.java Interface
Tools Tools.java Entities
Tabel 5.1. Implementasi File
4.1. 3. Implementasi Antar Muka
Setelah program berhasil dibuat, maka akan ditampilkan antar muka
dari program tersebut. Gambar antar muka dari program yang telah dibuat dapat
dilihat di lampiran 7.
4.2 Pengujian Hasil Tree
4.2. 1. Pengelompokan Data
Pengelompokaan data menjadi 5 kelompok. Jumlah data adalah 511
data. Maka dari 511 tersebut akan dibagi menjadi 5 bagian yang hampir
sama, seperti terlihat pada gambar:
42
Gambar 4.1 Pengelompokan Data Untuk Proses Evaluasi
Dari 5 kelompok data yang sudah dibagi, masing-masing kelompok
dibuat tree. Pembuatan tree akan dilakukan dengan 2 cara:
1. Dengan menghitung manual.
5 kelompok data akan dihitung secara manual dengan mengunakan
rumus entropy (rumus 2) dan gain (rumus 1). Sehingga dapat
diperoleh sebuah tree dari masing-masing kelompok data.
2. Dengan menggunakan program.
5 kelompok data yang sudah dibagi, akan diinputkan ke program
klasifikasi pemain basket sehingga juga akan terbentuk tree dari
masing-masing kelompok data.
409-
511
E
1-
102
A
103-
204
B
205-
306
C
307-
408
D
43
4.2.2 Hasil Tree Dari Perhitungan Manual:
TREE 1
BERAT
TINGGIGUARDJELEK
SEDANG JELEK TO
JELEK GUARD
SEDANG GUARD
BAGUS GUARD
TOTSEDANG
JELEK GUARD
SEDANG GUARD
BAGUS GUARD
BAGUS FOWARD
BAGUS
DEF JELEK FOWARD
SEDANG
OFF
JELEK FOWARD
SEDANG
BAGUS FOWARD
BPG
JELEK CENTER
SEDANG CENTER
BAGUS CENTER
BAGUS
BPG
JELEK FOWARD
SEDANG
BAGUS CENTER
TO
JELEK CENTER
SEDANG
BAGUS FOWARD
OFF
JELEK
SEDANG
BAGUS FOWARD
FOWARD
FOWARD
Gambar 4.2. Tree Manual 1
44
45
TREE 2
BERAT
TINGGIGUAR
DJELEK
SEDANG JELEK OFF
JELEK
SEDANG
BAGUSGUAR
D
TOTSEDANG
JELEK
SEDANG
BAGUS
BAGUS
FOWARD
BAGUS
DEF
JELEK
SEDANG
OFF
JELEKFOWAR
D
SEDANG
BAGUSFOWAR
D
BPG
JELEKCENTE
R
SEDANG
BAGUSCENTE
R
BAGUS
BPG
JELEKFOWAR
D
SEDANG
BAGUSCENTE
R
TO
JELEKCENTE
R
SEDANG
BAGUSFOWAR
D
OFF
JELEK
SEDANG
BAGUSFOWAR
D
FOWARD
FOWARD
FOWARD
PPG
JELEKGUAR
D
SEDANG
BAGUSGUAR
D
GUARD
FOWARD
FOWARD
FT
JELEK
SEDANG
BAGUS
GUARD
FOWARD
FOWARD
3P
JELEK
SEDANG
BAGUS
GUARD
FOWARD
PF
JELEK
SEDANG
BAGUS
CENTER
CENTER
FG
JELEK
SEDANG
BAGUS
CENTER
CENTER
CENTER
FG
JELEK
SEDANG
BAGUS
CENTER
CENTER
CENTER
Gambar 4.3. Tree Manual 2
46
TREE 3
BERAT
TINGGI
GUARD
JELEK
SEDANG
JELEK TO
JELEK
SEDANG
BAGUSGUAR
D
TOTSEDANG
JELEKSEDANG
BAGUS
BAGUS
FOWARD
BAGUS
DEF JELEK
SEDANG
OFF
JELEKFOWAR
D
SEDANG
BAGUSFOWAR
D
BPG
JELEKCENTE
R
SEDANG
BAGUSCENTE
R
BAGUS
BPG
JELEKFOWAR
D
SEDANG
BAGUSCENTE
R
TO
JELEKCENTE
R
SEDANG
BAGUSFOWAR
D
OFF
JELEK
SEDANG
BAGUSFOWAR
D
FOWARD
FOWARD
GUARD
GUARD
FOWARD
FT
JELEK
SEDANG
BAGUS
CENTER
FOWARD
FOWARD
PF
JELEK
SEDANG
BAGUS
CENTER
FG
JELEK
SEDANG
BAGUS
CENTER
CENTER
FT
JELEK
SEDANG
BAGUS
CENTER
FOWARD
CENTER
CENTER
TO
JELEK
SEDANG
BAGUS
FOWARD
FOWARD
BPG
JELEK
SEDANG
BAGUS
FOWARD
FOWARD
FOWARD
CENTER
Gambar 4.4. Tree Manual 3
47
TREE 4
BERAT
TINGGI
GUARD
JELEK
SEDANG
JELEK
OFF
JELEK
SEDANG
BAGUSGUAR
D
TOT
SEDANG JELEK
SEDANG
BAGUS
BAGUS
FOWARD
BAGUS
DEF
JELEK
SEDANG
BPG
JELEKFOWAR
D
SEDANG
BAGUS CENTER
OFF
JELEKCENTE
R
SEDANG
BAGUSFOWA
RD
BAGUS
BPG
JELEK CENTER
SEDANG
BAGUSFOWAR
D
FOWARD
FOWARD
FOWARD
FT
JELEK
SEDANG
BAGUS
CENTER
FOWARD
FOWARD
3P
JELEK
SEDANG
BAGUS
CENTER
FG
JELEK
SEDANG
BAGUS
CENTER
CENTER
PF
JELEK
SEDANG
BAGUS
CENTER
CENTER
CENTER
FOWARD
PPG
JELEK
SEDANG
BAGUS
GUARD
GUARD
GUARD
FOWARD
FT
JELEK
SEDANG
BAGUS
CENTER
FOWARD
CENTER
Gambar 4.5. Tree Manual 4
48
TREE 5
BERAT
TINGGI
GUARD
JELEK
SEDANG
JELEK TO
JELEK
SEDANG
BAGUSGUAR
D
FTSEDANG
JELEK
SEDANG
BAGUS
BAGUS
FOWARD
BAGUS
DEF
JELEK
SEDANG BPG
JELEKFOWAR
D
SEDANG
BAGUS CENTER
FOWARD
BAGUSFOWAR
D
FOWARD
FOWARD
TO
JELEK
SEDANG
BAGUS
GUARD
FOWARD
GUARD
3P
JELEK
SEDANG
BAGUS
CENTER
FT
JELEK
SEDANG
BAGUS
CENTER
CENTER
FG
JELEK
SEDANG
BAGUS
CENTER
CENTER
GUARD
FOWARD
FOWARD
3P
JELEK
SEDANG
BAGUS
FOWARD
FOWARD
CENTER
Gambar 4.6. Tree Manual 5
49
4.2.3. Hasil Tree Dari Program:
TREE 1:
Gambar 4.7. Tree Program 1
50
TREE 2:
Gambar 4.8. Tree Program 2
51
TREE 3:
Gambar 4.9. Tree Program 3
52
TREE 4:
Gambar 4.10. Tree Program 4
53
TREE 5:
Gambar 4.11. Tree Program 5
54
4.2.4. Perbandingan Hasil Tree.
Setelah melakukan proses pembentukan tree, baik secara
manual maupun secara program. Maka diperoleh bentuk tree seperti
diatas. Untuk mengetahui apakah program telah berjalan sesuai dengan
teori. Dilakukan perbandingan tree manual dengan tree program.
Tabel 5.2. Perbandingan Tree
Dengan melihat hasil perbandingan, maka dapat disimpulkan bahwa
program telah berjalan sesuai dengan teori.
4.2.5. Analisa Tree
Melihat dari 10 tree yang terbentuk, dapat disimpulkan bahwa
semua root yang terpilih adalah tinggi. Terpilihnya tinggi ini cukup
sesuai dengan olah raga basket, dimana tinggi badan sangat
menentukan dalam pemilihan posisi pemain.
TREE MANUAL TREE PROGRAM HASIL
Tree 1 Tree 1 Sama
Tree 2 Tree 2 Sama
Tree 3 Tree 3 Sama
Tree 4 Tree 4 Sama
Tree 5 Tree 5 Sama
55
4.3. 5 Cross Validation
4.3.1. Penentuan 5 kelompok data.
Pengelompokaan data menjadi 5 kelompok. Jumlah data
adalah 511 data. Maka dari 511 tersebut akan dibagi menjadi 5 bagian
yang hampir sama, seperti terlihat pada gambar 4.12:
Gambar 4.12 Pengelompokan Data Untuk Proses Evaluasi
4.3.2. Pengujian dan Perhitungan Akurasi
Setelah melakukan proses pengelompokaan data menjadi 5 kelompok,
maka dilakukan pengujian dan perhitungan akurasi. Untuk proses pengujian
dilakukan dengan 5 cros validation seperti pada bab 3. Sedangkan proses
perhitungan dilakukan dengan rumus 3. Hasil pengujian dan perhitungan
akurasi dapat dilihat pada tabel 5.3.
409
-
511
E
1-
102
A
103
-
204
B
205
-
306
C
307
-
408
D
56
Percobaan Data
Training
Data
Testing
Total
Data
Training
Total
Data
Testing
Data
tidak
sesuai
Data
sesuai Akurasi
1 B, C, D,
E A 409 102 14 88 86.2745098
2 A, C, D,
E B 409 102 14 88 86.2745098
3 A, B, D,
E C 409 102 23 79 77.4509804
4 A, B, C,
E D 409 102 13 89 87.254902
5 A, B, C,
D E 408 103 26 76 73.7864078
Rata-rata Akurasi 82.2082619
Tabel 5.3. Akurasi Program
Dari hasil pengujian akurasi seperti terlihat pada tabel 5.3, tree terjelek adalah
tree 5 sedangkan tree terbaik adalah tree 4. Tree 4 mempunyai tinggi root.
Pada level 1 terdapat guard, berat dan defensive rebount (pada cabang jelek
sudah didapat daunnya (posisi)yaitu guard)dan pada level 2 terdapat ofensive
rebount, total rebount, 3 point, block per games, dimana dari masing-masing
node dibagi menjadi 3 cabang, yaitu: jelek, sedang dan tinggi. Untuk lebih
jelasnya dapat dilihat dilampiran 8.
56
BAB V
KESIMPULAN DAN SARAN
5. 1 Kesimpulan
Setelah sistem ini dibuat maka diperoleh beberapa kesimpulan:
1. Penerapan algoritma decision tree untuk menganalisis statistik
pemain NBA agar dapat mengklasifikasi posisi pemain dapat
diimplementasikan dengan baik pada aplikasi.
2. Dengan asumsi, klasifikasi kategori seperti pada tabel 3.2. Hasil
pengujian akurasi program dengan menggunakan 5 cross validation
cukup baik yaitu 86, 3%, 86,3%, 77,5%, 87,8%, 73,8%. (rata-rata
akurasi 82,2%)
3. Berdasarkan dari akurasi, tree terbaik adalah tree 4 sedangkan tree
terjelek adalah tree 5. Tree yang akan digunakan untuk klasifikasi
posisi pemain adalah tree 4 (gambar 4.5 atau gambar 4.10).
4. Dari 5 tree yang terbentuk, semua root yang terpilih adalah tinggi.
Sehingga dapat disimpulkan bahwa atribut tinggi sangat berpengaruh
pada pemilihan posisi pemain basket.
5. Berdasarkan hasil pengujian akurasi, aplikasi ini cukup baik untuk
membantu user dalam mengklasifikasi posisi pemain.
57
5.2 Saran
Dari sistem yang dibuat masih diperlukan beberapa saran antara lain:
1. Menambah jumlah variabel, mungkin dapat meningkatkan nilai
akurasi.
2. User dapat memilik variabel sediri dalam memprediksi.
3. Akan lebih baik jika penentuan batas variabel menggunakan
algoritma tertentu.
4. Program yang dibuat berbasis web sehingga dapat digunakan dimana
saja.
58
DAFTAR PUSTAKA
Santosa, Budi, 2007, Teknik Pemanfaatan Data Mining untuk Keperluan Bisnis,
Graha Ilmu, Yogyakarta, 88-95.
Osmar R Zaiane, 1999, Word taxonomy for on-line visual Asset management asest
management and mining. IEEE Computer Society. USA.
Jiawei Han, Micheline Kamber, 2001, Data mining Concepts dan Techniques,
Morgan Kaufman,San Fransisco.
Daniel T Larose, 2005, discovery knowledge in data: an introdution to datamining,
wiley-interscience.
luthfi, Emha Taufiq, Kusini, 2009, Algoritma Data Mining, Andi, Yogyakarta, 13-22
Irwanto, S.Kom, MM, Djon, 2007, Membangun Obect Oriented Software Dengan
Java Dan Object Data Base, Gramedia Group, Jakarta
Kusnawi, 2007, Pengantar Solusi Data Mining, AMIKOM, Jogjakarta
Hernawan, Benny, 2004, Menguasai Java 2 & Object Oriented Programing, Andi,
Yogyakarta
Kadir, A., 2004, Dasar Pemograman Java 2, Andi, Yogyakarta.
_______,(2009), Istilah-istilah dalam basket.[online].(www.
IndonesianBasketball.com diakses pada tanggal 7 november 2009).
59
LAMPIRAN 1.
NARASI USECASE
Use Case Narasi Use Case
Create Tree Lampiran 1.1
Personal Klasifikasi Lampiran 1.2
Group Klasifikasi Lampiran 1.3
Setting Atribut Lampiran 1.4
60
1.1 Narasi Use case Create Model Tree
Penulis: Hieronymus Dimas Febrianto
Tangal: 26 November
2009 Versi: 1.0
Nama Use-case: Create Tree Jenis Use-Case
Kebutuhan Operasional:
ID Use-case:
Prioritas: Tinggi
Sumber: -
Pelaku Bisnis Utama: User
Pelaku Lain yang
Terlibat
-
Pihak Lain yang
Berkepentingan
-
Deskripsi: Use case ini menggambarkan proses memasukkan data training
ke sistem. Data training digunakan untuk membuat Tree.
Kondisi Awal: Admin telah masuk ke halaman Make Tree
Pemicu: Use case ini digunakan apabila User ingin memasukkan data
taining ke dalam sistem dan membuat model.
Urutan Aktifitas
Normal :
Actor Action System Response
Langkah 1:
User menekan tombol “CREATE TREE”
Langkah 3:
User menekan tombol
“BROWSE”
Langkah 5: User memilih file data yang
akan dipilih, kemudian user
menekan tombol ”OPEN”
Langkah 2: Sistem membuka halaman
CREATE TREE
Langkah 4:
Sistem membuka halaman
BROWSE (file selector)
Langkah 6:
Sistem membuka file data yang
dipilih.
Langkah 7: Sistem
menampilkan pesan bahwa data
telah berhasil dimasukkan.
61
Langkah 8: User menekan tombol
“PREPROSESING”
Langkah 11:
User menekan tombol “CREATE TREE”
Langkah 9: Sistem mengubah data numeric
menjadi data nominal.
Langkah 10: Sistem menampilkan
menampilkan halaman CREATE
TREE.
Langkah 12:
Sistem membuat model tree.
Langkah 13: Sistem menampilkan pesan
bahwa tree telah terbentuk.
Aktifitas Alternatif : Langkah Alternatif 1: Untuk batal atau kembali ke halaman home, user dapat menekan
tombol “BACK”
Langkah Alternatif 13:
User menekan tombol “VIEW TREE” untuk menampilkan menampilkan halaman VIEW TREE..
Kesimpulan: Dalam proses ini user dapat melakukan proses input data training
dan membuat model tree.
Kondisi Akhir: User berhasil memasukkan data training dan model tree telah dibuat.
Prosedur Bisnis: User harus memilih file data input yang benar.
Batasan Implementasi
dan Spesifikasi
Data yang diinputkan harus sesuai format.
1.2 Narasi Use case Personal Klasifikasi
Penulis: Hieronymus Dimas Febrianto
Tangal: 26 November
2009
Versi: 1.0
Nama Use-case: Personal Klasifikasi Jenis Use-Case
Kebutuhan Operasional:
ID Use-case:
62
Prioritas: Tinggi
Sumber: -
Pelaku Bisnis Utama: User
Pelaku Lain yang
Terlibat
-
Pihak Lain yang
Berkepentingan
-
Deskripsi: Use case ini menggambarkan proses untuk memasukkan data
testing ke sistem dan melakukan pelabelan.
Kondisi Awal: - User telah membentuk tree.
- User telah masuk ke halaman Personal Klasifikasi
Pemicu: Use case ini digunakan apabila user ingin memasukkan data
testing ke dalam sistem dan klasifikasi.
Urutan Aktifitas
Normal :
Actor Action System Response
Langkah 1:
User menekan tombol “PERSONAL
KLASIFIKASI”
Langkah 3:
User menekan tombol “COMBO BOX” yang aktif..
Langkah 4: User menekan tombol
“PROSES”
Langkah 6:
User kembali melakukan langkah 3.
Langkah 2: Sistem membuka halaman
PERSONAL KLASIFIKASI
Langkah 5:
Sistem mengaktifkan tombol
combo box selanjutnya.
Langkah 7: Sistem melakukan proses
pelabelan posisi pemain.
Aktifitas Alternatif : Langkah Alternatif 1:
Untuk batal atau kembali ke halaman home, user dapat menekan tombol “BACK”
Langkah Alternatif 10:
User menekan tombol “VIEW TREE” untuk menampilkan menampilkan halaman VIEW TREE.
Kesimpulan: Semua pengguna berhasil memasukkan data testing dan telah
63
dilakukan klasifikasi posisi pemain..
Kondisi Akhir: User berhasil memasukkan data testing dan klasifikasi posisi
pemain.
Prosedur Bisnis: User harus mengisi semua data input yang benar.
Batasan Implementasi
dan Spesifikasi
Data yang diinputkan harus sesuai format.
1.3 Narasi Use case Group Klasifikasi
Penulis: Hieronymus Dimas Febrianto
Tangal: 26 November
2009 Versi: 1.0
Nama Use-case: Group Klasifikasi Jenis Use-Case
Kebutuhan Operasional:
ID Use-case:
Prioritas: Tinggi
Sumber: -
Pelaku Bisnis Utama: User
Pelaku Lain yang
Terlibat
-
Pihak Lain yang
Berkepentingan
-
Deskripsi: Use case ini menggambarkan proses untuk memasukkan data
testing ke sistem dan melakukan pelabelan.
Kondisi Awal: - User telah membentuk tree.
- User telah masuk ke halaman Group Klasifikasi
Pemicu: Use case ini digunakan apabila user ingin memasukkan data
testing ke dalam sistem dan klasifikasi.
Urutan Aktifitas
Normal :
Actor Action System Response
Langkah 1:
User menekan tombol “GROUP KLASIFIKASI”
Langkah 3:
User menekan tombol “BROWSE”
Langkah 5:
Admin memilih file data
Langkah 2: Sistem membuka halaman GROUP KLASIFIKASI
Langkah 4:
Sistem membuka halaman
BROWSE
64
yang akan dipilih, kemudian user menekan tombol
”OPEN”
Langkah 8: User menekan tombol “PROSES”
Langkah 6: Sistem membuka file data yang
dipilih.
Langkah 7: Sistem
menampilkan pesan bahwa data
telah berhasil dimasukkan.
Langkah 9:
Sistem melakukan proses
pelabelan posisi pemain.
Aktifitas Alternatif : Langkah Alternatif 1: Untuk batal atau kembali ke halaman home, user dapat menekan
tombol “BACK”
Langkah Alternatif 10: User menekan tombol “VIEW TREE” untuk menampilkan
menampilkan halaman VIEW TREE.
Kesimpulan: Semua pengguna berhasil memasukkan data testing dan telah
dilakukan klasifikasi posisi pemain..
Kondisi Akhir: User berhasil memasukkan data testing dan klasifikasi posisi
pemain.
Prosedur Bisnis: User harus mengisi semua data input yang benar.
Batasan Implementasi
dan Spesifikasi
Data yang diinputkan harus sesuai format.
1.4 Narasi Use case Setting Atribut
Penulis: Hieronymus Dimas Febrianto
Tangal: 26 November
2009
Versi: 1.0
Nama Use-case: Set Ranges Atribut Jenis Use-Case
Kebutuhan Operasional:
ID Use-case:
Prioritas: Sedang
Sumber: -
Pelaku Bisnis Utama: User
Pelaku Lain yang
Terlibat
-
65
Pihak Lain yang
Berkepentingan
-
Deskripsi: Use case ini menggambarkan proses untuk men-set ulang ranges
atribut.
Kondisi Awal: User telah masuk ke halaman Setting
Pemicu: Use case ini digunakan apabila user ingin mengubah ranges
atibut.
Urutan Aktifitas
Normal :
Actor Action System Response
Langkah 1:
User menekan tombol
“SETTING”
Langkah 3: User memasukan/ mengubah
nilai ranges atribut baru.
Langkah 5:
User menekan tombol “OK”
Langkah 2: Sistem membuka halaman
SETTING
Langkah 4:
Sistem mengganti nilai ranges
dari atribut yang diubah nilainya. Kemudian
menampilkannya.
Langkah 6:
Sistem menampilkan menampilkan halaman HOME
Aktifitas Alternatif : Langkah Alternatif 1:
Untuk batal atau kembali ke halaman home, user dapat menekan
tombol “BACK
Langkah Alternatif 5:
User dapat menekan tombol “DEFAULT” untuk mengembalikan
nilai ranges atribut ke dalam nilai yang telah ditentukan oleh sistem.
Kesimpulan: User berhasil mengubah nilai dari ranges atribut.
Kondisi Akhir: User berhasil mengubah nilai dari ranges atribut.
Prosedur Bisnis: User harus mengisi semua data input yang benar.
Batasan Implementasi
dan Spesifikasi
Data yang diinputkan harus sesuai format.
66
LAMPIRAN 2
ACTIVITY DIAGRAM
Use Case Activity Diagram
Create Tree Lampiran 2.1
Personal Klasifikasi Lampiran 2.2
Group Klasifikasi Lampiran 2.3
Setting Atribut Lampiran 2.4
67
2.1 Create Tree
User System
Klik Tombol Create Tree
Menampilkan halamanBROWSE (file selector)
Klik tombol Browse
Menampilkan dialog box, file telah diinputkan
Menampilkan halaman Create Tree
Klik file yang sesuai
Klik tombol open
Klik tombol PreprocessingMenampilkan dialog box, file telah
diproses
Klik tombol Create TreeMenampilkan dialog box, Tree sudah
terbentuk
Klik tombol Back
Klik tombol View Tree
Menampilkan Halaman Home
Menampilkan halaman View Tree
Gambar 2.1 Diagram Activity Create Tree
68
2.2 Personal Klasifikasi
User System
Klik Tombol Personal Klasifikasi
Menampilkan posisi pada jText
Klik tombol combo box yang sesuai
Menampilkan halaman Personal Klasifikasi
Menampilkan combo box selanjutnya
Klik tombol Proses
Gambar 2.2 Diagram Activity Personal Tree
69
2.3 Group Klasifikasi
User System
Klik Tombol Group Klasifikasi
Menampilkan halamanBROWSE (file selector)
Klik tombol Browse
Menampilkan dialog box, file telah diinputkan
Menampilkan halaman Group Klasifikasi
Klik file yang sesuai
Klik tombol open
Klik tombol Proces Menampilkan posisi pemain
Klik tombol Back
Klik tombol View Tree
Menampilkan Halaman Home
Menampilkan halaman View Tree
Gambar 2.3 Diagram Activity Group Klasifikasi
70
2.4 Setting
User System
Klik Tombol Setting
Klik tombol Spinner
Mengupdate table data kategori
Menampilkan halaman Setting
Klik tombol Save
Klik tombol DefaultMengpdate table data kategori
dengan nilai default
Klik tombol BackMenampilkan dialog box, Tree sudah
terbentuk
Gambar 2.4 Diagram Activity Setting
71
LAMPIRAN 3
MODEL ANALISIS
Use Case Sequence Diagram
Create Tree Lampiran 3.1
Personal Klasifikasi Lampiran 3.2
Group Klasifikasi Lampiran 3.3
Setting Atribut Lampiran 3.4
72
3.1 Sequence Create Tree
Kelas Analisis
No Nama Kelas Tipe Deskripsi
1 HomeForm
Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan form Home
2 CreateTreeForm Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan CreateTreFom.
3 Player Entity Kelas ini berfungsi untuk
membaca file dan menyimpan.
4 Tools Entity Kelas ini berfungsi untuk csv
reader menyimpan kategori,
konversi, hitung gain.
5 Tree Entity Kelas ini berfungsi untuk
menyimpan model tree Tabel 3.1 Kelas Analisis Create Tree
73
Halaman home Playerhalaman Create Tree TreeTools
view
Data pemain
1. Aktor menekantombol Group Klasifikasi
2. Aktor menekantombol Browse
4. Aktor menekantombol Create Tree
Menekan Browse
Menekan Create Tree
Menekan ProcesKonversi
hitung, Buat tree
data konversi
tree
ambil Data
enumData
ambil Data
data
enumPosisi enumKategori
ambil Posisi
ambil Kategori
3. Aktor menekantombol Preprocessing
posisi
kategori
menekan Create Tree
Simpan
Gambar 3.1 Sequence Create Tree
3.2 Sequence Personal Klasifikasi
74
Halaman home halaman Personal Klasifikasi Tree
view1. Aktor menekantombol Personal
Klasifikasi
2. Aktor menekantombol Combo Box
3. Aktor menekantombol Proces
Menekan combo Box
Menekan Personal Klasifikasi
Menekan ProcesKlasifikasi
Sistem Border
posisi
set data
model
enumData
panggil
kategori
Gambar 3.2 Sequence personal klasifikasi
No Nama Kelas Tipe Deskripsi
1 HomeForm
Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan form Home
2 PersonalKlasifikasiForm Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan
personalKlasifikasFormi
3 Tree Entity Kelas ini berfungsi untuk
menyimpan model tree
4 Enum Data Entity Kelas ini berfungsi untuk
menyimpan data kategori.
75
3.3 Sequence Group Klasifikasi
No Nama Kelas Tipe Deskripsi
1 HomeForm
Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan form Home
2 Group klasifikasForm Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan form group
klasifikasi
3 PlayerK Entity Kelas ini berfungsi untuk
membaca file dan
menyimpannya.
4 Tools Entity Kelas ini berfungsi untuk csv
reader menyimpan kategori,
konversi, hitung gain.
3 Tree Entity Kelas ini berfungsi untuk
menyimpan model tree
4 Enum Data Entity Kelas ini berfungsi untuk
menyimpan data kategori. Gambar 3.3 Sequence Group Klasifikasi
76
Halaman home Playerhalaman Group Klasifiaksi TreeTools
view
Data pemain
1. Aktor menekantombol Group Klasifikasi
2. Aktor menekantombol Browse
Menekan Browse
Menekan Group Klasifikasi
Menekan ProcesKonversi
Klasifiaksi
Sistem Border
data konversi
posisi
ambil Data
enumData
panggil
data
3. Aktor menekantombol Proces
Gambar 3.3 SequenceGroup Klasifikasi
3.4 Sequence Setting
No Nama Kelas Tipe Deskripsi
1 HomeForm
Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan form Home
2 SettingForm Interface /
Boundary
Kelas ini berfungsi untuk
menyediakan fungsi
penampilan form Setting
3 Tools Entity Kelas ini berfungsi untuk csv
reader menyimpan kategori,
konversi, hitung gain. Gambar 3.4 Sequence set Ranges Atribut
77
Halaman home halaman Setting Tools
view1. Aktor menekantombol Group Klasifikasi
2. Aktor mengisi TextField
3. Aktor menekantombol Save
Mengisi textField
Menekan Setting
Menekan Save
4. Aktor menekantombol Default
set data ()
get data ()
Menekan Defaultset data ()
get data ()
Sistem Border
Gambar 3.4 Sequence Set Ranges Atribut
78
LAMPIRAN 4
DIAGRAM KELAS
4.1 Diagram Kelas Keseluruhan
Create Tree Form
Personal Klasifikasi Form
Group Klasifikasi Form
Setting Form
Player
PlayerK
enumData
enumKategori
enumPosisi
Tools
Tree
Home Form
Gambar 4.1 diagram kelas keseluruhan
79
LAMPIRAN 5
ATRIBUT DAN METHOD
No Kelas Desain Jenis Lampiran
1 Player Entities Lampiran 5.1
2 PlayerK Entities Lampiran 5.2
3 Tree Entities Lampiran 5.3
4 enumData Entities Lampiran 5.4
5 enumKategori Entities Lampiran 5.5
6 enumPosisi Entities Lampiran 5.6
7 Tools Entities Lampiran 5.7
8 Home Form Interface Lampiran 5.8
9 Create Tree Form Interface Lampiran 5.9
10 personalKlasifikasiForm Interface Lampiran 5.10
11 groupKlasifikasiForm Interface Lampiran 5.11
12 SettingForm Interface Lampiran 5.12
80
5.1 Player
Atribud:
id_player: Integer
fieldGoal: double
threePoint: double
freeThrow: double
ofensiveRebount: double
defensifeRebount: double
totalRebount: double
assistPerGames: double
stealPerGames: double
blockPerGames: double
pointPerGames: double
turnOver: double
personalFoul: double
TINGGI: double
BERAT: double
POSISI: String
Method
A. executeFileToPlayer(file) {
input:
file
output:
players
algoritma:
a. if(!file.getName().endsWith (“csv”)
then
81
tampilkan " Format File tidak Sesuai”
return null;
end if
b. cari ←obejct String
c. cari= new Tools().readFile(file)
d. player[]←object Player
e. for 1=0 to rows.countTokens()
then
players[i] = new Player()
f. i←object int
g. 1=0
h. While (rows.hasMoreTokens())
Then
baris←object String
baris = rows.nextToken().replaceAll(",", " ");
columns←object StringTokenizer
columns = new StringTokenizer(baris);
j←object int
j = 0
if (columns.countTokens() != 16)
then
tampilkan "Jumlah Kolom tidak Sesuai"
return null
end if
while (columns.hasMoreTokens())
then
players[i].setId_player(Integer.parseInt(columns.nextToken()
players[i].setFieldGoal(Double.parseDouble(columns.nextToken()
players[i].setThreePoint(Double.parseDouble(columns.nextToken()
82
players[i].setFreeThrow(Double.parseDouble(columns.nextToken()
players[i].setOfensiveRebount(Double.parseDouble(columns.nextToken()
players[i].setDefensifeRebount(Double.parseDouble(columns.nextToken()
players[i].setTotalRebount(Double.parseDouble(columns.nextToken()
players[i].setAssistPerGames(Double.parseDouble(columns.nextToken()
players[i].setStealPerGames(Double.parseDouble(columns.nextToken()
players[i].setBlockPerGames(Double.parseDouble(columns.nextToken()
players[i].setPointPerGames(Double.parseDouble(columns.nextToken()
players[i].setTurnOver(Double.parseDouble(columns.nextToken()
players[i].setPersonalFoul(Double.parseDouble(columns.nextToke
n()
players[i].setTINGGI(Double.parseDouble(columns.nextToken()
players[i].setBERAT(Double.parseDouble(columns.nextToken()
players[i].setPOSISI(columns.nextToken()
end while
end while
retrun palyer
5.2 PlayerK
Atribud:
id_player: Integer
fieldGoal: double
threePoint: double
83
freeThrow: double
ofensiveRebount: double
defensifeRebount: double
totalRebount: double
assistPerGames: double
stealPerGames: double
blockPerGames: double
pointPerGames: double
turnOver: double
personalFoul: double
TINGGI: double
BERAT: double
Method:
B. executeFileToPlayer(file) {
input:
file
output:
players
algoritma:
i. if(!file.getName().endsWith (“csv”)
then
tampilkan " Format File tidak Sesuai”
return null;
end if
j. cari ←obejct String
k. cari= new Tools().readFile(file)
l. player[]←object Player
m. for 1=0 to rows.countTokens()
84
then
players[i] = new Player()
n. i←object int
o. 1=0
p. While (rows.hasMoreTokens())
Then
baris←object String
baris = rows.nextToken().replaceAll(",", " ");
columns←object StringTokenizer
columns = new StringTokenizer(baris);
j←object int
j = 0
if (columns.countTokens() != 16)
then
tampilkan "Jumlah Kolom tidak Sesuai"
return null
end if
while (columns.hasMoreTokens())
then
players[i].setId_player(Integer.parseInt(columns.nextToken()
players[i].setFieldGoal(Double.parseDouble(columns.nextToken()
players[i].setThreePoint(Double.parseDouble(columns.nextToken()
players[i].setFreeThrow(Double.parseDouble(columns.nextToken()
players[i].setOfensiveRebount(Double.parseDouble(columns.nextToken()
players[i].setDefensifeRebount(Double.parseDouble(columns.nextToken()
players[i].setTotalRebount(Double.parseDouble(columns.nextToken()
players[i].setAssistPerGames(Double.parseDouble(columns.nextToken()
85
players[i].setStealPerGames(Double.parseDouble(columns.nextToken()
players[i].setBlockPerGames(Double.parseDouble(columns.nextToken()
players[i].setPointPerGames(Double.parseDouble(columns.nextToken()
players[i].setTurnOver(Double.parseDouble(columns.nextToken()
players[i].setPersonalFoul(Double.parseDouble(columns.nextToke
n()
players[i].setTINGGI(Double.parseDouble(columns.nextToken()
players[i].setBERAT(Double.parseDouble(columns.nextToken()
end while
end while
retrun palyer
5.3 Tree
Atribut:
id: int
kategori: enumData
data_kategori: enumKategori
posisi: enumPosisi
dataset Vector
Level: int
Method:
Tidak ada
5.6 enumData
Atribud:
86
fieldGoal
threePoint
freeThrow
ofensiveRebount
defensifeRebount
totalRebount
assistPerGames
stealPerGames
blockPerGames
pointPerGames
turnOver
personalFoul
TINGGI
BERAT
Method:
Tidak Ada
5.7 enumPosisi
Atribud:
Guard
Forward
Center
Method:
Tidak Ada
5.8 enumKategori
Atribud:
jelek
87
sedang
bagus
Method:
Tidak Ada
5.9 Tools
Atribut:
LOW_FG: double
HIGH_FG: double
LOW_TP: double
HIGH_TP: double
LOW_FT: double
HIGH_FT: double
LOW_OFF: double
HIGH_0FF: double
LOW_DEF: double
HIGH_DEF: double
LOW_TOT: double
HIGH_TOT: double
LOW_APG: double
HIGH_APG: double
LOW_SPG: double
HIGH_SPG: double
LOW_BPG: double
HIGH_BPG: double
LOW_PPG: double
HIGH_PPG: double
LOW_TO: double
88
HIGH_TO: double
LOW_PF: double
HIGH_PF: double
LOW_TINGGI: double
HIGH_TINGGI: double
LOW_BERAT: double
HIGH_BERAT: double
LOW_FGDefault: double
HIGH_FGDefault: double
LOW_TPDefault: double
HIGH_TPDefault: double
LOW_FTDefault: double
HIGH_FTDefault: double
LOW_OFFDefault: double
HIGH_0FFDefault: double
LOW_DEFDefault: double
HIGH_DEFDefault: double
LOW_TOTDefault: double
HIGH_TOTDefault: double
LOW_APGDefault: double
HIGH_APGDefault: double
LOW_SPGDefault: double
HIGH_SPGDefault: double
LOW_BPGDefault: double
HIGH_BPGDefault: double
LOW_PPGDefault: double
HIGH_PPGDefault: double
LOW_TODefault: double
LOW_TODefault: double
89
HIGH_TODefault: double
LOW_PFDefault: double
HIGH_PFDefault: double
LOW_TINGGIDefault: double
HIGH_TINGGIDefault: double
LOW_BERATDefault=: double
HIGH_BERATDefault: double
Method:
A. public String readFile(File courseFile){
input:file
output:out
algoritma:
a. out←object String
b. out=null
c. if (courseFile.isFile()){
in←object BufferedReader
in = new BufferedReader(new FileReader(courseFile));
ch← object int
while ( (ch = in.read())!=-1) then
if(out!=null) then
out =out+(char)ch+in.readLine()+"\n";
end if
else
out = (char)ch+in.readLine()+"\n";
end while
return out;
B. public static int konversi (double value) {
90
input:
value
output:
value
algoritma:
a. if (value >= 0 && value <= LOW_BERAT) then
return 1;
end if
b. else if (value >LOW_BERAT && value <HIGH_BERAT) then
return 2;
end else if
c. else if (value >=HIGH_BERAT) then
return 3;
end else if
C. Entropy_Total(Vector tmp) {
Input:
vector
Output:
gain
Algoritma:
a. Jml_kelas← object float
b. Jml_kelas[] = new float[jumlah_kelas];
c. jumlah← object float
d. jumlah = 0
e. total← object float
f. total = 0
g. for i = 0 to jumlah_kelas then
jumlah = 0;
91
for j = 0 to tmp.size() then
Player = (Player) tmp.elementAt(j)
if (d.getPosisi() == data_kelas[i])then
jumlah++;
then if
end for
Jml_kelas[i] = jumlah;
total += Jml_kelas[i];
end for
float Gain = 0;
for i = 0 to jumlah_kelas then
if (Jml_kelas[i] > 0) then
Gain += ((-1 * (float) (Jml_kelas[i] / total)) * (((float)
Math.log(Jml_kelas[i] / total)) / ((float) Math.log(2))));
End if
End for
return Gain;
D. Gain_atribut(Vector tmp, float Entropy_Total)
Input:
Vector, float
Output:
hasil
Algoritma:
a. data_fitur[][]←object
b. float data_fitur[][] = new float[data_atribut.length][jumlah_kelas];
c. jumlah←object float
d. jumlah = 0;
92
e. float total[] = new float[data_fitur.length];
f. total_semua ← object float
g. total_semua = 0;
h. for k = 0 to data_fitur.length then
total[k] = 0;
for i = 0 to data_fitur[k].length then
jumlah = 0;
for j = 0 to tmp.size() then
Player d = (Player) tmp.elementAt(j);
if (d.getFg() == data_atribut[k] && d.getPosisi() == data_kelas[i]) then
jumlah++;
end if
end for
data_fitur[k][i] = jumlah;
total[k] += data_fitur[k][i];
end for
total_semua += total[k];
end for
i. float hasil = 0;
j. for k = 0 to data_fitur.length then
float Gain = 0;
int indek = 0;
for i = 0 to data_fitur[k].length then
if (data_fitur[k][i] > 0) then
Gain += (-1 * ((float) (data_fitur[k][i] / total[k])) * ((float)
Math.log(data_fitur[k][i] / total[k])) / ((float) Math.log(2)));
indek++;
end if
end for
93
hasil += Gain * (total[k] / total_semua);
end for
hasil = Gain_Total - hasil;
return hasil;
5.11 HomeForm
Atribut:
jButtonAbout;
JButton jButtonCreateTree;
JButton jButtonExit;
JButton jButtonGroupK;
JButton jButtonHelp;
JButton jButtonPersonalK;
JButton jButtonSetting;
JLabel jLabelCopy;
JLabel jLabelFakultas;
JLabel jLabelGambar;
JLabel jLabelJudul1;
JLabel jLabelJudul2;
JLabel jLabelTI;
JLabel jLabelUSD;
JLabel jLabelYog;
JPanel jPanelCopy;
JPanel jPanelJudul;
JPanel jPanelKampus;
JPanel jPanelMenu;
Method:
A. jButtonCreateTreeActionPerformed(java.awt.event.ActionEvent evt) {
94
input:
output:
algoritma:
mt←object createTree
mt = new createTree(pohonkeputusan);
mt.setVisible(true);
this.dispose();
B. jButtonPersonalKActionPerformed(java.awt.event.ActionEvent evt) {
input:
output:
method:
if(pohonkeputusan != null)
then
kl←object personalKlasifikasi
kl = new personalKlasifikasi(pohonkeputusan);
kl.setVisible(true);
this.dispose();
end if
else then
tampilkan "Pohon Belum Terbentuk"
End else
C. jButtonSettingActionPerformed(java.awt.event.ActionEvent evt) {
input:
output:
algoritma:
hm←object setting
hm = new setting(pohonkeputusan)
95
hm.setVisible(true);
this.dispose();
D. private void jButtonExitActionPerformed(java.awt.event.ActionEvent evt)
{
input:
output:
algoritma:
System.exit(0)
E. jButtonGroupKActionPerformed(java.awt.event.ActionEvent evt) {
input:
output:
method:
if(pohonkeputusan != null)
then
kl←object personalKlasifikasi
kl = new personalKlasifikasi(pohonkeputusan);
kl.setVisible(true);
this.dispose();
end if
else then
tampilkan "Pohon Belum Terbentuk"
End else
5.12 CreateTreeForm
Atribut:
96
JButton jButtonBack;
JButton jButtonBrowse;
JButton jButtonCreateTree;
JButton jButtonPreprocessing;
JButton jButtonViewTree;
JLabel jLabelJudul;
JScrollPane jScrollPane1;
JScrollPane jScrollPane2;
JTable jTable1;
JTable jTableCreateTree;
JTextField jTextFieldBrowse;
private DefaultTableModel dtm;
private List<DataStatistik> record;
private Vector dataset;
private Vector pohonkeputusan;
private Player players[];
Method:
A. jButtonBrowseActionPerformed(java.awt.event.ActionEvent evt) {
input:
output:
algoritma:
a. fc← object JFileChooser
b. fc = new JFileChooser()
c. if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
then
jTextFieldBrowse.setText(fc.getSelectedFile().getPath()
record = new ArrayList<DataStatistik>()
players = Player.executeFileToPlayer(fc.getSelectedFile()
97
if (players != null)
then
dtm = (DefaultTableModel) jTableCreateTree.getModel();
for i = 0 to players.length
then
dtm.addRow(new Object[]{players[i].getId_player(),
players[i].getFieldGoal(), players[i].getThreePoint(),
players[i].getFreeThrow(),
players[i].getOfensiveRebount(), players[i].getDefensifeRebount(),
players[i].getTotalRebount(), players[i].getAssistPerGames(),
players[i].getStealPerGames(), players[i].getBlockPerGames(),
players[i].getPointPerGames(), players[i].getTurnOver(),
players[i].getPersonalFoul(), players[i].getTINGGI(),
players[i].getBERAT(), players[i].getPOSISI()
end for
tampilkan "File sudah diinputkan"
end if
end if
B. jButtonBackActionPerformed(java.awt.event.ActionEvent evt)
input:
output:
algoritma:
hm←object home
hm = new home(pohonkeputusan)h
m.setVisible(true)
this.dispose()
C. jButtonPreprocessingActionPerformed(java.awt.event.ActionEvent evt) {
98
input:
output:
algoritma:
dtm = (DefaultTableModel) jTableCreateTree.getModel();
while (dtm.getRowCount() > 0)
then
dtm.removeRow(0)
end while
dataset = new Vector();
for int i = 0 to players.length()
then
dss← object Player
dss = new Player()
dss.setIdPlayer(players[i].getId_player()
dss.setFg(tools.konversiFG(players[i].getFieldGoal()
dss.setThreeP(tools.konversiTP(players[i].getThreePoint()
dss.setFt(tools.konversiFT(players[i].getFreeThrow()
dss.setOff(tools.konversiOFF(players[i].getOfensiveRebount()
dss.setDef(tools.konversiDEF(players[i].getDefensifeRebount()
dss.setTot(tools.konversiTOT(players[i].getTotalRebount()
dss.setApg(tools.konversiAPG(players[i].getAssistPerGames()
dss.setSpg(tools.konversiSPG(players[i].getStealPerGames()
dss.setBpg(tools.konversiBPG(players[i].getBlockPerGames()
dss.setPpg(tools.konversiPPG(players[i].getPointPerGames()
dss.setTurno(tools.konversiTO(players[i].getTurnOver()
dss.setPerF(tools.konversiPF(players[i].getPersonalFoul()
dss.setTinggi(tools.konversiTINGGI(players[i].getTINGGI()
dss.setBerat(tools.konversiBERAT(players[i].getBERAT()
dss.setPosisi(tools.KonversiPosisi(players[i].getPOSISI()).ordinal()
99
dataset.add(dss);
dtm.addRow(new Object[]{dss.getIdPlayer(), dss.getFg(), dss.getThreeP(),
dss.getFt(), dss.getOff(), dss.getDef(), dss.getTot(), dss.getApg(),
dss.getSpg(), dss.getBpg(), dss.getPpg(), dss.getTurno(), dss.getPerF(),
dss.getTinggi(), dss.getBerat(), dss.getPosisi()
end for
tampilkan "File sudah diproses"
D. jButtonViewTreeActionPerformed(java.awt.event.ActionEvent evt)
input:
output:
algoritma:
if (pohonkeputusan != null)
then
kl←pbject viewTree
kl = new viewTree(pohonkeputusan);
kl.setVisible(true);
this.dispose();
end if
else
tampilkan “Pohon Belum Terbentuk"
end else
E. id3(int master_id, int level, Vector tmp, enumKategori nilaifitur) {
input:
int, int, Vector, enumKategori
output:
pohonkeputusan
algoritma:
a. atribut_terpilih←object enumData
100
b. atribut_terpilih = null;
c. atribut_terbesar← object float
d. atribut_terbesar = 0
e. opsi[]←object enumKategori
f. opsi[] = enumKategori.values()
g. gainI←object float
h. gainI = hitung.Gain_Total(tmp)
i. kelas[]←object enumPosisi
j. kelas[] = enumPosisi.values()
k. if (!cari_fitur(enumData.fieldGoal, pohonkeputusan, master_id)
then
gainFg ← object float
gainFg = hitung.Entropy_FieldGoal(tmp, gainI)
if (atribut_terbesar < gainFg) {
atribut_terbesar = gainFg;
atribut_terpilih = enumData.fieldGoal;
end if
end if
l. ualangi langkah k dengan sampai semua atribut
m. data_kosong←object boolean
n. data_kosong = false;
o. for i = 0 to opsi.length
then
dataset_hasil← object Vector
dataset_hasil = pecah_data(atribut_terpilih, tmp, opsi[i].ordinal() + 1)
jumlah_data ←object int
jumlah_data = dataset_hasil.size();
if (jumlah_data == 0)
then
101
data_kosong = true;
end if
end for
if (!data_kosong)
then
makeTree←object CreateTree
makeTree = new CreateTree()
id←object int
id = id_pohon_keputusan()
makeTree.setId(id)
makeTree.setKategori(atribut_terpilih)
makeTree.setData_kategori(nilaifitur)
makeTree.setMaster_id(master_id)
makeTree.setLevel(level)
makeTree.setDataset(dataset)
pohonkeputusan.add(makeTree)
if (!data_kosong)
then
makeTree←object CreateTree
makeTree = new CreateTree()
id←object int
id = id_pohon_keputusan()
makeTree.setId(id)
makeTree.setKategori(atribut_terpilih)
makeTree.setData_kategori(nilaifitur)
makeTree.setMaster_id(master_id)
makeTree.setLevel(level)
makeTree.setDataset(dataset)
pohonkeputusan.add(makeTree)
102
end for
end if
if (status == false)
then
id3(makeTree.getId(), level,
dataset_hasil,enumKategori.valueOf(String.valueOf(opsi[i])
end if
end for
end if
else
jumlah_perkelas ←object int
jumlah_perkelas = 0
int jumlah_terbanyak = 0
int index_penyakit = 0
for k = 0 to kelas.length
then
jumlah_perkelas = 0
for j = 0 to tmp.size()
then
Player d = (Player) tmp.elementAt(j)
if (d.getPosisi() == kelas[k].ordinal())
then
end for
end for
if (jumlah_terbanyak < jumlah_perkelas)
then
jumlah_terbanyak = jumlah_perkelas
index_penyakit = k
end if
103
CreateTree Pk2 = new CreateTree()
int id2 = id_pohon_keputusan()
Pk2.setId(id2)
Pk2.setData_kategori(nilaifitur)
Pk2.setMaster_id(master_id)
Pk2.setPosisi(kelas[index_penyakit])
Pk2.setLevel(level)
pohonkeputusan.add(Pk2)
F. id_pohon_keputusan() {
input:
output:
hasil
hasil← object int
hasil = 0;
for i = 0 to pohonkeputusan.size()
then
p←object CreateTree
p = (CreateTree) pohonkeputusan.elementAt(i)
if (p.getId() > hasil)
then
hasil = p.getId()
end if
if (hasil == 0) then
hasil = 1
end if
else
return hasil;
104
G. cari_fitur(enumData tmp_fitur, Vector tmp, int tmp_id) {
input:
enumData, Vwctor, int
output:
hasil
algoritma:
a. hasil←object boolean
b. hasil = false
c. ketemu ← object boolean
d. ketemu = false
e. int id = tmp_id
f. while (!ketemu) then
int tmp2 = 0;
for i = 0 to tmp.size()
Entities.CreateTree d = (Entities.CreateTree) tmp.elementAt(i);
if (d.getId() == id) then
if (d.getKategori() == tmp_fitur) then
hasil = true;
ketemu = true;
else
tmp2 = d.getMaster_id();
id = tmp2;
if (id == 0)
ketemu = true
end if
return hasil
H. pecah_data(enumData tmp_fitur, Vector tmp, int data_fitur) {
input:
enumData, Vector, int
105
output:
hasil
algoritma:
a. hasil← oject Vector
b. hasil = new Vector()
c. for i = 0 to tmp.size() then
d. Player d = (Player) tmp.elementAt(i)
if (tmp_fitur == enumData.fieldGoal) then
if (d.getFg() == data_fitur) then
hasil.add(d)
end if
kembali ke langkah d sampai semua atribut
return hasil
5.13 PersonalKlasifikasiForm
Atribut:
private Vector pohonkeputusan;
private int Master_Id;
private enumData Kategori;
JComboBox cmbASG;
JComboBox cmbBPG;
JComboBox cmbBerat;
JComboBox cmbDef;
JComboBox cmbFT;
JComboBox cmbFg;
JComboBox cmbOff;
JComboBox cmbPF;
JComboBox cmbPPG;
106
JComboBox cmbSPG;
JComboBox cmbTO;
JComboBox cmbTP;
JComboBox cmbTinggi;
JComboBox cmbTot;
JButton jButtonBack;
JButton jButtonProses;
JButton jButtonReset;
JButton jButtonViewTree;
JLabel jLabelApg;
JLabel jLabelBerat;
JLabel jLabelBpg;
JLabel jLabelDef;
JLabel jLabelFg;
JLabel jLabelFt;
JLabel jLabelJudul;
JLabel jLabelOff;
JLabel jLabelPf;
JLabel jLabelPosisi;
JLabel jLabelPpg;
JLabel jLabelSpg;
JLabel jLabelTinggi;
JLabel jLabelTo;
JLabel jLabelTot;
JLabel jLabelTp;
JPanel jPanelKlasifikasi1;
JSplitPane jSplitPane1;
107
JTextField jTextFieldPosisi;
Method:
A. personalKlasifikasi(Vector pohonKeputusan)
input:
pohonKeputusan
output:
enumPosisi
algoritma;
a. Master_Id = 1
b. for j = 0 to pohonkeputusan.size()
c. then
d. k← object CreateTree
e. k = (CreateTree) pohonkeputusan.elementAt(j)
f. if (k.getId() == 1) then
if (k.getKategori() == enumData. Atribut) then
cmb Atribut.setEnabled(true)
Kategori = enumData. Atribut
g. lakukan langkah f sampai semua atribut
B. Proses(int id, enumData kategori)
Input:
Int, enumData
Output:
Algoritma:
a. for j = 0 to pohonkeputusan.size()
b. then
c. k←object CreateTree
108
d. k = (CreateTree) pohonkeputusan.elementAt(j)
e. if (k.getMaster_id() == id) then
if (kategori == enumData.fieldGoal) then
if (k.getData_kategori().ordinal() == (cmbFg.getSelectedIndex()
then
Master_Id = k.getId()
if (k.getPosisi() == null) then
if (k.getKategori() == enumData.fieldGoal) then
cmbFg.setEnabled(true)
Kategori = enumData.fieldGoal;
End if
else if (k.getKategori() == enumData.threePoint) then
cmbTP.setEnabled(true);
Kategori = enumData.threePoint;
End else if
else if (k.getKategori() == enumData.freeThrow) then
cmbFT.setEnabled(true);
Kategori = enumData.threePoint
End else if
else if (k.getKategori() == enumData.ofensiveRebount) then
cmbOff.setEnabled(true);
Kategori = enumData.ofensiveRebount
End else if
else if (k.getKategori() == enumData.defensifeRebount) then
cmbDef.setEnabled(true);
Kategori = enumData.defensifeRebount;
End else if
else if (k.getKategori() == enumData.totalRebount) then
cmbTot.setEnabled(true);
109
Kategori = enumData.totalRebount;
End else if
else if (k.getKategori() == enumData.assistPerGames) then
cmbASG.setEnabled(true);
Kategori = enumData.assistPerGames;
End else if
else if (k.getKategori() == enumData.stealPerGames) then
cmbSPG.setEnabled(true);
Kategori = enumData.stealPerGames;
End else if
else if (k.getKategori() == enumData.blockPerGames) then
cmbBPG.setEnabled(true);
Kategori = enumData.blockPerGames;
End else if
else if (k.getKategori() == enumData.pointPerGames) then
cmbPPG.setEnabled(true);
Kategori = enumData.pointPerGames;
End else if
else if (k.getKategori() == enumData.turnOver) then
cmbTO.setEnabled(true);
Kategori = enumData.turnOver
End else if
else if (k.getKategori() == enumData.personalFoul) then
cmbPF.setEnabled(true);
Kategori = enumData.personalFoul;
End else if
else if (k.getKategori() == enumData.TINGGI) then
cmbTinggi.setEnabled(true);
110
Kategori = enumData.TINGGI;
End else if
else if (k.getKategori() == enumData.BERAT) then
cmbBerat.setEnabled(true);
Kategori = enumData.BERAT;
End else if
End if
End if
else
String Posisi = k.getPosisi().toString();
jTextFieldPosisi.setText(Posisi);
end else
end if
end if
f. lakukan lngkah e untuk semua atribut
end if
C. jButtonProsesActionPerformed(java.awt.event.ActionEvent evt)
Proses(Master_Id, Kategori);
5.14 GroupKlasifikasiForm
Atribut:
private Vector pohonkeputusan;
private DefaultTableModel dtm;
List<DataStatistik> record ;
private String Posisi;
private int Master_Id;
private enumData Kategori;
JButton jButtonBack;
111
JButton jButtonBrowse;
JButton jButtonProses;
JButton jButtonViewTree;
JLabel jLabelJudul;
JScrollPane jScrollPane1;
JTable jTable1;
JTextField jTextFieldBrowse;
Method:
A. jButtonBrowseActionPerformed(java.awt.event.ActionEvent evt) {
input:
output:
algoritma:
a. fc← object JFileChooser
b. fc = new JFileChooser()
c. if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
then
jTextFieldBrowse.setText(fc.getSelectedFile().getPath()
record = new ArrayList<DataStatistik>()
players = Player.executeFileToPlayer(fc.getSelectedFile()
if (players != null)
then
dtm = (DefaultTableModel) jTableCreateTree.getModel();
for i = 0 to players.length
then
dtm.addRow(new Object[]{players[i].getId_player(),
players[i].getFieldGoal(), players[i].getThreePoint(),
players[i].getFreeThrow(),
players[i].getOfensiveRebount(), players[i].getDefensifeRebount(),
112
players[i].getTotalRebount(), players[i].getAssistPerGames(),
players[i].getStealPerGames(), players[i].getBlockPerGames(),
players[i].getPointPerGames(), players[i].getTurnOver(),
players[i].getPersonalFoul(), players[i].getTINGGI(),
players[i].getBERAT(), players[i].getPOSISI()
end for
tampilkan "File sudah diinputkan"
end if
end if
B. Proses(int id, enumData kategori)
Input:
Int, enumData
Output:
Algoritma:
a. for j = 0 to pohonkeputusan.size()
b. then
c. k←object CreateTree
d. k = (CreateTree) pohonkeputusan.elementAt(j)
e. if (k.getMaster_id() == id) then
if (kategori == enumData.fieldGoal) then
if (k.getData_kategori().ordinal() ==
(cmbFg.getSelectedIndex() then
Master_Id = k.getId()
if (k.getPosisi() == null) then
if (k.getKategori() == enumData.fieldGoal) then
cmbFg.setEnabled(true)
Kategori = enumData.fieldGoal;
End if
113
else if (k.getKategori() == enumData.threePoint) then
cmbTP.setEnabled(true);
Kategori = enumData.threePoint;
End else if
else if (k.getKategori() == enumData.freeThrow) then
cmbFT.setEnabled(true);
Kategori = enumData.threePoint
End else if
else if (k.getKategori() == enumData.ofensiveRebount) then
cmbOff.setEnabled(true);
Kategori = enumData.ofensiveRebount
End else if
else if (k.getKategori() == enumData.defensifeRebount) then
cmbDef.setEnabled(true);
Kategori = enumData.defensifeRebount;
End else if
else if (k.getKategori() == enumData.totalRebount) then
cmbTot.setEnabled(true);
Kategori = enumData.totalRebount;
End else if
else if (k.getKategori() == enumData.assistPerGames) then
cmbASG.setEnabled(true);
Kategori = enumData.assistPerGames;
End else if
else if (k.getKategori() == enumData.stealPerGames) then
cmbSPG.setEnabled(true);
Kategori = enumData.stealPerGames;
End else if
else if (k.getKategori() == enumData.blockPerGames) then
114
cmbBPG.setEnabled(true);
Kategori = enumData.blockPerGames;
End else if
else if (k.getKategori() == enumData.pointPerGames) then
cmbPPG.setEnabled(true);
Kategori = enumData.pointPerGames;
End else if
else if (k.getKategori() == enumData.turnOver) then
cmbTO.setEnabled(true);
Kategori = enumData.turnOver
End else if
else if (k.getKategori() == enumData.personalFoul) then
cmbPF.setEnabled(true);
Kategori = enumData.personalFoul;
End else if
else if (k.getKategori() == enumData.TINGGI) then
cmbTinggi.setEnabled(true);
Kategori = enumData.TINGGI;
End else if
else if (k.getKategori() == enumData.BERAT) then
cmbBerat.setEnabled(true);
Kategori = enumData.BERAT;
End else if
End if
End if
else
String Posisi = k.getPosisi().toString();
jTextFieldPosisi.setText(Posisi);
115
end else
end if
end if
f. lakukan lngkah e untuk semua atribut
end if
C. jButtonProsesActionPerformed(java.awt.event.ActionEvent evt) {
input:
output:
algoritma:
dtm = (DefaultTableModel) jTableCreateTree.getModel();
while (dtm.getRowCount() > 0)
then
dtm.removeRow(0)
end while
dataset = new Vector();
for int i = 0 to players.length()
then
dss← object Player
dss = new Player()
dss.setIdPlayer(players[i].getId_player()
dss.setFg(tools.konversiFG(players[i].getFieldGoal()
dss.setThreeP(tools.konversiTP(players[i].getThreePoint()
dss.setFt(tools.konversiFT(players[i].getFreeThrow()
dss.setOff(tools.konversiOFF(players[i].getOfensiveRebount()
dss.setDef(tools.konversiDEF(players[i].getDefensifeRebount()
dss.setTot(tools.konversiTOT(players[i].getTotalRebount()
dss.setApg(tools.konversiAPG(players[i].getAssistPerGames()
dss.setSpg(tools.konversiSPG(players[i].getStealPerGames()
dss.setBpg(tools.konversiBPG(players[i].getBlockPerGames()
116
dss.setPpg(tools.konversiPPG(players[i].getPointPerGames()
dss.setTurno(tools.konversiTO(players[i].getTurnOver()
dss.setPerF(tools.konversiPF(players[i].getPersonalFoul()
dss.setTinggi(tools.konversiTINGGI(players[i].getTINGGI()
dss.setBerat(tools.konversiBERAT(players[i].getBERAT()
dss.setPosisi(tools.KonversiPosisi(players[i].getPOSISI()).ordinal()
dataset.add(dss);
Master_Id = 1;
for j = 0 to pohonkeputusan.size() then
CreateTree k = (CreateTree) pohonkeputusan.elementAt(j);
if (k.getId() == 1) {
if (k.getKategori() == enumData.fieldGoal) then
Kategori = enumData.fieldGoal;
else if (k.getKategori() == enumData.threePoint) then
Kategori = enumData.threePoint;
End else if
else if (k.getKategori() == enumData.freeThrow) then
Kategori = enumData.threePoint;
End else if
else if (k.getKategori() == enumData.ofensiveRebount) then
Kategori = enumData.ofensiveRebount;
End else if
else if (k.getKategori() == enumData.defensifeRebount) then
Kategori = enumData.defensifeRebount;
End else if
else if (k.getKategori() == enumData.totalRebount) then
Kategori = enumData.totalRebount;
End else if
else if (k.getKategori() == enumData.assistPerGames) then
117
Kategori = enumData.assistPerGames;
End else if
else if (k.getKategori() == enumData.stealPerGames) then
Kategori = enumData.stealPerGames;
End else if
else if (k.getKategori() == enumData.blockPerGames) then
Kategori = enumData.blockPerGames;
End else if
else if (k.getKategori() == enumData.pointPerGames) then
Kategori = enumData.pointPerGames;
End else if
else if (k.getKategori() == enumData.turnOver) then
Kategori = enumData.turnOver;
End else if
else if (k.getKategori() == enumData.personalFoul) then
Kategori = enumData.personalFoul;
End else if
else if (k.getKategori() == enumData.TINGGI) then
Kategori = enumData.TINGGI;
End else if
else if (k.getKategori() == enumData.BERAT) then
Kategori = enumData.BERAT;
End else if
End if
End if
Proses(Master_Id, Kategori, dss)
dtm.setValueAt(Posisi, index, 15);
118
5.15 SettingForm
Atribut:
JButton jButtonBack;
JButton jButtonDefault;
JButton jButtonSaveSetting;
JLabel jLabelAPGlow;
JLabel jLabelASGhigh;
JLabel jLabelApg;
JLabel jLabelBERAThigh;
JLabel jLabelBERATlow;
JLabel jLabelBPGhigh;
JLabel jLabelBPGlow;
JLabel jLabelBerat;
JLabel jLabelBpg;
JLabel jLabelDEFhigh;
JLabel jLabelDEFlow;
JLabel jLabelDef;
JLabel jLabelFGhigh;
JLabel jLabelFGlow;
JLabel jLabelFThigh;
JLabel jLabelFTlow;
JLabel jLabelFg;
JLabel jLabelFt;
JLabel jLabelJudul;
JLabel jLabelOFFhigh;
JLabel jLabelOFFlow;
JLabel jLabelOff;
119
JLabel jLabelPFhigh;
JLabel jLabelPFlow;
JLabel jLabelPPGhigh;
.JLabel jLabelPPGlow;
JLabel jLabelPf;
JLabel jLabelPpg;
JLabel jLabelSPGhigh6;
JLabel jLabelSPGlow;
JLabel jLabelSpg;
JLabel jLabelTINGGIhigh;
JLabel jLabelTINGGIlow;
JLabel jLabelTOThigh;
JLabel jLabelTOTlow;
JLabel jLabelTOhigh;
JLabel jLabelTOlow;
JLabel jLabelTPhigh;
JLabel jLabelTPlow;
JLabel jLabelTinggi;
JLabel jLabelTo;
JLabel jLabelTot;
JLabel jLabelTp;
JPanel jPanelBagus;
JPanel jPanelJelek;
JPanel jPanelKategori;
JPanel jPanelMenu;
JPanel jPanelSedang;
JTextFieldAPGhigh;
120
JTextFieldAPGlow;
JTextFieldBERAThigh;
JTextFieldBERATlow;
JTextFieldBPGhigh;
JTextFieldBPGlow;
JTextFieldDEFhigh;
JTextFieldDEFlow;
JTextFieldFGhigh;
JTextField FGlow;
JTextFieldFThigh;
JTextFieldFTlow;
JTextFieldOFFhigh;
JTextFieldOFFlow;
JTextFieldPFhigh;
JTextFieldPFlow;J
jTextFieldPPGhigh;
JTextFieldPPGlow;
JTextFieldSPGhigh;
JTextFieldSPGlow;
JTextFieldTINGGIhigh;
JTextFieldTOThigh;
JTextFieldTOTlow;
JTextFieldTOhigh;
JTextFieldTOlow;
JTextFieldTPhigh;
JTextFieldTPlow;
JTextFieldTinggilow;
121
Method:
A. private void loadSetting()
input:
output:
algoritma:
jTextFieldFGlow.setText(String.valueOf(RangesKatagori.LOW_FG));
jTextFieldFGhigh.setText(String.valueOf(RangesKatagori.HIGH_FG));
jLabelFGlow.setText(String.valueOf(RangesKatagori.LOW_FG+0.1));
jLabelFGhigh.setText(String.valueOf(RangesKatagori.HIGH_FG-0.1));
B. private void saveSetting()
input:
output:
algoritma:
RangesKatagori.LOW_FG =
Double.parseDouble(jTextFieldFGlow.getText());
RangesKatagori.HIGH_FG =
Double.parseDouble(jTextFieldFGhigh.getText());
C. private void loadSettingDefault()
input:
output:
algoritma:
jTextFieldFGlow.setText(String.valueOf(RangesKatagori.LOW_FGDefault));
jTextFieldFGhigh.setText(String.valueOf(RangesKatagori.HIGH_FGDefault)
);
122
LAMPIRAN 6
RANCANGAN INTERFACE
No Kelas Analisis Lampiran
1 Halaman Home Lampiran 5.1
2 Halaman Create Tree Lampiran 5.2
3 Halaman Group Klasifikasi Lampiran 5.3
4 Halaman Personal Klasifikasi Lampiran 5.4
5 Halaman Setting Lampiran 5.8
123
6.1 Tampilan Home
Halaman Home ini merupakan tampilan awal program, untuk
membuat tree dengan menekan tombol Create Tree, untuk
melakukan pelabelan pemain dengan menekan tombol personal
klasifikasi atau group klasifikasi (Personal Klasifikasi digunakan
untuk melakukan pelabelan dengan data tunggal sedangkan Group
Klasifikasi digunakan untuk pelabelan dengan data yang banyak),
untuk mengubah ranges atribut dengan menekan tombol setting,
untuk mencari bantuan dengan menekan tombol help, untuk
mengetahui tentang detail program dengan menekan tombol About
dan untuk keluar bisa menekan tombol exit.
Gambar 6.1 Design Interface Home
124
6.2 Tampilan Create Tree
Halaman ini digunakan untuk membuat model tree dengan cara
menekan tombol browse untuk mengambil data kemudian
menekan tombol preprocessing dan menekan tombol Create Tree
untuk membuat model tree. Tombol Preprocessing digunakan
untuk mengubah data numeric ke nominal. Tombol Create Tree
digunakan untuk membentuk Tree. Untuk melihat hasil tree yang
terbentuk dengan menekan tombol View Tree. Sedangkan tombol
Back digunakan untuk kembali ke menu utama.
Gambar 6.2 Design Interface Create Tree
6.3 Tampilan Group Klasifikasi
Halaman ini digunakan untuk membuat label atau klasifikasi
dengan cara menekan tombol browse untuk mengambil data dan
125
menekan tombol Proses untuk hasil uji tree. Tombol View Tree
digunakan untuk melihat bentuk tree yang telah dibuat. Tombol
Proses digunakan untuk menggunakan Tree yang telah terbentuk
(terjadi proses pelabelan klasifikasi). Untuk melihat hasil tree yang
terbentuk dengan menekan tombol View Tree. Sedangkan tombol
Back digunakan untuk kembali ke menu utama.
Gambar 6.3 Design Interface Group Klasifikasi
6.4 Tampilan Personal Klasifikasi
Halaman ini digunakan untuk membuat label atau klasifikasi
dengan cara menekan tombol-tombol combo box untuk
memasukkan data dan menekan tombol proses untuk melanjutkan
hasil uji tree. Tombol View Tree digunakan untuk melihat bentuk
tree yang telah dibuat. Sedangkan tombol Back digunakan untuk
kembali ke menu utama.
126
Gambar 6.4 Design Interface Personal Klasifikasi
6.5 Tampilan Setting
Halaman ini digunakan untuk mengubah ranges dari atribut-
atribut. Klik tanda panah atas atau tanda panah bawah atau
mengetik langsung pada kolom yang tersedia untuk mengubah
ranges atribut. Kemudain tekan tombol Save untuk mengakhirinya.
Untuk mengubah ranges ke posisi normal (ranges yang telah
disediakan oleh sistem) lagi, dapat menekan tombol default.
127
Gambar 6.5 Design Interface Setting Atribut
128
LAMPIRAN 7
IMPLEMENTASI ANTAR MUKA/ INTERFACE
Hal-hal yang akan dibahas dalam bab ini antara lain hasil implementasi sistem
berupa hasil tangkapan antar muka sistem, pembahasan algoritma yang digunakan,
serta hasil penelitian. Bagian pertama membahas implementasi sistem. Pembahasn ini
disertai juga dengan penjelasan penggunaan tombol dan menu untuk setiap
halamannya. Pada bagian kedua akan membahas tentang algoritma beserta
kompleksitasnya. Sedangkan bagian terakhir membahas hasil peniltitan program
dengan menganalisa percobaan yang telah dilakukan.
7.1 Halaman Home
Pada halaman home, terdapat identitas dan tujuan pembuatan program
Klasifikasi Pemain Basket NBA dengan Menggunakan Algoritmas
Decision Tree C4.5. Selain itu ada 7 menu button, yaitu:
1. Menu Button Create Tree
Menu yang berfungsi menampilkan halaman Create Tree.
2. Menu Button Personal Klasifikasi
Menu yang berfungsi menampilkan halaman Personal Klasifikasi.
3. Menu Button Group Klasifikasi
Menu yang berfungsi menampilkan halaman Group Klasifikasi.
4. Menu Button Setting
Menu yang berfungsi menampilkan halaman Setting.
5. Menu Button Help
Menu yang berfungsi menampilkan halaman Help.
6. Menu Button About
Menu yang berfungsi menampilkan halaman About.
7. Menu Button Exit
129
Menu yang berfungsi untuk keluar dari program.
Gambar 7.1 Halaman Home
7.2. Halaman Create Tree
130
Gambar 7.2. halaman Create Tree (sebelum data diinputkan)
Gambar 7.3. Kotak file selector untuk mengambil data
Gambar 7.4. Pemberitahuan file sudah diinputkan
131
Gambar 7.5. halaman Create Tree (setelah data diinputkan)
Gambar 7.6. pemberitahuan file telah selesai di-preprocessing
132
Gambar 7.7. halaman Create Tree (setelah dilakukan preprocessing)
Gambar 7.8. pemberitahuan Tree sudah terbentuk
Halaman Create Tree merupakan halaman yang berfungsi
untuk membentuk tree yang dimasukan lewat tombol browse. User
dapat memasukan file .csv yang dipilih melalui jendela file selector
(Gambar 4.3.) yang muncul setelah tombol browse ditekan. Setelah
file telah dipilih dan user menekan tombol open, maka akan muncul
kontrak pemberitahuan bahwa file yang dipilih telah diinputkan.
Setelah file selesai diinputkan, user harus menekan tombol
preprocessing untuk mengolah data agar siap diproses oleh program.
Akan muncul kontak pemberitahuan jika data telah selesai diproses.
133
Untuk membentuk tree, user dapat menekan tombol create tree.
Setelah proses pembentukan tree selesi, maka akan muncul kotak
pemberitahuan bahwa tree telah terbentuk. Untuk melihat tree yang
telah terbentuk, user dapat menekan tombol view tree. Sedangkan
tombol back digunakan untuk kembali ke halaman home.
7.3. Halaman View Tree
Gambar 7.9. Halaman View Tree
Halaman View Tree merupakan halaman yang menampilkan
tree yang telah dibentuk. Untuk melihat lebih dalam ke bagian daun,
user dapat menekan pada bagian percabangan batang. Tombol
Personal Klasifikasi digunakan untuk menuju halaman personal
klasifikasi. Tombol Group Klasifikasi digunakan untuk menuju
halaman Group klasifikasi Sedangkan tombol back digunakan untuk
menuju ke halaman home.
134
7.4. Halaman Personal Klasifikasi
Gambar 7.10.Halaman Personal Klasifikasi
Halaman personal klasifikasi adalah halaman yang berfungsi
untuk mengklasifikasi pemain secara tunggal atau satu data record. Cara
mengklasifikasi adalah dengan memilih data yang sesuai pada tombol
combobox dan menekan tombol proses untuk mengetahui hasil
klasifikasi. Tombol view tree digunakan untuk melihat kembali tree
yang telah terbentuk. Tombol reset berfungsi untuk mengulang kembali
proses klasifikasi. Sedangkan tombol back digunakan untuk kembali ke
halaman home.
135
7.5. Halaman Group Klasifikasi
Gambar 7.11.Halaman Group Klasifikasi
Gambar 7.12. File selector untuk memilih file yang akan diklasifikasi
136
Gambar 7.13. Pemberitahuan File telah diinputkan
Gambar 7.14.Halaman Group Klasifikasi ( Setelah file diinputkan)
Gambar 7.15. Pemberitahuan file telah diinputkan
137
Gambar 7.16.Halaman Group Klasifikasi ( Setelah proses Klasifikasi)
Gambar 7.17. Pemberitahuan telah dilakukan preses Klasifikasi
Halaman group klasifikasi adalah halaman yang berfungsi
untuk melakukan klasifikasi dengan data yang banyak. Cara
melakukan klasifikasi hampir sama seperti proses pembentukan tree,
yaitu dengan cara menekan tombol browse untuk memasukkan data
yang akan diklasifikasi. File yang akan diklasifikasi dapat dipilih
melalui file selector. Kotak pemberitahuan akan muncul setelah
data/file berhasil dimasukkan.
Kemudian user dapat menekan tombol proses untuk melakukan
klasifikasi, maka posisi pemain yang sebelumnya kosong akan terisi
138
dengan posisi yang sesuai. Tombol view tree digunakan untuk melihat
kembali tree yang telah terbentuk. Sedangkan tombol back digunakan
untuk kembali ke halaman home.
7.6. Halaman Setting
Gambar 7.18.Halaman Setting
Halaman Setting berfungsi untuk mengubah ranges atribut. Cara
mengubah ranges atau batas dari atribut adalah dengan cara menekan
tombol spinner atau langsung menuliskan ke text field. Setelah selesai
tekan tombol save untuk menyimpan perubahan ranges. Tombol default
digunakan untuk mengembalikan nilai ranges ke nilai yang telah
ditetapkan oleh program. Sedangkan tombol back digunakan untuk
kembali ke halaman home.
139
7.7. Halaman About
Gambar 7.19.Halaman About
Halaman About merupakan halaman yang berfungsi menjelaskan detail-
detail dari program.
140
7.8. Halaman Help
Gambar 7.20. Halaman Help
Halaman Help merupakan halaman yang berfungsi menjelaskan
langkah-langkah dalam pengunaan program.
141
LAMPIRAN 8.
TABEL KEPUTUSAN
143
Tabel L.8. Tabel Keputusan
ROOT L.1. L.2. L.3. L.4. L.5. POSISI
Tinggi Jelek Guard
Tinggi Sedang Berat Jelek OFF Jelek PPG Jelek Guard
Tinggi Sedang Berat Jelek OFF Jelek PPG Sedang Guard
Tinggi Sedang Berat Jelek OFF Jelek PPG Bagus Guard
Tinggi Sedang Berat Jelek OFF Sedang Forward
Tinggi Sedang Berat Jelek OFF Bagus Guard
Tinggi Sedang Berat Sedang TOT Jelek Forward
Tinggi Sedang Berat Sedang TOT Sedang Forward
Tinggi Sedang Berat Sedang TOT Bagus Forward
Tinggi Sedang Berat Bagus FT Jelek Forward
Tinggi Sedang Berat Bagus FT Sedang Center
Tinggi Sedang Berat Bagus FT Bagus Forward
Tinggi Bagus DEF Jelek 3P Jelek PF Jelek Center
Tinggi Bagus DEF Jelek 3P Jelek PF Sedang Center
Tinggi Bagus DEF Jelek 3P Jelek PF Bagus FG Jelek FT Jelek Forward
Tinggi Bagus DEF Jelek 3P Jelek PF Bagus FG Jelek FT Sedang Center
Tinggi Bagus DEF Jelek 3P Jelek PF Bagus FG Jelek FT Bagus Center
144
Tinggi Bagus DEF Jelek 3P Jelek PF Bagus FG Sedang Center
Tinggi Bagus DEF Jelek 3P Jelek PF Bagus FG Bagus Center
Tinggi Bagus DEF Jelek 3P Sedang Center
Tinggi Bagus DEF Jelek 3P Berat Foward
Tinggi Bagus DEF Sedang BPG Jelek Forward
Tinggi Bagus DEF Sedang BPG Sedang OFF Jelek Center
Tinggi Bagus DEF Sedang BPG Sedang OFF Sedang Center
Tinggi Bagus DEF Sedang BPG Sedang OFF Bagus Foward
Tinggi Bagus DEF Sedang BPG Bagus Center
Tinggi Bagus DEF Bagus BPG Jelek Center
Tinggi Bagus DEF Bagus BPG Sedang Forward
Tinggi Bagus DEF Bagus BPG Bagus Forward