PERANCANGAN DAN PEMBUATAN APLIKASI DATAMINING BERBASIS WEB MENGGUNAKAN ALGORITMA C4.5 UNTUK...
-
Upload
uofaunsada -
Category
Data & Analytics
-
view
1.325 -
download
7
Transcript of PERANCANGAN DAN PEMBUATAN APLIKASI DATAMINING BERBASIS WEB MENGGUNAKAN ALGORITMA C4.5 UNTUK...
SKRIPSI
PERANCANGAN DAN PEMBUATAN APLIKASI
DATAMINING BERBASIS WEB MENGGUNAKAN
ALGORITMA C4.5 UNTUK MEMPREDIKSI KELULUSAN
MAHASISWA S-1 PADA UNIVERSITAS DARMA PERSADA
Diajukan Untuk Melengkapi Syarat Mencapai Gelar Sarjana Strata Satu (S1)
Disusun Oleh :
JUNARTO
2008230026
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS DARMA PERSADA
JAKARTA
2015
ii
LEMBAR PENGESAHAN
PERANCANGAN DAN PEMBUATAN APLIKASI
DATAMINING BERBASIS WEB MENGGUNAKAN
ALGORITMA C4.5 UNTUK MEMPREDIKSI KELULUSAN
MAHASISWA S-1 PADA UNIVERSITAS DARMA PERSADA
Disusun oleh :
Nama : Junarto
NIM : 2008230026
Timor Setiyaningsih, S.T., M.T.I.
Dosen Pembimbing
Adam Arif Budiman, S.T., M. Kom.
Kepala Jurusan Teknik Informatika
iii
LEMBAR PENGUJI TUGAS AKHIR
Laporan Tugas Akhir dengan judul :
PERANCANGAN DAN PEMBUATAN APLIKASI
DATAMINING BERBASIS WEB MENGGUNAKAN
ALGORITMA C4.5 UNTUK MEMPREDIKSI KELULUSAN
MAHASISWA S-1 PADA UNIVERSITAS DARMA PERSADA
telah disidangkan dan dinyatakan LULUS pada tanggal 14 Agustus 2015
Penguji I
Herianto, S.Pd., M.T.
Penguji 2
Suzuki Syofian, M.Kom.
Penguji 3
Aji Setiawan, M.M.S.I.
iv
LEMBAR PERNYATAAN
Saya yang bertanda tangan dibawah ini :
Nama : Junarto
NIM : 2008230026
Fakultas : Teknik
Jurusan : Teknik Informatika
Menyatakan bahwa Laporan Tugas Akhir ini saya susun sendiri berdasarkan hasil
peninjauan, observasi serta memadukannya dengan buku-buku, literatur atau
bahan-bahan referensi lain yang terkait dan relevan di dalam penyelesaian
Laporan Tugas Akhir ini.
Demikian pernyataan ini penulis buat dengan sesungguhnya
Jakarta, 21 Agustus 2015
Junarto
v
LEMBAR BIMBINGAN
LAPORAN TUGAS AKHIR
TEKNIK INFORMATIKA – DARMA
PERSADA
NIM : 2008230026
NAMA LENGKAP : Junarto
DOSEN PEMBIMBING : Timor Setiyaningsih, S.T., M.T.I.
JUDUL TUGAS AKHIR : PERANCANGAN DAN PEMBUATAN
APLIKASI DATAMINING BERBASIS WEB
MENGGUNAKAN ALGORITMA C4.5 UNTUK
MEMPREDIKSI KELULUSAN MAHASISWA S-
1 PADA UNIVERSITAS DARMA PERSADA
No. Tanggal Materi Paraf
Dosen Pembimbing
1 8 Agus 2014 Konsultasi Konsep Judul
2 15 Agus 2014 Konsultasi Proposal Skripsi (Bab I)
3 22 Agus 2014 Revisi Proposal Skripsi (Bab I)
4 7 Mei 2015 Penyerahan Bab II
5 12 Mei 2015 Revisi Bab II
6 26 Mei 2015 Penyerahan Bab III
7 3 Juni 2015 Revisi Bab III
8 10 Juni 2015 Demo Aplikasi
9 12 Juni 2015 Penyerahan Bab IV dan Bab V
10 19 Juni 2015 Revisi Bab IV dan Bab V
11 25 Juni 2015 Penyerahan Bab IV dan Bab V
12 3 Juli 2015 Konsultasi Persiapan Sidang Isi
Jakarta, 14 Agustus 2015
Dosen Pembimbing
Timor Setiyaningsih, S.T., M.T.I.
vi
ABSTRAKSI
Berdasarkan data kelulusan Universitas Darma Persada, banyak mahasiswa
yang dinyatakan lulus tidak tepat waktu. Sementara itu sistem informasi yang ada
saat ini belum mampu menggali lebih jauh informasi dari banyaknya data yang
tersimpan untuk dijadikan sebuah pengetahuan. Oleh karena itu penulis
melakukan penelitian dengan membuat aplikasi penerapan data mining dengan
metode klasifikasi menggunakan algoritma C4.5. Algoritma C4.5 ini merupakan
algoritma decision tree terbaik menurut IEEE. Algoritma C4.5 bekerja secara
iteratif dengan menghitung nilai Gain tertinggi yang diperoleh berdasarkan
penghitungan Entropy masing-masing atribut. Atribut yang digunakan dalam
penelitian ini diantaranya: Jenis Kelamin, Jurusan, Nilai Indeks Prestasi Semester
1 hingga Indeks Prestasi Semester 4. Aplikasi ini menghasilkan informasi berupa
pohon keputusan dan aturan-atturan (rules) yang berguna saat melakukan prediksi
kelulusan. Setiap keputusan yang muncul merupakan hasil pencocokan nilai
masukan dengan aturan-aturan hasil pembelajaran data kasus.
Kata kunci : Data Mining, Algoritma C4.5, Aplikasi Web.
vii
KATA PENGANTAR
Bismillahirrahmaanirrahim,
Puji syukur saya panjatkan kehadirat Allah swt, atas segala rahmat
dan karunia-Nya akhirnya saya dapat juga menyelesaikan laporan tugas akhir ini
dengan judul “PERANCANGAN DAN PEMBUATAN APLIKASI DATA
MINING BERBASIS WEB MENGGUNAKAN ALGORITMA C4.5 UNTUK
MEMPREDIKSI KELULUSAN MAHASISWA S-1 PADA UNIVERSITAS
DARMA PERSADA”. Tugas Akhir ini disusun sebagai persyaratan kelulusan
pada Program Studi Teknik Informatika Universitas Darma Persada.
Dalam kesempatan ini, saya ingin menyampaikan rasa hormat dan
terima kasih kepada semua pihak yang telah memberikan bimbingan dan bantuan
yang sangat berharga dalam menyelesaikan laporan tugas akhir ini :
1. Bapak Ir. Agus Sun Sugiharto, MT, selaku Dekan Fakultas Teknik Universitas
Darma Persada.
2. Bapak Adam arif Budiman, S.T, M.Kom, selaku Ketua Jurusan Teknik
Informatika Universitas Darma Persada.
3. Ibu Timor Setiyaningsih, S.T,M.T.I, selaku pembimbing saya yang telah
meluangkan waktu, tenaga dan pikirannya untuk memberikan bimbingan dan
pengarahan serta sarannya bagi saya dalam menyelesaikan laporan ini.
4. Keluarga tercinta khususnya ibu dan ayah (alm.) yang selalu memberikan
semangat, dukungan-dukungan baik moril maupun materil, juga doa yang tak
ada habisnya.
viii
5. Pihak civitas kampus yang bersedia memberikan data yang dibutuhkan pada
penelitian ini sehingga pembuatan laporan tugas akhir dapat berjalan.
6. Seluruh anggota tim KapanLulus.com yang telah mendukung dan
mengizinkan saya untuk menumpang meletakkan aplikasi skripsi saya.
7. Pimpinan serta seluruh staf Digital Presence Strategy yang banyak membantu
memberi masukan dan dukungannya.
8. Semua pihak yang tidak dapat saya sebutkan satu persatu, yang telah
memberikan bantuan dan dukungannya dalam menyelesaikan penulisan
laporan tugas akhir ini.
Akhir kata saya berharap semoga laporan tugas akhir ini dapat bermanfaat
bagi kita semua. Sekian dan terima kasih.
Jakarta, Agustus 2015
(Penulis)
ix
DAFTAR ISI
LEMBAR PENGESAHAN .............................................................................. ii
PENGUJIAN LAPORAN TUGAS AKHIR .................................................... iii
LEMBAR PERNYATAAN ............................................................................. iv
LEMBAR BIMBINGAN ................................................................................. v
Abstraksi .......................................................................................................... vi
Kata Pengantar ................................................................................................ vii
Daftar Isi........................................................................................................... ix
Daftar Gambar ................................................................................................ xiv
Daftar Tabel .................................................................................................. xvii
BAB I PENDAHULUAN ................................................................................ 1
1.1 Latar Belakang .................................................................................. 1
1.2 Maksud dan Tujuan ........................................................................... 3
1.3 Perumusan Masalah .......................................................................... 3
1.4 Batasan Masalah................................................................................ 3
1.5 Metodologi Penellitian ...................................................................... 4
1.6 Sistematika Penulisan Laporan ......................................................... 6
BAB II LANDASAN TEORI ......................................................................... 8
2.1 Data Mining ...................................................................................... 8
x
2.1.1 Teknik Data Mining Klasifikasi ..................................................... 9
2.1.2 Pohon Keputusan ........................................................................... 9
2.1.3 Algoritma C4.5 ............................................................................. 10
2.2 Definisi Sistem ................................................................................ 16
2.3 Perangkat Lunak.............................................................................. 17
2.4 Internet ............................................................................................ 17
2.4.1 Sejarah Internet ..................................................................... 17
2.4.2 Web ....................................................................................... 18
2.4.3 HTML ................................................................................... 19
2.4.4 CSS ....................................................................................... 20
2.4.5 PHP ....................................................................................... 20
2.5 Basis Data MySQL ......................................................................... 21
2.6 UML ................................................................................................ 23
2.6.1 Use Case ............................................................................... 25
2.6.2 Activity Diagram .................................................................. 26
2.6.3 Sequence Diagram ................................................................ 28
BAB III ANALISIS DAN PERANCANGAN ............................................. 29
3.1 Analisis Sistem ................................................................................ 29
3.1.1 Analisis Masalah .................................................................. 29
xi
3.1.2 Analisis Sistem Yang Berjalan ............................................. 29
3.1.3 Analisis Kebutuhan Data ...................................................... 30
3.2 Rancangan Sistem ........................................................................... 30
3.2.1 Use Case Diagram ................................................................ 31
3.2.2 Activity Diagram .................................................................. 31
3.2.2.1 Proses Melihat Data Kasus...................................... 32
3.2.2.2 Proses Mining ......................................................... 33
3.2.2.3 Proses Melihat Aturan ............................................. 33
3.2.2.4 Proses Melihat Hasil Mining ................................... 34
3.2.2.5 Proses Prediksi Kelulusan ....................................... 35
3.2.3 Sequence Diagram ................................................................ 36
3.2.3.1 Sequence Diagram Melihat Data Kasus .................. 37
3.2.3.2 Sequence Diagram Proses Mining .......................... 37
3.2.3.3 Sequence Diagram Melihat Aturan ......................... 38
3.2.3.4 Sequence Diagram Melihat Hasil............................ 38
3.2.3.5 Sequence Diagram Prediksi Kelulusan ................... 39
3.3 Rancangan Database ....................................................................... 39
3. 3.1 Rancangan Tabel User ......................................................... 42
3.3.2 Rancangan Tabel Data_Mahasiswa ...................................... 42
xii
3.3.3 Rancangan Tabel Atribut ...................................................... 43
3..3.4 Rancangan Tabel Mining_C45 ............................................ 43
3..3.5 Rancangan Tabel Iterasi_C45 .............................................. 44
3..3.6 Perancangan Tabel Pohon_Keputusan_C45 ........................ 44
3..3.7 Perancangan Tabel Rule_C45 ............................................. 45
3..3.8 Persancangan Tabel_Rule_Penentu_Keputusan .................. 45
3..3.9 Perancangan Tabel Data_Penentu_Keputusan .................... 45
3..3.10 Perancangan Tabel Data_Keputusan_Kinerja ................... 46
3..3.11 Perancangan Tabel Data_Keputusan ................................. 46
3.4 RancanganTampilan Aplikasi ......................................................... 47
3.4.1 Tampilan Home .................................................................... 47
3.4.2 Halaman Data Kasus ............................................................ 48
3.4.3 Tampilan Proses Hasil Mining ............................................. 48
3.4.4 Halaman Aturan .................................................................... 49
3.4.5 Halaman Prediksi Kelulusan ................................................ 50
BAB IVIMPLEMENTASI & EVALUASI ................................................. 51
4.1 Implementasi ................................................................................... 51
4.1.1 Implementasi Perangkat Keras ............................................. 51
4.1.2 Implementasi Perangkat Lunak ............................................ 51
xiii
4.1.3 Implementasi Basis Data ...................................................... 52
4.1.4 Implementasi Algoritma C4.5 .............................................. 52
4.2 Pembahasan Tampilan Aplikasi ...................................................... 65
4.2.1 Tampilan Halaman Login ..................................................... 65
4.2.2 Tampilan Home Admin ........................................................ 66
4.2.3 Tampilan Form Data Mahasiswa .......................................... 66
4.2.4 Tampillan Data Mahasiswa .................................................. 67
4.2.5 Tampilan Perhitungan C4.5 .................................................. 67
4.2.7 Tampilan Pohon Keputusan C4.5 ......................................... 67
4.2.8 Tampilan Rule C4.5 .............................................................. 68
4.2.9 Tampilan Perbandingan Keputusan ...................................... 69
4.2.10 Tampilan Form Penentu Keputusan ................................... 69
4.3 Evaluasi ........................................................................................... 70
BAB V KESIMPULAN DAN SARAN ........................................................ 72
5.1 Kesimpulan ..................................................................................... 72
5.2 Saran ................................................................................................ 72
DAFTAR PUSTAKA .................................................................................... 73
LAMPIRAN
xiv
DAFTAR GAMBAR
Gambar 2.1 Pohon Keputusan Hasil Perhitungan Node 1 ............................. 13
Gambar 2.2 Pohon Keputusan Hasil Perhitungan Node 1.1 .......................... 14
Gambar 2.3 Pohon Keputusan Hasil Perhitungan Node 1.1.2 ....................... 16
Gambar 2.4 Use Case Model ......................................................................... 26
Gambar 2.5 Activity Diagram ........................................................................ 27
Gambar 2.6 Contoh Sequence Diagram ......................................................... 28
Gambar 3.1 Use Case Diagram Sistem Yang Diusulkan ............................... 31
Gambar 3.2 Activity Diagram Mengelola Data Mahasiswa .......................... 32
Gambar 3.3 Activity Diagram Proses Mining................................................ 33
Gambar 3.4 Activity Diagram Proses Melihat Aturan ................................... 34
Gambar 3.5 Activity Diagram Proses Melihat Hasil ..................................... 35
Gambar 3.6 Activity Diagram Proses Prediksi Kelulusan ............................. 36
Gambar 3.7 Sequence Diagram Melihat Kasus ............................................. 37
Gambar 3.8 Sequence Diagram Proses Mining ............................................. 37
Gambar 3.9 Sequence Diagram Melihat Aturan ............................................ 38
Gambar 3.10 Sequence Diagram Melihat Hasil ............................................. 38
Gambar 3.11 Sequence Diagram Prediksi Kelulusan .................................... 39
Gambar 3.12 Rancangan Tabel Relational..................................................... 41
xv
Gambar 3.13 Rancangan Tampilan Tata Letak Dasar ................................... 47
Gambar 3.14 Rancangan Tampilan Home ..................................................... 47
Gambar 3.15 Rancangan Tampilan Halaman Kasus...................................... 48
Gambar 3.16 Rancangan Tampilan Halaman Hasil Mining .......................... 49
Gambar 3.17 Rancangan Tampilan Halaman Melihat Aturan ...................... 49
Gambar 3.18 Rancangan Tampilan Halaman Prediksi .................................. 50
Gambar 4.1 Hasil Pembuatan Database dengan PHPMyAdmin ................... 52
Gambar 4.2 Pohon Keputusan Node Root ..................................................... 56
Gambar 4.3 Pohon Keputusan Node 1.1 ........................................................ 59
Gambar 4.4 Pohon Keputusan Node 1.2 ........................................................ 60
Gambar 4.5 Pohon Keputusan Node 1.2.1 ..................................................... 62
Gambar 4.6 Pohon Keputusan Node 1.3 ........................................................ 63
Gambar 4.7 Pohon Keputusan Node 1.3.1 ..................................................... 65
Gambar 4.8 Tampilan Halaman Login .......................................................... 65
Gambar 4.9 Tampilan Halaman Home .......................................................... 66
Gambar 4.10 Tampilan Form Data Mahasiswa ............................................. 66
Gambar 4.11 Tampilan Tabel Data Mahasiswa ............................................. 67
Gambar 4.12 Tampilan Perhitungan C4.5...................................................... 67
Gambar 4.13 Tampilan Pohon Keputusan C4.5 ............................................. 68
xvi
Gambar 4.14 Tampilan Rule Hasil Proses Mining ......................................... 68
Gambar 4.15 Tampilan Perbandingan Keputusan .......................................... 69
Gambar 4.16 Tampilan Form Penentu Keputusan ......................................... 69
Gambar 4.17 Tampilan Tabel Rekap Penentu Keputusan.............................. 70
Gambar 4.18 Tabel Kinerja : perbandingan keputusan .................................. 70
xvii
DAFTAR TABEL
Tabel 2.1 KeputusanBermain Tenis ............................................................... 11
Tabel 2.2 PerhitunganNode 1 ......................................................................... 12
Tabel 2.3 Perhitungan Node 1.1 ..................................................................... 13
Tabel 2.4 Perhitungan Node 1.1.2 .................................................................. 15
Tabel 2.5 Simbol Activity Diagram ............................................................... 26
Tabel 3.1 Tabel Klasifikasi Nilai IPS ............................................................ 40
Tabel 3.2 Tabel Klasifikasi Kelulusan .......................................................... 41
Tabel 3.3 Rancangan Tabel User .................................................................. 42
Tabel 3.4 Rancangan TabelData_Mahasiswa ................................................ 42
Tabel 3.5 Rancangan Tabel Atribut ............................................................... 43
Tabel 3.6 Rancangan Tabel Mining_C45 ...................................................... 43
Tabel 3.7 Rancangan Tabel Iterasi_C45 ........................................................ 44
Tabel 3.8 Rancangan Tabel Pohon_Keputusan_C45 ..................................... 44
Tabel 3.9 Rancangan Tabel Rule_C45........................................................... 45
Tabel 3.10 Rancangan Tabel Rule_Penentu_Keputusan ............................... 45
Tabel 3.11 Rancangan Tabel Data_Penentu_Keputusan ............................... 45
Tabel 3.12 Rancangan Tabel Data_Keputusan_Kinerja ................................ 46
Tabel 3.13 Rancangan Tabel Data_Keputusan .............................................. 46
xviii
Tabel 4.1 Penghitungan Node 1 ..................................................................... 54
Tabel 4.2 Penghitungan Node 1.1 .................................................................. 58
Tabel 4.3 Penghitungan Node 1.2 .................................................................. 59
Tabel 4.4 Penghitungan Node 1.2.1 ............................................................... 61
Tabel 4.5 Penghitungan Node 1.3 .................................................................. 62
Tabel 4.6 Penghitungan Node 1.3.1 ............................................................... 64
Tabel 4.7 Tabel Penilaian ............................................................................... 71
1
BAB I
PENDAHULUAN
1.1 Latar Belakang
Dengan kemajuan teknologi informasi dewasa ini, kebutuhan akan
informasi yang akurat sangat dibutuhkan dalam kehidupan sehari-hari, sehingga
informasi akan menjadi suatu elemen penting dalam perkembangan masyarakat
saat ini dan waktu mendatang. Namun kebutuhan informasi yang tinggi kadang
tidak diimbangi dengan penyajian informasi yang memadai, sering kali informasi
tersebut masih harus digali ulang dari data yang jumlahnya sangat besar.
Kemampuan teknologi informasi untuk mengumpulkan dan menyimpan berbagai
tipe data jauh meninggalkan kemampuan untuk menganalisis, meringkas dan
mengekstrak pengetahuan dari data. Metode tradisional untuk menganalisis data
yang ada, tidak dapat menangani data dalam jumlah besar.
Pemanfaatan data yang ada di dalam sistem informasi untuk menunjang
kegiatan pengambilan keputusan, tidak cukup hanya mengandalkan data
operasional saja, diperlukan suatu analisis data untuk menggali potensi-potensi
informasi yang ada. Para pengambil keputusan berusaha untuk memanfaatkan
gudang data yang sudah dimiliki untuk menggali informasi yang berguna
membantu mengambil keputusan, hal ini mendorong munculnya cabang ilmu baru
untuk mengatasi masalah penggalian informasi atau pola yang penting atau
menarikdari data dalam jumlah besar, yang disebut dengan data mining.
Penggunaan teknik data mining diharapkan dapat memberikan pengetahuan-
pengetahuan yang sebelumnya tersembunyi di dalam database sehingga menjadi
2
informasi yang berharga.
Perguruan tinggi saat ini dituntut untuk memiliki keunggulan bersaing
dengan memanfaatkan semua sumber daya yang dimiliki. Selain sumber daya
sarana, prasarana, dan manusia, sistem informasi adalah salah satu sumber daya
yang dapat digunakan untuk meningkatkan keunggulan bersaing. Dilihat dari data
kelulusan mahasiswa Universitas Darma Persada pada angkatan tahun 2008,
sebagianlulusan Program Sarjana (S1) reguler di Universitas Darma Persada
menempuh masa studi lebih dari 8 semester dari yang dijadwalkan yaitu 8
semester. Oleh karena itu, dengan memanfaatkan data induk mahasiswa dan data
akademik mahasiswa, dapat diketahui pola kelulusan berdasarkan nilai mata
kuliah pada empat semester pertama.
Untuk dapat mengetahui pola tersebut, dibutuhkan algoritma metode data
mining yang sesuai dengan kasus tersebut. Berdasarkan Paper yang
dipresentasikan pada International Conference on Data Mining (ICDM), IEEE
mengidentifikasi 10 algoritma data mining terbaik. Dengan memperhatikan
kelebihan suatu algoritma dalam mempelajari data, terpilihlah Algoritma C4.5
sebagai algoritma terbaik diantara 10 nominasi algoritma data mining.
Berdasarkan permasalahan yang dipaparkan di atas, peneliti mencoba
untuk menerapkan teknik klasifikasi menggunakan algoritma c4.5 sebagai metode
penyelesaian masalah yang ada. Sehingga penulis menjadikannya sebagai topik
Tugas Akhir dengan judul “PERANCANGAN DAN PEMBUATAN APLIKASI
DATAMININGBERBASIS WEBMENGGUNAKAN ALGORITMA C4.5
UNTUK MEMPREDIKSI KELULUSAN MAHASISWA S-1 PADA
UNIVERSITAS DARMA PERSADA”.
3
1.2 Maksud Dan Tujuan
Penelitian ini dimaksudkan untuk mendapatkan prediksi hasil kelulusan
mahasiswa dengan menerapkan algoritma C4.5, sehingga pembimbing akademik
bisa mengetahui mahasiswa yang lulusnya tepat waktu dan mahasiswa yang
lulusnya terlambat.
Tujuan yang ingin dicapai dalam penelitian ini adalah membantu
pembimbing akademik setiap jurusan dalam memprediksi kelulusan mahasiswa
dan hasil dari prediksi tersebut bisa digunakan sebagai bahan rekomendasi kepada
mahasiswa untuk meningkatkan prestasi akademiknya.
1.3 Perumusan Masalah
Berdasarkan latar belakang tersebut maka perumusan masalah yang dapat
diambil dalam penelitian ini adalah ”Bagaimana menerapkan Algorima C4.5
untuk memprediksi kelulusan mahasiswa berdasarkan data mahasiswa dan
akademik”.
1.4 Batasan Masalah
Pada penulisan tugas akhir ini, penulis membatasi permasalahan dalam
aplikasi data mining untuk memprediksi kelulusan mahasiswa pada Universitas
Darma Persada yang meliputi :
1. Tidak membahas pada sistem pendukung keputusan maupun sistem informasi
akademik.
2. Metode data mining yang digunakan adalah metode klasifikasi dengan
algoritma C4.5.
3. Data mahasiswa yang digunakan adalah data yang tersimpan di database dan
tidak pula membahas data warehouse. Dalam kasus ini data yang diambil
4
sebagai atribut penentu meliputi NIM, Nama Mahasiswa, Jenis Kelamin,
Jurusan, Nilai IPS 1 hingga IPS 4, dan Tanggal Kelulusan untuk mendapatkan
status kelulusan.
4. Untuk jurusan yang digunakan sebagai variable penentu, hanya jurusan-jurusan
program studi S1.
1.5 Metodologi Penelitian
Dalam melakukan penelitian ini penulis mengunakan beberapa metode
dalam membuat penelitian ini antara lain :
1. Metode Pengumpulan data
Pengumpulan data terbagi menjadi 2 yaitu :
a. Kepustakaan, suatu metode dimana sumber data berdasarkan teori-teori
dan literatur yang berhubungan dengan pembahasan. Bisa diperoleh
melalui browsing atau membaca buku literatur yang ada.
b. Observasi, suatu metode untuk memperoleh data dengan jalan melakukan
pengamatan langsung untuk mendapatkan data yang diperlukan. Penulis
mendapat langsung data mahasiswa dan akademik berupa SQL File dari
bagian UPT-TIK setelah menemui bagian BAAK Universitas Darma
Persada.
2. Jenis dan Sumber Data
a. Data Primer, suatu data yang diperoleh langsung dari pihak institusi yang
bersangkutan, yakni dari bagian akademik di Universitas Darma Persada
yaitu data mahasiswa dan data akademik.
5
b. Data Sekunder, suatu data yang diperoleh dari buku-buku penunjang, dan
dari berbagai pihak maupun keterangan-keterangan. Yang menjadi data
sekunder adalah materi dari web dan buku-buku literatur.
3. Metode Pengembangan Prangkat Lunak
Pada penelitian ini penulis menggunakan System Development Life
Cycle (SDLC) Model Waterfall yang terbagi dalam 4 tahap yaitu :
a. Analisis Sistem
Dalam melakukan proses analisis sistem, penulis langsung menerapkan
langkah-langkah Knowledge Discovery in Database (KDD).
b. Perancangan Sistem
Penulis menggunakan Unified Modelling Language (UML) sebagai
permodelan rancangan sistem yang meliputi use case, activity duagram,
dan sequence diagram.
c. Pengodean
Dalam membuat aplikasi ini penulis menggunakan PHP sebagai bahasa
pemrograman. Kode program disusun berdasarkan prosedur algoritma
yang digunakan. Dalam hal ini langkah-langkah pemrograman
menyesuaikan algoritma C4.5.
d. Pengujian
Untuk menguji hasil dari proses data mining ini dengan membandingkan
hasil pembelajaran data training dangan data testing.
6
1.6. Sistematika Penulisan Laporan
Penulisan terdiri dari 5 (lima) bab berikut garis besar dari masing- masing
bab tersebut, yaitu :
BAB I PENDAHULUAN
Dalam bab ini menjelaskan tentang latar belakang masalah, maksud dan
tujuan, perumusan masalah, batasan masalah, metodologi penelitian serta
sistematika penulisan dari laporan penelitian ini.
BAB II LANDASAN TEORI
Pada bab ini berisikan tentang dasar-dasar teori yang digunakan untuk
melakukan penulisan laporan skripsi. berisikan tentang konsep data mining, dan
teknologi yang menunjuang pembuatan aplikasi.
BAB III ANALISIS DAN PERANCANGAN
Pada bab ini berisikan kebutuhan sistem aplikasi data mining
menggunakan algoritma C4.5 untuk memprediksi tingkat kelulusan mahasiswa
pada Universitas Darma Persada, baik berupa analisis kebutuhan data, desain,
rancangan UML dan form-form yang ada pada aplikasi yang akan dibuat.
BAB IV IMPLEMENTASI HASIL
Pada bab ini menguraikan apa yang telah dibuat mengenai aplikasi data
mining menggunakan algoritma C4.5 untuk memprediksi tingkat kelulusan
mahasiswa pada universitas darma persada. Bab ini berisikan tampilan aplikasi
yang dibuat serta penjelasannya.
7
BAB V KESIMPULAN DAN SARAN
Pada bab ini membahas tentang kesimpulan yang diperoleh dari hasil
penelitian, dan juga beberapa saran yang dapat diberikan untuk Universitas Darma
Persada.
8
BAB II
LANDASAN TEORI
2.1 Data Mining
Data Mining adalah suatu istilah yang digunakan untuk menguraikan
penemuan pengetahuan di dalam basis data. Data Mining adalah proses yang
menggunakan teknik statistik, matematika, kecerdasan buatan, machine learning
untuk mengekstraksi dan mengidentifikasi informasi yang bermanfaat dan
pengetahuan yang terkait dari berbagai basis data besar (Kusrini & Emha Taufiq
Luthfi, 2009:25).
Data Mining adalah salah satu bidang yang berkembang pesat
karenabesarnya kebutuhan akan nilai tambah dari database skala besar yang
makin banyak terakumulasi sejalan dengan pertumbuhan teknologi informasi. (Iko
Pramudiono, 2003:1).Data mining, sering juga disebut Knowledge Discovery in
Database (KDD),adalah kegiatan yang meliputi pengumpulan, pemakaian data
historis untuk menemukan keteraturan, pola atau hubungan dalam set data
berukuran besar. Keluaran dari data mining ini bisa dipakai untuk memperbaiki
pengambilan keputusan di masa depan. Sehingga istilah pattern recognition jarang
digunakan karena termasuk bagian dari data mining (Azevedo, A. Santos &
Manuel F,2008:30).
Menurut Gartner Group, data mining adalah suatu proses menemukan
hubungan yang berarti, pola, dan kecenderungan dengan memeriksa dalam
sekumpulan besar data yang tersimpan dalam penyimpanan dengan menggunakan
teknik pengenalan pola seperti teknik statistik dan matematika (Larose, 2005).
9
2.1.1 Teknik Data Mining Klasifikasi
Teknik Klasifikasi dalam data mining dikelompokkan ke dalam Teknik
Pohon Keputusan, Bayesian (Naïve Bayesian dan Bayesian Belief Networks),
Jaringan Saraf Tiruan (Backpropagation), Teknik yang berbasis konsep dari
penambangan aturan-aturan asosiasi, dan teknik lain (K-Nearest Neighboor,
algoritma genetik, teknik dengan pendekatan himpunan rough dan fuzzy)
Setiap teknik memiliki kelebihan dan kekurangannya sendiri. Data dengan
profil tertentu mungkin paling optimal jika diklasifikasi dengan teknik tertentu,
atau dengan kata lain, profil data tertentu dapat mendukung termanfaatkannya
kelebihan dari teknik ini.
Secara umum, Proses Klasifikasi dapat dilakukan dalam dua tahap, yaitu
proses belajar dari data training dan klasifikasi kasus. Pada proses belajar,
Algoritma Klasifikasi mengolah data training untuk menghasilkan sebuah model.
Setelah model diuji dan dapat diterima, pada tahap klasifikasi, model tersebut
digunakan untuk memprediksi kelas dari kasus baru untuk membantu proses
pengambilan keputusan (Han dkk.,2012).
2.1.2 Pohon Keputusan
Pohon Keputusan atau Decision Tree merupakan representasi sederhana
dari teknik klasifikasi untuk sejumlah kelas berhingga, dimana simpul internal
maupun simpul akar ditandai dengan nama atribut, rusuk-rusuknnya diberi label
nilai atribut yang mungkin dan simpul daun ditandai dengan kelas-kelas yang
berbeda.(Fajar Astuti, 2013).
10
2.1.3 Algoritma C4.5
Secara umum algorima C4.5 untuk membangun pohon keputusan adalah
sebagai berikut :
1. Pilih atribut sebagai node akar.
2. Buat cabang untuk tiap-tiap nilai.
3. Bagi kasus dalam cabang.
4. Ulangi proses untuk setiap cabang sampai semua kasus pada cabang
memiliki kelas yang sama (Kusrini & Luthfi, 2011)
Untuk memilih atribut sebagai node akar, didasarkan pada nilai Gain
tertinggi dari atribut-atribut yang ada. Untuk menghitung Gain digunakan rumus
seperti tertera dalam persamaan berikut :
Setelah mendapatkan nilai Gain, ada satu hal lagi yang perlu kita lakukan
perhitungan, yaitu mencari nilai Entropy. Entropy digunakan untuk menentukan
seberapa informatif sebuah masukan atribut untuk menghasilkan keluaran atribut.
Rumus dasar dari Entropy tersebut adalah sebagai berikut :
11
Untuk memudahkan penjelasan mengenai algoritma C4.5, berikut ini
disertakan contoh kasus yang dituangkan dalam Tabel 2.1.
Tabel 2.1 Keputusan Bermain Tenis (Kusrini & Luthfi, 2011)
NO OUTLOOK TEMPERATUR HUMIDITY WINDY PLAY
1. Sunny Hot High False No
2. Sunny Hot High True No
3. Cloudy Hot High False Yes
4. Rainy Mid High False Yes
5. Rainy Cool Normal False Yes
6. Rainy Cool Normal True Yes
7. Cloudy Cool Normal True Yes
8. Sunny Mild High False Yes
9. Sunny Cool Normal False Yes
10. Rainy Mild Normal False Yes
11. Sunny Mild Normal True No
12. Cloudy Mild High True Yes
13. Cloudy Hot Normal False Yes
14. Rainy Mild High True No
Dalam kasus yang tertera pada Tabel 2.1 akan dibuat pohon keputusan
untuk menentukan main tenis atau tidak dengan melihat keadaan cuaca,
temparatur, kelembaban dan keadaan angin.
12
Selanjutnya data tersebut akan diproses sesuai langkah-langkah
membentuk pohon keputusan. Berikut ini adalah penjelasan lebih terperinci:
Hitung jumlah kasus, yakni jumlah kasus untuk keputusan Yes dan jumlah
keputusan No, dan Entropy dari semua kasus dan kasus yang dibagi berdasarkan
atribut-atribut yang digunakan. Setelah itu lakukan perhitungan Gain untuk setiap
atribut. Hasil perhitungan dapat dilihat pada Tabel 2.2.
Tabel 2.2 Perhitungan Node 1 (Kusrini & Luthfi, 2011)
Node Jumlah Kasus No Yes Entropy Gain
1 Total 14 4 10 0.863
Outlook 0.258
Cloudy 4 0 4 0
Rainy 5 1 4 0.721
Sunny 5 3 2 0.97
Temperature 0.183
Cool 4 0 4 0
Hot 4 2 2 1
Mild 6 2 4 0.918
0.370
Humidity
High 7 4 3 0.985
Normal 7 0 7 0
Windy 0.005
False 8 2 6 0.811
True 6 4 2 0.918
Dari hasil pada Tabel 2.2 dapat diketahui bahwa atribut dengan Gain
tertinggi adalah Humidity yaitu sebesar 0.37. Dengan demikian Humidity dapat
menjadi node akar. Ada dua nilai atribut dari Huminity yaitu High dan Normal.
Dari kedua nilai atribut tersebut, nilai atribut Normal sudah mengklasifikasikan
kasus menjadi satu keputusan Yes, sehingga tidak perlu dilakukan perhitungan
lenih lanjut, tetapi untuk nilai atribut High masih perlu dilakukan perhitungan
13
lagi. Setelah dilakukan perhitungan , maka terbentuklah pohon keputusan
sementara seperti pada Gambar 2.1.
Gambar 2.1 Pohon Keputusan Hasil Perhitungan Node 1(Kusrini &
Luthfi, 2011)
Hitung kembali jumlah kasus, Entropy dari semua kasus yang dibagi
berdasarkan atribut yang dapat menjadi node akar dari nilai atribut Humidity-
High. Setelah itu lakukan perhitungan Gain untuk masing-masing atribut. Hasil
perhitungan ditunjukkan pada Tabel 2.3.
Tabel 2.3 Perhitungan Node 1.1 (Kusrini & Luthfi, 2011)
Node Jumlah Kasus No Yes Entropy Gain
1.1 Humidity-Gain 7 4 3 0.965
Outlook 0.699
Cloudy 2 0 2 0
Rainy 2 2 1 1
Sunny 3 3 0 0
Temperature 0.02
Cool 0 0 0 0
Hot 3 2 1 0.918
Mild 4 2 2 1
Windy 0.02
False 4 2 2 1
True 3 2 1 0.918
14
Dari Tabel 2.3 dapat diketahui bahwa atribut dengan Gain tertinggi adalah
Outlook yaitu sebesar 0,67. Dengan demikian Outlook dapat menjadi node cabang
dari nilai atribut Humidiy – High . Dari ketiga nilai atribut Outlook, nilai atribut
Cloudy sudah mengklasifikasi kasus 1 yaitu keputusan Yes dan nilai atribut Sunny
sudah mengklasifikasi kasus 1 yaitu keputusan No. Pohon keputusan yang
dihasilkan sampai tahap ini ditunjukkan pada Gambar 2.2.
Gambar 2.2 Pohon Keputusan Hasil Perhitungan Node 1.1 (Kusrini &
Luthfi, 2011)
Gambar 2.2 menunjukkan hasil perhitungan node 1.1 dimana nilai atribut
Outlook yang belum mengklasifikasi kasus menjadi 1 yaitu Rainy. Dengan
demikian nilai atribut Outlook – Rainy menjadi node akar untuk perhitungan
Node 1.1.2. Hitung jumlah kasus, jumlah kasus untuk keputusan Yes, jumlah
kasus untuk keputusan No, dan Entropy dari semua kasus dan kasus yang dibagi
berdasarkan atribut Temperature dan Windy yang dapat menjadi node cabang dari
15
nilai atribut Outlook, yakni Rainy. Setelah itu hitung nilai Gain untuk masing-
masing atribut. Hasil perhitungan ditunjukkan pada Tabel 2.4.
Tabel 2.4 Perhitungan Node 1.1.2 (Kusrini & Luthfi, 2011)
Node Jumlah
Kasus
No Yes Entropy Gain
1.1.2 Humidity-High DAN
Outlook-Rainy
2 1 1 1
Temperature 0
Cool 0 0 0 0
Hot 0 0 0 0
Mild 2 1 1 1
Windy 1
False 1 0 1 0
True 1 1 0 0
Dari hasil pada Tabel 2.3 dapat diketahui bahwa atribut dengan Gain
tertinggi adalah Windy dengan nilai 1. Dengan demikian Windy dapat menjadi
node cabang dari nilai atribut Rainy. Ada dua nilai atribut dari Windy yaitu True
dan False. Dari kedua nilai atribut tersebut, nilai atribut False sudah
mengklasifikasi kasus menjadi 1 yaitu keputusan Yes dan nilai atribut True sudah
mengklasifikasikan kasus menjadi satu dengan keputusan No, sehingga tidak
perlu lagi perhitungan lebih lanjut untuk nilai atribut ini. Pohon keputusan yang
terbentuk sampai tahap ini ditunjukkan pada Gambar 2.3.
16
Gambar 2.3 Pohon Keputusan Hasil Perhitugan Node 1.1.2 (Kusrini & Luthfi,
2011)
Dengan memperhatikan pohon keputusan pada Gambar 2.3, diketahui
bahwa semua kasus sudah masuk dalam kelas. Dengan demikian, pohon
keputusan pada Gambar 2.3 merupakan pohon keputusan terakhir yang terbentuk.
2.2 Definisi Sistem
Menurut Bambang Hariyanto (2008) Sistem adalah kumpulan elemen
yang saling berinteraksi untuk mencapai satu tujuan tertentu.
Beberapa prinsip umum sistem adalah sebgai berikut :
1. Sistem selalu merupakan bagian sistem lebih besar. Sistem dapat dipartisi
menjadi subsistem-subsistem yang lebih kecil.
2. Sistem lebih terspesialisasi akan kurang dapat beradaptasi untuk menghadapi
keadaan-keadaan berbeda.
17
3. Lebih besar ukuran sistem maka akan memerlukan lebih banyak sumber daya
untuk operasi dan pemeliharaan.
4. Sistem senantiasa mengalami perubahan, tumbuh dan berkembang.
2.3 Perangkat Lunak
Menurut Rosa dan Salahuddin (2011), Perangkat lunak adalah program
komputer yang terasosiasi dengan dokumentasi perangkat lunak seperti
dokumentasi kebutuhan model desain, dan cara penggunaan. Sebuah program
komputer tanpa terasosiasi dengan dokumentasinya maka belum dapat disebut
perangkat lunak. Sebuah perangkat lunak juga sering disebut dengan sistem
perangkat lunak, sehingga dapat diartikan sebuah sistem yang memiliki hubungan
satu sama lain untuk memenuhi program pelanggan. Pelanggan adalah orang atau
organisasi yang membeli atau memesan perangkat lunak dari pengembang
perangkat lunak. Sedangkan user atau pengguna perangkat lunak adalah orang
yang memiliki kepentingan utuk memakai atau menggunakan perangkat lunak
untuk memudahkan pekerjaannya.
2.4 Internet
2.4.1 Sejarah Internet
Asal usul internet berasal dari jaringan komputer yang dibentuk pada
tahun 1970-an. Jaringan komputer tersebut disebut dengan ARPAnet, (US Defense
Advanced Research Projects Agency). yaitu jaringan komputer yang dibentuk oleh
departement pertahanan Amerika Serikat. ARPAnet dibangun dengan sasaran
untuk membuat suatu jaringan komputer yang tersebar untuk menghindari
pemusatan informasi di satu titik yang dipandang rawan untuk dihancurkan
apabila terjadi peperangan. Dengan cara ini diharapkan apabila satu bagian dari
18
jaringan terputus, maka jalur yang melalui jaringan tersebut dapat secara otomatis
dipindahkan ke saluran lainnya. Selanjutnya, jaringan komputer tersebut
diperbarui dan dikembangkan, dan sekarang penerusnya menjadi tulang punggung
global untuk sumber daya informasi yang disebut dengan internet. (Irwansyah
Edy, 2014).
2.4.2 Web
Perkembangan dunia internet telah melahirkan suatu fasilitas layan baru,
yaitu web, yang merupaka layanan terpenting internet. Dewasa ini, fasilitas web
mengizinkan pengakses untul mengakses dan berinteraksi dengan teks, grafik,
animasi, foto, suara dan video. Web secara fisik adalah kumpulan komputer
pribadi, web browser, koneksi ke ISP, komputer server, router, dan switch yang
digunakan untuk mengalirkan informasi dan menjadi wahana pertama sebagai
pihak terkait. Web dibagi menjadi beberapa jenis, yaitu:
a. Web Search Engine: adalah web yang memiliki kemampuan untuk
melakukan pencarian dokumen berdasarkankata kunci tertentu. Contoh: Google
dan Yahoo
b. Web Portal: adalah web yang berisi kumpulan link, search engine, dan
informasi. Contoh: Yahoo dan AOL.
c. Web Perusahaan: adalah web yang mendeskripsikan suatu perusahaan,
layanan fasilitas, dan segal sesuatu tentang perusahaan. Contoh: indosat.
d. Web Pribadi: adalah web yang memberikan profil pemilik web.
Web dikenal dengan sistem client-server. Komputer pengguna disebut
komputer client, sedangka komputer yang di akses disebut server. Web
menggunakan protokol yang disebut HTTP (HyperText Transfer Protocol) yang
19
berjalan pada TCP/IP. Perekat antar halaman web disebut Hyperlink dan
Hypertext. Agar dapat menjelajahi web, kita membutuhkan perangkat lunak yang
disebut web browser. Kemudian, membangun sebuah web ditulis pada bahasa
komputer yang dikenal Hypertext Markup Languange (HTML).
Pada prakteknya, bahasa komputer berbasis web tidak hanya HTML,
melainkan juga melibatkan bahasa pemrograman lain seperti PHP atau Perl.
Tujuannya adalah untuk membentuk halaman yang bersifat dinamis. Perlu
diketahui, aplikasi web itu sendiri dibagi menjadi Web statis dan Web Dinamis.
Web statis dibentuk dengan menggunakan HTML saja. Kekurangan
aplikasi seperti ini terletak pada keharusan untuk memelihara program secara
terus-menerus untuk mengikuti setiap perubahan yang terjadi. Kelemahan ini
diatasi dengan model aplikasi web dinamis.
Dengan memperluas kemampuan HTML, yakni dengan menggunakan
perangkat lunak tambahan, perubahan informasi dalam halaman-halaman web
dapat ditangani melalui perubahan data, bukan melalui perubahan program.
Sebagai implementasinya, aplikasi dapat dikoneksikan ke basis data. Dengan
demikian, perubahan informasi dapat dilakukan olehoperator atau yang
bertanggung jawab terhadap kemuktakiran data, dan tidak menjadi tanggung
jawab pemrograman atau Webmaster. Pemrograman aplikasi web terdiri dari :
2.4.3 HTML
HTML kependekan dari Hyper Text Markup Languange. Dokumen HTML
adalah file teks murni yang dapat di buat dengan editor teks sembarang. Dokumen
20
ini dikenal sebagai web page. Dokumen HTML merupakan dokumen yang
disajikan dalam browser web surfer. Dokumen ini umumnya berisi informasi atau
interface aplikasi di dalam internet. Ada dua cara untuk membuat sebuah web
page: dengan HTML editor atau dengan editor teks biasa (misalnya notepad).
Dokumen HTML disusun oleh elemen-elemen. “Elemen” merupakan
istilah bagi komponen-komponen dasar pembentuk dokumen HTML. Beberapa
contoh elemen adalah: head, body, table, paragraf, dan list. Elemen dapat berupa
teks murni, atau bukan teks, atau keduanya.(Abdul Kadir, 2008)
2.4.4 CSS
CSS merupakan singkatan dari Cascading Style Sheet, merupakan fitur
baru dari HTML 4.0. hal ini diperlukan setelah melihat perkembangan HTML
menjadi kurang praktis karena web pages terlalu banyak dibebani hal-hal yag
berkaitan dengan faktor tampilan seperti font dan lain-lain. Untuk itu jika
kumpulan isi gaya (style) tersebut dikelolah secara terpisah maka manajemen
pages menjadi lebih mudah dan efisien. (Bambang Hariyanto, 2008)
2.4.5 PHP
Menurut Budi Raharjo (2011), PHP merupakan salah satu bahasa
pemrograman berbentuk skrip yang ditempatkan dalam server dan diproses di
server. Hasilnyalah yang dikirm ke klien, tempat pemakai menggunakan browser.
Secara khusus, PHP dirancang untuk membentuk aplikasi web dinamis.
Maksudnya, PHP mampu menghasilkana website yang secara terus-menerus
hasilnya bisa berubah-ubah sesuai dengan pola yang diberikan. Hal tersebut
tergantung pada permintaan client browser-nya (bisa menggunakan browser
21
Opera, Internet Explorer, Mozzila,, dan lain-lain). Umumnya, pembuatan web
dinamis berhubungan erat dengan Databse sebagai sumber data.
PHP mempunyai fungsi yang sama dengan skrip-skrip seperti ASP (Active
Server Page), Cold Fusion, ataupun Perl. Namu, Perlu diketahui bahwa PHP
sebenarnya bisa dipakai secara Command Line. Artinya, skrip PHP dapat
dijalankan tanpa melibatkan web server maupun browser.
Model kerja HTML diawali dengan permintaan suatu halaman web oleh
browser. Berdasarkan URL (Uniform Resource Locator) atau dikenal dengan
sebutan alamat internet, browser mendaptkan alamat dari web browser,
mengidentifikasi alamat yang dikehendaki, dan menyampaikan segala informasi
yang dibutuhkan oleh web server. Selanjutnya, web server akan mencarikan file
yang diminta dan memberikan isinya ke web browser (atau yang biasa disebut
browser saja). Browser yang mendapatkan isinya segera melakukan proses
penerjemah kode HTML dan menampilkan ke layar pemakai.
Bagaimana halnya yang diminta adalah sebuah halaman PHP? Prinsipnya
serupa dengan kode HTML. Hanya saja, ketika berkas PHP yang diminta
didapatkan oleh web server, isinya segera dikirimkan ke mesin PHP dan
mesininilah yang memproses dan memberikan hasilnya (berupa kode HTML) ke
Web Server. Selanjutnya, web server menyampaikan ke klien.
2.5 Basis Data MySQL
Menutut Bambang Hariyanto (2008), data adalah rekaman mengenai
fenomena/fakta yang ada atau yang terjadi. Data pada pokonya adalah refleksi
fakta yang ada. Data mengenai fakta-fakta penting organisasi harus direkam dan
dikelola secara baik sehingga dapat dipakai/diakses secara efisien sehingga efektif
22
mendukung operasi dan pengendalian organisasi. Data merupakan sumber daya
penting pada manajemen modern. Untuk itu, organisasi perlu melakukan penataan
dan manajemen data yang baik agara data yang dimiliki organisasi dapat berdaya
guna secara maksimal.
Basisdata adalah kumpulan data (elementer) yang secara logic berkaitan
dalam merepresentasikan fenomena/fakta secara terstruktur dalam domain tertentu
untuk mendukung aplikasi pada sistem tertentu. Basisdata adalah kumpulan data
yang saling berhubungan yang merefleksikan fakta-fakta yang terdapat di
organisasi. Basisdata mendeskripsikan state organisasi/perusahaan/sistem. Saat
satu kejadian muncul si dunia nyata mengubah state organisasi/perusahaan/sistem
maka satu perubahan pun harus dilakukan terhdadap data yang disimpan di
basisdata. Basisdata merupakan komponen utama sistem informasi karena semua
informasi untuk pengambilan keputusan berasal dari data di basisdata.
Pengelolaaan basisdata yang buruk dapat mengakibatkan ketidaktersediaan data
penting yang digunakan untuk menghasilkan informasi yang diperlukan dalam
pengambilan keputusan.
Sistem manajemen basisdata atau DBMS (Database Management System)
adalah perangkat lunak untuk mendefinisikan, menciptakan, mengelola, dan
mengendalikan pengsaksesan basisdata. Fungsi sistem manajemen basisdata saat
ini yang penting adalah menyediakan basis untuk sistem informasi manjemen.
MySQL adalah salah satu jenis database server yang sangat terkenal
kepopulerannya disebabkan MySQL menggunakan SQL sebagai bahasa dasar
untuk mengakses databasenya. Selain itu ia bersifat open source (tidak perlu
23
membayar untuk menggunakannya) pada pelbagai platform (kecuali untuk jenis
Enterprise, yang bersifat komersial).
MySQL termasuk jenis RDBMS (Relational Database Management
System). Itulah sebabnya, istilah seperti tabel, baris, dan kolom digunakan pada
MySQL. Pada MySQL, sebuah database mengandung satu atau beberapa kolom.
(Bambang Hariyanto, 2008)
2.6 UML
UML itu singkatan dari Unified Modelling Language. Sesuai dengan kata
terakhir dari kepanjangannya, UML merupakan salah satu bentuk language atau
bahasa. Menurut pencetusnya, UML didefinisikan sebagai bahasa visual untuk
menjelaskan, memberikan spesifikasi, merancang, membuat model, dan
mendokumentasikan aspek-aspek dari sebuah sistem.
Karena tergolong bahasa visual, UML lebih mengedepankan penggunaan
diagram untuk menggambarkan aspek dari sistem yang sedang dimodelkan.
Memahami UML itu sebagai bahasa visual itu penting, karena penekanan tersebut
membedakannya dengan bahasa pemrograman yang lebih dekat ke mesin. Bahasa
visual lebih dekat ke mental model pikiran kita, sehingga pemodelan
menggunakan bahasa visual bisa lebih mudah dan lebih cepat dipahami
dibandingkan apabila dituliskan dalam sebuah bahasa pemrograman.
UML adalah salah satu bentuk notasi atau bahasa yang sama yang
digunakan oleh professional dibidang software untuk menggambarkan atau
memodelkan sebuah system software. Sebelumnya ada banyak notasi atau bahasa
lain untuk mencapai keperluan yang sama misalnya DFD (Data Flow Diagram).
24
Tetapi sejak matang dan populernya teknologi pemrograman, perancangan, dan
analisis berorientasi objek, UML telah menjadi de facto standard language.
Ada tiga cara dalam memakai UML dalam melakukan pemodelan system:
1. UML sebagai sketsa
UML digambarkan dalam sketsa coretan-coretan dalam kertas atau
whitboard secara tidak formal. Biasanya digunakan dalam sesi diskusi tim untuk
membahas aspek tertentu dalam tahap analisis dan perancangan.
2. UML sebagai blueprint system
Seperti diagram kelistrikan adalah blueprint dari komponen atau produk
yang akan dihasilkan, UML juga bisa menggambarkan blueprint yang identik
untuk sebuah system software.
3. UML sebagai bahasa pemrograman
UML berfungsi sebagai bahasa pemrograman mencoba melakukan
semuanya dengan UML sampai kepada produk jadinya. Analisis dan perancangan
dilakukan dengan diagram-diagram yang ada dalam UML, sementara sebuah tool
atau generator bisa menghasilkan produk akhir dari diagram-diagram ini.
Diagram-diagram yang terdapat dalam UML antara lain:
• use case diagram
• class diagram
• statechart diagram
• activity diagram
• sequence diagram
• collaboration diagram
25
• component diagram
• deployment diagram ( Munawar, 2005).
2.6.1 Use Case
Use case diagram menggambarkan fungsionalitas yang diharapkan dari
sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan
“bagaimana”. Sebuah use case merepresentasikan sebuah interaksi antara aktor
dengan sistem. Use case merupakan sebuah pekerjaan tertentu, misalnya login ke
sistem, meng-create sebuah daftar belanja, dan sebagainya.
Seorang/sebuah aktor adalah sebuah entitas manusia atau mesin yang
berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu.
Use case diagram dapat sangat membantu bila kita sedang menyusun
requirement sebuah sistem, mengkomunikasikan rancangan dengan klien, dan
merancang test case untuk semua feature yang ada pada sistem.Sebuah use case
dapat meng-include fungsionalitas use case lain sebagai bagian dari proses dalam
dirinya. Secara umum diasumsikan bahwa use case yang di-include akan
dipanggil setiap kali use case yang meng-include dieksekusi secara normal.
Sebuah use case dapat di-include oleh lebih dari satu use case lain,
sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik keluar
fungsionalitas yang common. Sebuah use case juga dapat meng-extenduse case
lain dengan behaviour-nya sendiri. Sementara hubungan generalisasi antar use
case menunjukkan bahwa use case yang satu merupakan spesialisasi dari yang
lain.
26
Diagram use case menunjukan 3 aspek dari sistem yaitu Actor, use case
dan system/sub system boundary. Actor mewakili peran orang, system yang lain
atau alat ketika berkomunikasi dengan use case.
Actor Actor
Gambar 2.4 Use Case Model (Munawar, 2005)
2.6.2 Activity Diagram
Menurut (Romi Satria Wahono, 2003) Pada dasarnya Diagram aktivitas
adalah Diagram flowchart yang diperluas yang menunjukkan aliran kendali satu
aktivitas ke aktivitas lain. Kegunaan diagram ini adalah untuk memodelkan
workflow atau jalur kerja, memodelkan operasi, bagaimana objek-objek bekerja,
aksi-aksi dan pengaruh terhadap objek. Simbol-simbol yang terdapat dalam
Activity Diagram, diantaranya sebagai berikut :
Tabel 2.5 Simbol Activity Diagram (Romi Satrio Wahono, 2003)
Keterangan Simbol
Titik Awal atau permulaan.
Titik Akhir atau akhir dari
aktivitas.
Aktiviti, atau aktivitas yang
dilakukan oleh aktor.
Decision, atau pilihan untuk
mengambil keputusan.
Arah tanda panah alur proses.
Sistem
Use Case
27
Activity diagram menunjukkan apa yang terjadi, tetapi tidak menunjukkan
siapa yang melakukan apa. Dalam pemprograman hal tersebut tidak menunjukkan
class mana yang bertanggungjawab atas setiap action. Pada pemodelan bisnis, hal
tersebut tidak bisa menunjukkan organisasi mana yang menjalankan sebuah
action. Swimlane adalah sebuah cara untuk mengelompokan activity berdasarkan
actor (mengelompokkan activity dari sebuah urutan yang sama). Actor bisa ditulis
nama actor ataupun sekaligus dengan lambang actor (stick figure) pada usecase
diagram. Swimlane digambarkan secara vertikal, walaupun terkadang
digambarkan secara horizontal.
Activity diagram merupakan salah satu diagram yang umum digunakan
dalam UML untuk menjabarkan proses atau aktivitas dari aktor. Sebagai contoh,
pelanggan melakukan login (masuk) pada halaman website untuk bergabung, jika
pelanggan belum terdaftar, maka akan ditolak oleh sistem dan dikembalikan.
Proses penjabarannya adalah sebagai berikut :
Gambar 2.5 Activity Diagram (Romi Satrio Wahono, 2003)
Di dalam Activity diagram tersebut dijelaskan bahwa user melakukan proses login
untuk dapat memasuki area sistem, jika proses login dan/atau user belum
28
teregistrasi, maka user akan ditolak oleh sistem tersebut dan diberi pesan error.
Selain itu, bila user telah teregistrasi dan memasukkan kode login dengan benar
maka akan diberi akses untuk masuk ke sistem, dan diberikan pesan sukses. User
dapat logout (keluar) untuk mengakhiri sesi.
2.6.3 Sequence Diagram
Menurut Sri Dharwiyanti (2003) Sequence Diagram adalah suatu diagram
yang digunakan untuk memodelkan skenario penggunaan. Sekenario penggunaan
adalah barisan kejadian yang terjadi selama satu kesekusi sistem. Sequence
diagram digunakan untuk :
1. Overview perilaku sistem.
2. Menunjukkan objek-objek yang diperlukan.
3. Mendokumentasikan skenario dari suatu use-case
4. Memeriksa jalur-jalur pengaksesan
Gambar 2.6 contoh Sequence Diagram (Sri Dharwiyanti, 2003)
29
BAB III
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Tahapan analisis system dilakukan setelah tahap perencanaan sistem
(system planning) dan sebelum tahap desain sistem (system design). Tahapan alisis
merupakan tahap yang kritis dan sangat penting, karena kesalahan di tahap
selanjutnya.
3.1.1 Analisis Masalah
Pada data mahasiswa Universitas Darma Persada tahun ajaran 2008/2009
program sarjana terdata banyak mahasiswa yang tidak lulus tepat waktu. Artinya
terjadi ketidakseimbangan antara jumlah mahasiswa aktif dan jumlah kelulusan
pada tahun yang ditargetkan, yaitu tahun 2012.
Berdasarkan masalah tersebut, pihak akademik mensinyalir adanya faktor-
faktor yang dapat mempengaruhi kelulusan yaitu akademik. Dengan
menggunakan data akademik mahasiswa dan data induk mahasiswa yang terekam
pada basis data kampus, data-data tersebut dapat menjadi solusi dalam
memecahkan masalah tersebut dengan mengklasifikannya sehingga menjadi
sebuah pengetahuan berbentuk pohon keputusan. Dengan aturan-aturan yang
dihasilkan oleh pohon keputusan diharapkan digunakan untuk memprediksi
kelulusan mahasiswa yang masih aktif.
3.1.2 Analisis Sistem Yang Berjalan
Sistem pendukung keputusan yang selama ini digunakan untuk
menampilkan statistik data mahasiswa hanya sebatas memberikan informasi saja
30
seperti grafik jumlah mahasiswa aktif per tahun. Aplikasi yang ada belum bisa
menampilkan knowledge yang dapat digunakan untuk memprediksi kelulusan.
3.1.3 Analisis Kebutuhan Data
Data yang akan digunakan dalam membentuk knowledge berupa pohon
keputusan untuk memprediksi kelulusan mahasiswa aktif yang telah menempuh
minimal 4 semester adalah data mahasiswa dan data akademik yang tersimpan
dalam basis data.
Berdasarkan observasi yang penulis lakukan, beberapa variabel yang dapat
diambil sebagai penentu keputusan dari data-data yang ada di antaranya sebagi
berikut :
a. Nama Mahasiwa
b. NIM
c. Jenis Kelamin
d. Nilai UN
e. Kelas Perkuliahan
f. Nilai Index Prestasi 8 Semester
g. Tahun Lulus
Data kasus akan dibagi menjadi dua jenis data yaitu data latih dan data uji.
Data latih adalah data yang akan dipelajari dalam membetuk pohon keputusan,
sementara data uji adalah data yang akan digunakan untuk pengujian pohon
keputusan yang dihasilkan.
3.2 RancanganSistem
Dalam merancang sistem, penulis menggunakan metodologi perancangan
SDLC (Software Development Life Cycle) jenis waterfall. Perancangan sistem
31
dibuat menggunakan UML(Unified Modeling Language) Diagram. Diagram yang
digunakan untuk menggambarkan perancangan aplikasi data mining adalahUse
Case Diagram, Activity Diagram, dan Sequence Diagram.
3.2.1 Use Case Diagram
Berikutadalahgambarrancangan use case dari sistem yang diusulkan.
Gambar 3.1 Use Case Diagram Sistem yang diusulkan
Gambar 3.1 di atas menjelaskan bahwa user yang akan menjadi actor
dalam sistem yaitu Kepala Jurusan, Pembimbing Akademik, dan Mahasiswa.
Semua Case dapat dilakukan oleh Kajur, sedangkan PA hanya dapat melihat hasil
dan prediksi saja.
3.2.2 Activity Diagram
Setiap proses yang berjalan pada system digambarkan melalui rancangan
Activity Diagram berikut untuk memberikan penjelasan alur sistem.
32
3.2.2.1 Proses Melihat Data Mahasiswa
Gambar3.2 Activity Diagram Mengelola Data Mahasiswa
Pada Gambar 3.2 diatas dijelaskan bahwa untuk dapat mengelola data
mahasiswa, user harus melakukan proses login terlebih dahulu dengan
memasukkan username dan password. Pengelolaan data meliputi penambahan
data baru dengan mengisi form atau dengan mengunduh file, menghapus dan
mengubah data pada tabel.
33
3.2.2.2 Proses Mining
Gambar 3.3 Activity Diagram Proses Mining
Pada Gambar 3.3 diatas dijelaskan bahwa untuk dapat melakukan proses
mininng, user harus melakukan proses login terlebih dahulu dengan memasukkan
username dan password. Selama proses mining sistem bekerja memproses data
mahasiswa yang menjadi data training.
3.2.2.3 Proses Melihat Aturan
Dalam proses melihat aturan, user harus melakukan proses mining karena
aturan terbetuk oleh pohon keputusan hasil proses mining.
34
Gambar3.4 Activity Diagram Proses Melihat Aturan
Pada Gambar 3.4 diatas dijelaskan bahwa untuk dapat melihat aturan, user
harus melakukan proses login terlebih dahulu dengan memasukkan username dan
password.
3.2.2.4 Proses Melihat Hasil Mining
Pada Gambar 3.5 dibawah, dijelaskan bahwa untuk dapat melihat hasil,
user harus melakukan proses login terlebih dahulu dengan memasukkan username
dan password.
35
Gambar3.5 Activity Diagram ProsesMelihat Hasil
3.2.2.5 Proses Prediksi Kelulusan
Pada Gambar 3.6 dibawah, dijelaskan bahwa untuk dapat melakukan
prediksi kelulusan, user harus melakukan proses login terlebih dahulu dengan
memasukkan username dan password. Pastikan data yang akan dimasukkan sudah
memenuhi seperti nilai Indeks Prestasi Semester tentunya hanya bias diisi oleh
mahasiswa aktif tahun ke-3 atau lebih. Hasil yang ditampilkan berdasarkan hasil
proses pembelajaran data mahasiswa yang sudah menempuh 8 semester.
36
Gambar 3.6 Activity Diagram Proses Prediksi Kelulusan
3.2.3 Sequence Diagram
Pada sequence diagram aplikasi ini, keseluruhan diagram
menggunakan user Kajur karena memiliki interaksi terhadap semua case /
state. Berikut adalah gambar rancangan sequence diagram dari aplikasi
yang diusulkan :
37
3.2.3.1 Sequence Diagram Melihat Data Kasus
Gambar 3.7 Sequence Diagram melihat data kasus
Gambar 3.7 di atas menjelaskan kajur dapat melihat informasi data kasus
yang muncul dalam rancangan aplikasi seperti Nama Mahasiswa, Nilai IPS 1
hingga 8, dan Status Kelulusan.
3.2.3.2 Sequence Diagram Melakukan Proses Mining
Gambar 3.8 Sequence Diagram Proses Mining
: KajurLogin menu utama Pilih Menu Data Mahasiswa
1 : memasukkan username dan password()
2 : masuk()
3 : memilih()
: Kajur Login menu utama form proses mining
1 : masukkan username dan password()
2 : masuk()
3 : memilih()
38
Gambar 3.8 di atas menjelaskan kajur dapat melakukan proses mining
yang menyebabkan tampilnya hasil, pohon keputusan dan aturan.
3.2.3.3 Sequence Diagram Melihat Aturan
Gambar 3.9 di bawah menjelaskan kajur dapat melihat aturan yang muncul
hasil dari pembelajaran data mahasiswa.
Gambar 3.9 Sequence Diagram melihat aturan
3.2.3.4 Sequence Diagram melihat hasil
Gambar 3.10 Sequence Diagram melihat hasil
: Kajur login menu utama menu C4.5, pohon keputusan lihat rule
1 : masukkan username dan password()
2 : masuk()
3 : memilih()4 : scrooll ke bawah()
: Kajur login menu utama menginput data prediksi melihat hasil prediksi
1 : masukkan username dan password()
2 : masuk()3 : masukkan data prediksi()
4 : melihat()
39
Gambar 3.10 di atas menjelaskan kajur dapat melihat hasil prediksi setelah
tercipta aturan.
3.2.3.5 Sequence Diagram prediksi kelulusan
Gambar 3.11 di bawah menjelaskan kajur dapat melihat hasil prediksi
siswa berdasarkan hasil dari pembelajaran data mahasiswa.
Gambar 3.11 Sequence Diagram prediksi kelulusan
3.3 Rancangan Database
Dalam merancang aplikasi data mining menggunakan algoritma C4.5
untuk memprediksi tingkat kelulusan mahasiswa pada Universitas Darma Persada
penulis merancang sebuah database dengan menggunakan MySQL.
Sebelum membuat tabel pada basis data, terlebih dahulu data yang didapat
harus dilakukan pra-proses untuk menghasilkan data kasus yang siap dipelajari
atau digali untuk menghasilkan keluaran pengetahuan berupa pohon keputusan.
Berikut ini langkah-langkah pre-proses tersebut :
a. Data Selection
Langkah pertama yang harus dilakukan yaitu data selection, yaitu dengan
menetapkan atribut tahun kelulusan sebagai variabel keputusan. Sedangkan
untuk variabel penentu diantaranya : jenis kelamin, jurusan, nilai UN, kelas
40
perkuliahan, IPS1, IPS2, IPS3, IPS4, IPS5, IPS6, IPS7, IPS8, dan Tahun
Kelulusan.
b. Data Cleaning
Pada proses ini atribut yang nilainya masih kosong akan dihilangkan.
Berdasarkan data mahasiswa yang akan diteliti yaitu angkatan 2008-2009, atribut
yang akan dihilangkan ialah nilai UN dan kelas perkuliahan. Demikian juga
pada setiap data mahasiwa yang nilai atributnya masih ada yang kosong akan
dihilangkan.
Atribut atau nilai yang kosong dapat disebabkan oleh banyak hal, seperti penon-
aktifan mahasiswa yang terjadi, sehingga tidak semua jumlah IPS yang
seharusnya berjumlah delapan terpenuhi.
c. Data transformation
Setelah melakukan tahap data cleaning, langkah selanjutnya adalah
mentransformasi data menjadi data yang sesuai dengan kebutuhan algoritma. Pada
tahap ini, atribut yang akan ditransformasi ialah kedelapan nilai IPS dan tahun
kelulusan. Untuk transformasi data nilai IPS ialah dengan mengklasifikasikan
nilai IPS menjadi 4 kategori dengan detil sebagai berikut :
Tabel 3.1 Tabel Klasifikasi Nilai IPS
Nilai IPS Klasifikasi
0.00 – 2.00 Kurang Memuaskan
2.00 – 2.76 Memuaskan
2.76 – 3.50 Sangat Memuaskan
3.50 – 4.00 Cumlaude
41
Sedangkan untuk tranformasi data tahun kelulusan ialah dengan mengklasifikasi
menjadi 2 keputusan yakni tepat waktu dan tidak tepat waktu. Berikut
penjabaran klasifikasi tersebut :
Tabel 3.2 Tabel Klasifikasi Kelulusan
Tahun kelulusan Keputusan
<= 2012 Tepat waktu
>= 2012 Tidak tepat waktu
Hasil akhir rancangan data kasus akan dinamakan dengan
Data_mahasiswa yang akan dibahas pada perancangan tabel data_mahasiswa.
Setelah melalukan pra-proses data kasus, selanjutnya merancang tabel
penunjang lainnya. Berikut tampilan rancangan relasi tabel yang dibuat
berdasarkan kebutuhan :
Gambar 3.12 Rancangan Table Relational
42
3.3.1 Rancangan Tabel User
Tabel User adalah tabel yang berisikan data-data tentang user yang
bersangkutan dengan aplikasi. Tabel ini juga berguna pada saat memasuki aplikasi
dan aplikasi akan mengidentifikasi user berdasarkan field Level.
Tabel 3.3 Rancangan Tabel User
Field Tipe Data Values Key
Id_user Varchar 25 Primary
Password Varchar 50
Level Varchar 25
3.3.2 Rancangan Tabel Data_Mahasiswa
Tabel Mahasiswa merupakan salah satu tabel master yang mana berperan
sebagai masukan utama aplikasi data mining ini. Tabel ini berisi data-data
mahasiswa yang terdiri dari atribut-atribut yang dibutuhkan dalam proses
pembelajaran pola.
Tabel 3.4 RancanganTabel Data_Mahasiswa
Field Tipe Data Values Key
Id_data_mahasiswa Integer 10 Primary
Nim Varchar 10
Nama Varchar 100
Jenis_kelamin Varchar 5
Jurusan Varchar 25
Nilai_ips1 Varchar 10
Nilai_ips1_kategori Varchar 25
Nilai_ips2 Varchar 10
Nilai_ips2_kategori Varchar 25
Nilai_ips3 Varchar 10
Nilai_ips3_kategori Varchar 25
Nilai_ips4 Varchar 10
Nilai_ips4_kategori Varchar 25
Nilai_ips5 Varchar 10
Nilai_ips5_kategori Varchar 25
Nilai_ips6 Varchar 10
Nilai_ips6_kategori Varchar 25
Nilai_ips7 Varchar 10
Nilai_ips7_kategori Varchar 25
Nilai_ips8 Varchar 10
43
Field Tipe Data Values Key
Nilai_ips8_kategori Varchar 25
Class Varchar 25
Status_data Varchar 25
3.3.3 Perancangan Tabel Atribut
Tabel Atribut merupakan tabel yang berfungsi menampung nilai-nilai
setiap atribut yang didapat dari tabel data_mahasiswa dimana setiap iterasi akan
ada penghapusan atribut sampai proses perhitungan iterasi selesai pada saat proses
mining.
Tabel 3.5 Rancangan Tabel Atribut
Field Tipe Data Values Key
Id Integer 3 Primary
Atribut Varchar 50
Nilai_atribut Varchar 50
3.3.4 Perancangan Tabel Mining_c45
Tabel Mining_c45 adalah tabel yang berfungsi menyimpan data hasil
kalkulasi sementara selama proses iterasi dilakukan oleh sistem. Tabel ini akan
dikosongkan setiap proses iterasi berjalan.
Tabel 3.6 Rancangan Tabel Mining_c45
Field Tipe Data Values Key
Id Integer 11 Primary
Atribut Varchar 100
Nilai_atribut Varchar 100
Jml_kasus_total Varchar 5
Jml_kasus_tidak_tepat_waktu Varchar 5
Jml_kasus_tepat_waktu Varchar 5
Entropy Varchar 10
Inf_gain Varchar 10
Inf_gain_temp Varchar 10
Split_info Varchar 10
Split_info_temp Varchar 10
Gain_ratio Varchar 10
44
3.3.5 Perancangan Tabel Iterasi_c45
Tabel Iterasi_c45 berfungsi menyimpan seluruh perhitungan iterasi awal
hingga akhir yang berasal dari tabel mining_c45. Isi dari tabel ini akan
ditampilkan pada taampilan tabel perhitungan guna menjabarkan secara rinci
iterasi-iterasi perhitungan yang terjadi selama proses mining.
Tabel 3.7 Rancangan Tabel Iterasi_c45
Field Tipe_data Values Key
Id Integer 11 Primary
Iterasi Varchar 3
Atribut_gain_ratio_max Varchar 50
Atribut Varchar 50
Nilai_atribut Varchar 50
Jml_kasus_total Varchar 5
Jml_kasus_tidak_tepat_waktu Varchar 5
Jml_kasus_tepat_waktu Varchar 5
Entropy Varchar 10
Inf_gain Varchar 10
Split_info Varchar 10
Gain_ratio Varchar 10
3.3.6 Perancangan Tabel Pohon_keputusan_c45
Tabel pohon_keputusan_c45 memiliki fungsi untuk menyimpan atribut
root dan subtree yang diperoleh dari proses mining. Isi dari tabel ini akan
ditampilkan secara hierarki pada menu pohon keputusan.
Tabel 3.8 Rancangan Tabel Pohon_keputusan_c45
Field Tipe Data Values Key
Id Integer 4 Primary
Atribut Varchar 100
Nilai_atribut Varchar 100
Id_parent Char 3
Inf_kasus_tidak_tepat_waktu Varchar 5
Inf_kasus_tepat_waktu Varchar 5
Keputrusan Varchar 100
Diproses Varchar 10
Kondisi_atribut Varchar 255
Looping_konsdisi Varchar 15
45
3.3.7 Perancangan Tabel Rule_c45
Tabel Rule_c45 berfungsi menyimpan data-data aturan yang dihasilkan
dari proses generasi pohon_keputusan_c45.
Tabel 3.9 Rancangan Tabel Rule_c45
Field Tipe Data Values Key
Id Integer 4 Primary
Id_parent Integer 4
Rule Varchar 255
Keputusan Varchar 25
3.3.8 Perancangan Tabel Rule_penentu_keputusan
Tabel Rule_penentu_keputusan berfungsi menampung data-data Aturan
hasil proses kinerja. Tabel ini berguna saat proses penentu keputusan kelulusan.
Tabel 3.10 Rancangan Tabel Rule_penentu_keputusan
Field Tipe Data Values Key
Id Integer 5 Primary
Id_rule Integer 5
Atribut Varchar 255
Nilai_atribut Varchar 255
Keputusan Varchar 25
Cocok Varchar 15
Pohon Varchar 15
3.3.9 Perancangan TabelData_penentu_keputusan
Tabel Data_penentu_keputusan pada rancangan database ini berfungsi
sebagai penyimpan sementara atribut dan nilai atribut yang akan digunakan untuk
proses kinerja.
Tabel 3.11 Rancangan Tabel Data_penentu_keputusan
Field Tipe Data Values Key
Id Integer 5 Primary
Atribut Varchar 255
Nilai_atribut Varchar 255
46
3.3.10 Perancangan Tabel Data_Keputusan_kinerja
Tabel Data_keputusan_kinerja berfungsi menampung data mahasiswa
yang berstatus Data Training. Bertujuan untuk menampilkan perbandingan
keputusan asli dengan keputusan C4.5.
Tabel 3.12 Rancangan Tabel Data_keputusan_kinerja
Field Tipe Data Values Key
Id Integer 10 Primary
Id_data_mahasiswa Integer 10
Keputusan_asli Varchar 100
Keputusan_c45 Varchar 100
Id_rule_c45 Integer 5
3.3.11 PerancanganTabelData_keputusan
Tabel data_keputusan adalah tabel yang berfungsi menampung setiap
masukan data mahasiswa yang ingin diprediksi oleh system beserta hasil
keputusannya.
Tabel 3.13 RancanganTabel Data_keputusan
Field Tipe Data Values Key
Id_data_mahasiswa Integer 10 Primary
Nim Varchar 10
Nama Varchar 100
Jenis_kelamin Varchar 5
Jurusan Varchar 50
Nilai_ips1 Varchar 10
Nilai_ips1_kategori Varchar 25
Nilai_ips2 Varchar 10
Nilai_ips2_kategori Varchar 25
Nilai_ips3 Varchar 10
Nilai_ips3_kategori Varchar 25
Nilai_ips4 Varchar 10
Nilai_ips4_kategori Varchar 25
Keputusan_c45 Varchar 100
Id_rule Integer 5
47
3.4 Rancangan Tampilan Aplikasi
Tampilan aplikasi ini mengusung desain standar dengan 3 area yang terdiri
dari menu navigasi , header, dan konten.
Gambar 3.13 RancanganTampilan Tata Letak Dasar
3.4.1 Tampilan Home
Pada Halaman ini hanya menampilkan menu-menu saja yang terletak si
sisi kiri halaman.
Gambar 3.14 Rancangan Tampilan Home
header
menu konten
48
3.4.2 Halaman Data Mahasiswa
Pada halaman ini akan ditampilkan seluruh data training maupun data
testing dari data mahasiswa yang akan digunakan untuk proses mining. Selain
menampilkan data mahasiswa, pada halaman ini juga disertakan beberapa form
untuk menambahkan data baru. Tak hanya dengan mengisi form, data juga bias
ditambahkan dengan cara mengunduh file .csv yang berisi data mahasiswa yang
disusun sesuai format yang sesuai denga sistem. Rancangan ditunjukkan pada
Gambar 3.15.
Gambar 3.15 Rancangan Tampilan Halaman Kasus
3.4.3 Tampilan Proses Hasil Mining
Pada halaman ini akan di tampilkan hasil proses mining berupa table
perhitungan. Di dalamnya terdapat rincian setiap iterasi setiap pembentukan node.
Rancangan tampilan ditunjukkan pada Gambar 3.16.
49
Gambar 3.16 Rancangan Tampilan Halaman Hasil Mining
3.4.4 HalamanAturan
Halaman Aturan merupakan halaman yang akan menjabarkan presentasi
pohon keputusan ke dalam bentuk aturan-aturan atau dikenal dengan istilah Rule.
Dari aturan-aturan yang ditampilkan, diharapkan user dapat memprediksi
kelulusan mahasiswa.
Gambar 3.17 Rancancangan Tampilan Halaman Aturan
50
3.4.5 Halaman Prediksi Kelulusan
Halaman Prediksi Kelulusan merupakan halaman yang menampilkan hasil
prediksi sesuai proses mining yang sudah terjadi. Untuk dapat mengetahui hasil
prediksi, form data harus diisi terlebih dahulu. Jika sudah di-submit akan muncul
hasilnya berupa tabel di bawah form. Data pada table dapat diubah maupun
dihapus tanpa mengubah aturan yang sudah ada. Berikut rancangannya :
Gambar 3.18 Rancangan Tampilan Halaman Prediksi
51
BAB IV
IMPLEMENTASI DAN EVALUASI
4.1. Implementasi
Implementasi dari perancangan sistem usulan yang terdiri dari
implementasi perangkat keras, implementasi perangkat lunak, implementasi basis
data, dan implementasi tampilan.
4.1.1 Imlementasi Perangkat Keras
Implementasi dan uji coba ini dilakukan dengan menggunakan sebuah
computer dengan spesifikasi berikut :
1. Notebook COMPAQ Presario CQ40-324TU
2. Memory 2GB DDR2
3. Prosesor Intel Core 2 Duo 2,2 Ghz
4. LCD Display 14”
4.1.2 Implementasi Perangkat Lunak
Dalam penerapan aplikasi ini, perangkat lunak yang digunakan untuk mendukung
pembuatan aplikasi sebagai berikut :
1. SistemOperasiWindows 7 Ultimate 32 bit
2. Apache Web Server
3. PHP Scripting Language
4. PHPMyAdmin
52
5. DBMS MySQL
6. Mozilla Firefox Web Browser
4.1.3 Implementasi Basis Data
Mengawali pembuatan aplikasi ini, penulis terlebih dahulu membuat
database sesuai rancangan dengan menggunakan bagian dari paket XAMPP yaitu
PHPMyAdmin yang dijalankan melalui Web Browser.
Gambar 4.1 Hasil Pembuatan Database dengan PHPMyAdmin
4.1.4 Implementasi Algoritma C4.5
Berdasarkan prosedur algoritma C4.5 dalam melakukan proses mining
untuk membangun pohon keputusan, adalah sebagai berikut :
1. Pilih atribut sebagai node akar.
2. Buat cabang untuk tiap-tiap nilai.
3. Bagi kasus dalam cabang
4. Ulangi proses untuk setiap cabang sampai semua kasus pada cabang memiliki
kelas yang sama.
53
Untuk memilih atribut sebagai node akar, didasarkan pada nilai Gain
tertinggi dari atribut-atribut yang ada. Berikut penerapannya dengan mengambil
data dari tabel mahasiswa :
Setelah mendapatkan nilai Gain, ada satu hal lagi yang perlu kita lakukan
perhitungan, yaitu mencari nilai Entropy.Entropy digunakan untuk menentukan
seberapa informatif sebuah masukan atribut untuk menghasilkan keluaran atribut.
Rumus dasar dari Entropy tersebut adalah sebagai berikut :
54
Untuk memudahkan penjelasan mengenai algoritma C4.5, berikut
penjabarannya penghitungan detilnya:
Tabel 4.1 Penghitungan Node 1
Node Atribut Nilai
Atribut
Jumlah
Kasus
Total
Jumlah Kasus
Tidak Tepat
Waktu
Jumlah
Kasus
TepatWa
ktu
Entropy Gain
1 Total Total 80 22 58 0.8485
Jenis kelamin
0.0042
L 21 7 14 0.9183
P 59 15 44 0.8179
jurusan
0.0237
Sastra
Cina 10 5
5 1
Sastra
Inggris 16 4
12 0.8113
Sastra
Jepang 54 13
41 0.7963
Nilai
ips1kategori
0.1428
Cumlaude 20 1 19 0.2864
Kurang
Memuask
an
3 2
1 0.9183
Memuask
an 26 13
13 1
Sangat
Memuask
an
31 6
25 0.7088
Nilaiips2
kategori
0.2392
Cumlaude 21 1 20 0.2762
Kurang
Memuask
an
9 7
2 0.7642
Memuask
an 31 13
18 0.9812
Sangat
Memuask
an
19 1
18 0.2975
Nilai ips3
kategori
0.2405
Cumlaude 11 1 10 0.4395
Kurang
Memuask
an
7 6
1 0.5917
Memuask
an 29 13
16 0.9923
Sangat
Memuaskan 33 2 31 0.3298
55
Node Atribut Nilai
Atribut
Jumla
h
Kasus
Total
Jumlah
Kasus Tidak
Tepat
Waktu
Jumlah
Kasus
TepatW
aktu
Entropy Gain
Nilai
ips4kategori
0.3154
Cumlaude 20 1 19 0.2864
Kurang
Memuask
an
12 11
1 0.4138
Memuask
an 19 7
12 0.9495
Sangat
Memuask
an
29 3
26 0.4798
Pada Tabel 4.1 diatas telah dipaparkan rincian hitungan Entropi tiap nilai
atribut dan Gain untuk suatu atribut. Berikut ini contoh penerapan hitungan rumus
Entropi node awal yang dilakukan pada atribut Jenis Kelamin:
Nilai entropi total node 1:
� � � = (− ( ) × log ) + (− ( ) × log ) = .
Nilai entropi atribut Laki-laki :
� � � = (− ( ) × log ) + (− ( ) × log ) = .
Nilai entropi atribut Perempuan :
� � � = (− ( ) × log ) + (− ( ) × log ) = .
Setelah mendapatkan entropi dari keseluruhan nilai atribut yaitu Laki-laki
dan Perempuan, langkah selanjutnya adalah mencari gain atribut Jenis Kelamin
dengan penjelasan sebagi berikut :
��� � � � � � = . − (( ) × . + ( ) × . ) = .
56
Adapun dalam bentuk pengodingan skrip PHP sebagai berikut :
Perhitungan tersebut akan terus berjalan pada setiap node hingga seluruh
atribut diketahui nilai gain nya. Apabila sudah diketahui, langkah selanjutnya
adalah menentukan atribut yang akan menjadi node akar. Pada node 1 ini atribut
dengan nilai gain terbesar adalah kategori nilai ips4. Karena nilai atribut tersebut
belum mengklasifikasikan nilai ( Ya atau Tidak), maka nilai atribut tersebut akan
menjadi node pada level selanjutnya.
Dengan demikian berdasarkan perhitungan Node 1 sudah dapat
menggambarkan pohon keputusan seperti gambar di bawah ini :
Gambar 4.2 Pohon keputusan node root
Sementara implementasi pada skrip PHP untuk membuat pohon keputusan
adalah sebagai berikut :
Node1
Node 1.1 ? ? ?
cumlaude Kurang
memuaskan Memuaskan Sangat
memuaskan
Kategori nilai IPS4
<?php $getJumlahKasusTotalEntropy=70; $getJumlahKasusTepatWaktuEntropy=50; $getJumlahKasusTidakTepatWaktuEntropy=20; $perbandingan_tepat_waktu = $getJumlahKasusTepatWaktuEntropy / $getJumlahKasusTotalEntropy; $perbandingantidak_tepat_waktu = $getJumlahKasusTidakTepatWaktuEntropy / $getJumlahKasusTotalEntropy; $rumusEntropy = (-($perbandingan_tepat_waktu) * log($perbandingan_tepat_waktu,2)) + (-($perbandingantidak_tepat_waktu) * log($perbandingantidak_tepat_waktu,2)); $getEntropy = round($rumusEntropy,4); echo $getEntropy; $perbandinganTotal1=11/70; $perbandinganTotal2=16/70; $perbandinganTotal3=43/70; $gain=$getEntropy-(($perbandinganTotal1*0.994)+($perbandinganTotal2*0.8113)+($perbandinganTotal3*0.8204)); echo "<br><br>"; echo $gain; ?>
57
Berdasarkan pembentukan node 1, maka node yang akan dibahas
selanjutnya adalah node 1.1. Data node 1.1 adalah data yang memiliki Kategori
Nilai IPS4 bernilai Cumlaude seperti pada tabel berikut :
Tabel 4.2 Penghitungan Node 1.1
echo "<h2>C45 » Pohon Keputusan</h2>"; echo " <p>Opsi: <a href=./aksi.php?module=c45&act=hapus_pohon_keputusan>Hapus Semua Data</a></p>"; echo "<font face='Courier New' size='2'>"; echo "<h3><b>Pohon Keputusan: <br></b></h3>"; function get_subfolder($idparent, $spasi){ if ($_SESSION[leveluser]=='admin'){ $result = mysql_query("select * from pohon_keputusan_c45 where id_parent= '$idparent'"); } while($row=mysql_fetch_row($result)){ for($i=1;$i<=$spasi;$i++){ echo "| "; } if ($row[6] === 'Tepat Waktu') { $keputusan = "<font color=green>$row[6]</font>"; } elseif ($row[6] === 'Tidak Tepat Waktu') { $keputusan = "<font color=red>$row[6]</font>"; } elseif ($row[6] === '?') { $keputusan = "<font color=blue>$row[6]</font>"; } else { $keputusan = "<b>$row[6]</b>"; } echo "<font color=red>$row[1]</font> = $row[2] : <b>$keputusan</b><br>"; /*panggil dirinya sendiri*/ get_subfolder($row[0], $spasi + 1); } } get_subfolder('0', 0); echo "<hr>"; echo "<h3><b>Rule: <br></b></h3>"; $no = 1; if ($_SESSION[leveluser]=='admin'){ $sqlLihatRule = mysql_query("select * from rule_c45 order by id" ); } while($rowLihatRule=mysql_fetch_array($sqlLihatRule)){ if ($rowLihatRule['keputusan'] === 'Tepat Waktu') { $keputusan = "<font color=green>$rowLihatRule[keputusan]</font>"; } elseif ($rowLihatRule['keputusan'] === 'Tidak Tepat Waktu') { $keputusan = "<font color=red>$rowLihatRule[keputusan]</font>"; } elseif ($rowLihatRule['keputusan'] === '?') { $keputusan = "<font color=blue>$rowLihatRule[keputusan]</font>"; } else { $keputusan = "<b>$rowLihatRule[keputusan]</b>"; } echo "<b>R$no.</b> JIKA <b>(</b>$rowLihatRule[rule]<b>)</b> MAKA <b>$keputusan</b><font color=blue>(id = $rowLihatRule[id])</font><br>"; $no++; } echo "</font>";
58
Node Atribut Nilai Atribut
Jumlah
Kasus
Total
Jumlah
Kasus
Tidak
Tepat
Waktu
Jumlah
Kasus
TepatWa
ktu
Entropy Gain
1.1 Total Total 20 1 19 0.2864
Jenis kelamin
0.0166
L 4 0 4 0
P 16 1 15 0.3373
jurusan
0.2864
Sastra Cina 0 0 0 0
Sastra Inggris 1 1 0 0
Sastra Jepang 19 0 19 0
Kategori nilai
IPS1 0.0214
Cumlaude 15 1 14 0.3534
Kurang
Memuaskan 0 0 0 0
Memuaskan 0 0 0 0
Sangat
Memuaskan 5 0 5 0
Kategori Nilai
IPS2 0.0038
Cumlaude 19 1 18 0.2975
Kurang
Memuaskan 0 0 0 0
Memuaskan 0 0 0 0
Sangat
Memuaskan 1 0 1 0
Kategori Nilai
IPS3 0.0447
Cumlaude 11 1 10 0.4395
Kurang
Memuaskan 0 0 0 0
Memuaskan 0 0 0 0
Sangat
Memuaskan 9 0 9 0
Pada node 1.1 ini atribut dengan nilai gain terbesar adalah Jurusan. Karena
nilai atribut tersebut sudah mengklasifikasikan hasil pada ketiga nilai, maka nilai
atribut tersebut menjadi leaf dari node 1.1, sehingga tidak perlu lagi diproses lebih
lanjut.
Berikut tampilan pohon keputusan untuk Node 1.1:
59
Gambar 4.3 Pohon Keputusan Node 1.1
Berlanjut pada pembuatan node 1.2 yaitu node yang berisi data yang
terklasifikasi kategori nilai IPS4 nya Kurang Memuaskan.
Tabel 4.3 Penghitungan Node 1.2
Node Atribut Nilai Atribut
Jumlah
Kasus
Total
Jumlah
Kasus
Tidak
Tepat
Waktu
Jumlah
Kasus
TepatWa
ktu
Entropy Gain
1.2 Total Total 12 11 1 0.4138
Jenis kelamin
0.0514
L 4 4 0 0
P 8 7 1 0.5436
jurusan
0.1434
Sastra Cina 4 3 1 0.8113
Sastra Inggris 1 1 0 0
Sastra Jepang 7 7 0 0
Kategori nilai
IPS1 0.0514
Cumlaude 0 0 0 0
Kurang
Memuaskan 2 2 0 0
Memuaskan 8 7 1 0.5436
Node Atribut Nilai Atribut
Jumlah
Kasus
Total
Jumlah
Kasus
Tidak
Tepat
Waktu
Jumlah
Kasus
TepatWa
ktu
Entropy Gain
Sangat
Memuaskan 2 2 0 0
Node1.
1
Tepat
Waktu Tidak Tepat
Waktu Tepat
Waktu
Sastra
Cina Sastra
Inggris
Sastra
Jepang
jurusan
60
kategori nilai
IPS2 0.0686
Cumlaude 0 0 0 0
Kurang
Memuaskan 5 5 0 0
Memuaskan 7 6 1 0.5917
Sangat
Memuaskan 0 0 0 0
Kategori nilai
IPS3 0.0686
Cumlaude 0 0 0 0
Kurang
Memuaskan 4 4 0 0
Memuaskan 7 6 1 0.5917
Sangat
Memuaskan 1 1 0 0
Pada node 1.2 ini, atribut dengan nilai gain tertinggi adalah Jurusan. Maka
atribut Jurusan menjadi node 1.2.1 yang akan dibahas pada penghitungan
selanjutnya.
Karena nilai atribut dari Jurusan yaitu Sastra Cina dan Sastra Jepang telah
mengklasifikasi tidak tepat waktu, maka nilai atribut Sastra Inggris masih perlu
dihitung.
Berikut tampilan pohon keputusan untuk Node 1.2:
Gambar 4.4 Pohon Keputusan Node 1.2
Node1.
2
Tidak Tepat
Waktu Tidak Tepat
Waktu Node 1.2.1
Sastra
Cina Sastra
Jepang Sastra
Inggris
jurusan
61
Karena pada node 1.2 masih ada nilai atribut yang belum terklasifikasi,
maka perhitungan berlanjut dengan node 1.2.1 yaitu node yang bernilai IPS4
kurang memuaskan dan jurusannya adalah Sastra Inggris.
Tabel 4.4 Penghitungan Node 1.2.1
Node Atribut Nilai Atribut
Jumlah
Kasus
Total
Jumlah
Kasus
Tidak
Tepat
Waktu
Jumlah
Kasus
TepatWaktu
Entropy Gain
Total Total 4 3 1 0.8113
Jeniskelamin
L 1 1 0 0 0.1226
P 3 2 1 0.9183 0.1226
Kategori nilai
IPS1
Cumlaude 0 0 0 0 0
Kurang
Memuaskan 0 0 0 0 0
Memuaskan 4 3 1 0.8113 0
Sangat
Memuaskan 0 0 0 0 0
Kategori nilai
IPS2
Cumlaude 0 0 0 0 0
Kurang
Memuaskan 0 0 0 0 0
Memuaskan 4 3 1 0.8113 0
Sangat
Memuaskan 0 0 0 0 0
Kategori Nilai
IPS3
Cumlaude 0 0 0 0 0
Kurang
Memuaskan 0 0 0 0 0
Memuaskan 4 3 1 0.8113 0
Sangat
Memuaskan 0 0 0 0 0
Pada node 1.2.1 ini atribut dengan nilai gain tertinggi adalah Jenis
Kelamin. Maka jenis kelamin menjadi node selanjutnya. Nilai P dan L menjadi
leaf karena nilai dari atribut jenis kelamin yaitu L dan P telah mengklasifikasi
62
nilainya masing-masing. Sehingga tidak perlu melanjutkan penghitungan dari
node 1.2.1.
Gambar 4.5 Pohon Keputusan Node 1.2.1
Berlanjut ke node 1.3, node ini adalah node yang kategori nilai IPS4 nya
memuaskan. Berikut rincian penghitungannya :
Tabel 4.5 Penghitungan Node 1.3
Node Atribut Nilai Atribut
Jumlah
Kasus
Total
Jumlah
Kasus Tidak
Tepat
Waktu
Jumlah
Kasus
TepatWaktu
Entropy Gain
Total Total 19 7 12 0.9495
Jenis kelamin
L 6 3 3 1 0.0244
P 13 4 9 0.8905 0.0244
jurusan
Sastra Cina 4 2 2 1 0.0207
Sastra
Inggris 4 1 3 0.8113 0.0207
Sastra
Jepang 11 4 7 0.9457 0.0207
Kategori nilai
IPS1
Cumlaude 1 0 1 0 0.0528
Kurang
Memuaskan 0 0 0 0 0.0528
Memuaskan 14 6 8 0.9852 0.0528
Sangat
Memuaskan 4 1 3 0.8113 0.0528
Node1.
2.1
Tidak Tidak
Tepat Waktu Tidak Tepat
Waktu
P L
Jenis Kelamin
63
Node Atribut Nilai Atribut
Jumlah
Kasus
Total
Jumlah
Kasus Tidak
Tepat
Waktu
Jumlah
Kasus
TepatWaktu
Entropy Gain
Kategori nilai
IPS2
Cumlaude 0 0 0 0 0.1468
Kurang
Memuaskan 3 2 1 0.9183 0.1468
Memuaskan 13 5 8 0.9612 0.1468
Sangat
Memuaskan 3 0 3 0 0.1468
Kategori nilia
IPS3
Cumlaude 0 0 0 0 0.2566
Kurang
Memuaskan 2 2 0 0 0.2566
Memuaskan 14 5 9 0.9403 0.2566
Sangat
Memuaskan 3 0 3 0 0.2566
Pada penghitungan node 1.3 diatas, atribut dengan nilai gain terbesar
adalah IPS3, oleh karena itu kategori nilai IPS3 menjadi node pada perhitungan
selanjutnya. Karena nilai-nilai atribut kategori telah mengklasifikasi nilainya
masing-masing kecuali kategori nilai IPS3 yang bernilai Memuaskan. Maka nilai
atribut Cumlaude, Kurang Memuaskan, dan Sangat Memuaskan menjadi leaf
sehingga tidak perlu lagi dilanjut. Sedangkan nilai Memuaskan akan menjadi node
1.3.1
Gambar 4.6 Pohon Keputusan Node 1.3
Node1.
3
Tepat
Waktu Tidak Tepat
Waktu Node
1.3.1 Tepat
Waktu
cumlaude Kurang
memuaskan Memuaskan Sangat
memuaskan
Kategori nilai IPS3
64
Node 1.3.1 adalah node yang kategori nilai IPS4 nya memuaskan dan
kategori nilai IPS3 nya memuaskan.
Tabel 4.6 Penghitungan Node 1.3.1
Node Atribut Nilai Atribut Jumlah
Kasus Total
Jumlah
Kasus
Tidak
Tepat
Waktu
Jumlah
Kasus
TepatWaktu
Entropy Gain
Total Total 14 5 9 0.9403
Jenis kelamin
L 5 2 3 0.971 0.0032
P 9 3 6 0.9183 0.0032
jurusan
Sastra Cina 3 1 2 0.9183 0.0014
Sastra Inggris 3 1 2 0.9183 0.0014
Sastra Jepang 8 3 5 0.9544 0.0014
Kategori nilai
IPS1
Cumlaude 0 0 0 0 0.1004
Kurang
Memuaskan 0 0 0 0 0.1004
Memuaskan 12 5 7 0.9799 0.1004
Sangat
Memuaskan 2 0 2 0 0.1004
Kategori nilai
IPS2
Cumlaude 0 0 0 0 0.1532
Kurang
Memuaskan 3 2 1 0.9183 0.1532
Memuaskan 9 3 6 0.9183 0.1532
Sangat
Memuaskan 2 0 2 0 0.1532
Pada node 1.3.1 ini atribut dengan nilai gain terbesar adalah kategori nilai
IPS1, maka nilai IPS1 akan menjadi node selanjutnya. Nilai atribut untuk kategori
IPS2 cumlaude dan memuaskan masing-masing sudah mengklasifikasi tepat
waktu maka kedua nilai atribut tersebut tidak akan diteruskan.
65
Gambar 4.7 Pohon Keputusan Node 1.3.1
4.2 Pembahasan Tampilan Aplikasi
Setelah algoritma diaplikasikan dengan pendekatan simulasi penghitungan
manual dengan mengambil sampel, kini memasuki pembahasan penerapannya
menjadi sebuah aplikasi.
4.2.1 TampilanHalaman Login
Padahalamaninitersedia 2 form untukmemasukkan username dan password
agar user dapatmenggunakanaplikasi.
Gambar 4.8 Tampilan Halaman Login
Node1.
3.1
Tepat
Waktu Tepat Waktu Node
1.3.1.1 Node
1.3.1.2
cumlaude Sangat
memuaskan Memuaskan Kurang
memuaskan
Kategori nilai IPS1
66
4.2.2 TampilanHome
Pada halaman ini tampilan yang muncul hanya ucapan selamat datang,
untuk memulai user bisa memilih pada menu yang disediakan.
Gambar 4.9 Tampilan Halaman Home
4.2.3 Tampilan Form Data Mahasiswa
Halaman ini berisi form untuk mengisi data kasus, yang mana setiap data
dapat ditentukan apakah data termasuk data testing atau training.
Gambar 4.10 Tampilan Form Data Mahasiswa
67
4.2.4 Tampilan Tabel Data Mahasiswa
Halaman ini menampilkan isi dari data mahasiswa yang akan diproses.
Gambar 4.11 Tampilan Tabel Data Mahasiswa
4.2.5 Tampilan Perhitungan C4.5
Halaman ini berisi hasil rekap perhitungan mining dalam bentuk tabel.
Penghitungan yang ditampilkan pada menu ini adalah seluruh perhitungan dari
node paling atas (root) hingga akhir. Langkah-langkah yang sudah dijelaskan pada
saat implementasi manual penghitungan mining ditampilkan pada menu ini.
Gambar 4.12TampilanPerhitungan C4.5
4.2.6 Tampilan Pohon Keputusan C4.5
Halaman ini menampilkan hasil proses mining berupa pohon keputusan.
68
Gambar 4.13 Tampilan Pohon Keputusan C4.5
4.2.8 Tampilan Rule C4.5
Halaman ini berisi hasil proses mining berupa aturan-aturan (Rules) yang
juga merupakan representasi dari pohon keputusan.
Gambar 4.14 Tampilan Rule Hasil Proses Mining
69
4.2.9 Tampilan Perbandingan Keputusan
Halaman ini berisi tabel perbandingan hasil mining dengan fakta.
Gambar 4.15 Tampilan Perbandingan Keputusan
4.2.10 Tampilan Form PenentuKeputusan
Halaman ini berisi form bagi mahasiswa yang ingin memprediksi
kelulusannya berdasarkan data nilai IPS 1 hingga 4.
Gambar 4.16 Tampilan Form PenentuKeputusan
70
Gambar 4.17 Tampilan Tabel Rekap Penentu Keputusan
4.3 Evaluasi
Setelah diimplementasikan baik algoritma nya ataupun penerapan dalam
bentuk aplikasi, penulis mengevaluasi aplikasi ini dengan melakukan
perbandingan keputusan hasil mining C4.5 dengan 369 data mahasiswa yang
keputusan kelulusannya sesuai aslinya, dimana detilnya bias dilihat pada Tabel
4.7.
Untuk melakukan hal tersebut dibuatlah halaman perbadingan sebagai
berikut :
Gambar 4.18 Tabel Kinerja : perbandingan keputusan
71
Berdasarkan perbandingan tersebut, algoritma ini bisa dikatakan memiliki
keakuratan sekitar 85%. Hal tersebut dapat dibuktikan setelah menghitung
Accuracy dari keseluruhan Data Training yang erjumlah 369 mahasiswa. Berikut
hasil nya :
Tabel 4.7 Tabel Penilaian
Asli Sesuai C4.5 Tidak Sesuai C4.5
Jumlah Mahasiswa
Tidak Tepat Waktu 183 152 31
Jumlah Mahasiswa
Tepat Waktu 186 165 31
Jumlah Mahasiswa
Keseluruhan 369 317 62
Dengan demikian:
�ℎ � � �� � � ���ℎ ��ℎ� � �� � � ℎ� × %
Nilai persentase kelulusan mahasiswa tidak tepat waktu = 9 × % = %
72
BAB VI
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Aplikasi Data Mining dengan metode klasifikasi algoritma c4.5 ini dapat
memproses data mahasiswa menjadi sebuah aturan-aturan yang berguna sebagai
masukan penentu keputusan walaupun jumlah data dapat mempengaruhi
persentase keakuratannya.
Berdasarkan hasil evaluasi dengan membandingkan keputusan asli dengan
keputusan hasil mining c4.5, maka dapat dihitung persentase keakuratan sehingga
memperoleh nilai sebesar 85%.
5.2 Saran
Adapun saran – saran untuk penelitian selanjutnya yang membahas atau
mengembangkan topik yang sama dengan penelitian ini agar lebih baik lagi antara
lain :
1. Disarankan pada pembuatan aplikasi data mining memprediksi kelulusan
mahasiswa ditambah aspeknya seperti pekerjaan orang tua, penghasilan orang
tua, dan aspek lainnya yang dianggap mempengaruhi.
2. Untuk penelitian lebih lanjut disarankan untuk mencoba algoritma lain atau
meningkatkan jumlah data kasusnya dengan algoritma yang sama.
73
DAFTAR PUSTAKA
A.S Rosa dan Salahuddin M. 2011. Modul Pembelajaran Rekayasa
Perangkat Lunak (Terstruktur dan Berorientasi Objek). Bandung : Modula.
Astuti H., Fajar. 2013. Data Mining. Yogyakarta : Penerbit Andi.
Dharwiyanti, Sri dan Wahono, Romi, Satria. 2003. Pengantar Unified
Modelling Language (UML):http://ikc.dinus.ac.id/umum/yanti-uml.php
Han, Jiawei. 2012. Data Mining : Concepts and Techniques, USA :
Morgan Kaufmann Publishers.
Hariyanto, BAmbang. 2007. Esensi-esensi Bahasa Pemrograman Java,
Bandung: Penerbit Informatika.
Irwansyah, Edy. 2014. Pengantar Teknologi Informasi. Yogyakarta :
Deepublish.
Kadir, Abdul. 2008. Pengantar Teknologi Informasi. Yogyakarta :
Penerbit Andi.
Kusrini & Luthfi, Emha Taufiq. 2009. Algoritma Data Mining,
Yogyakarta : Penerbit Andi.
Larose, Daniel. 2005. Discovering Knowledge in Data : An Introduction
to Data Mining. Canada : Wiley Publishing.
Munawar. 2005. Pemodelan Visual dengan UML. Yogyakarta : Graha
Ilmu.
Raharjo, Budi. 2011. Panduan Mudah Untuk Pelajar :Mahasiswa dan
Praktis. Bandung : Modula.
LAMPIRAN
SOURCE CODE APLIKASI
Index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Login</title> <link href="icon.png" rel="shortcut icon" type="image/png" /> <link href="CSS_login.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="mootools-1.2.1-core.js.php"></script> <link href="icon.png" rel="shortcut icon" type="image/png" /> <script type="text/javascript" src="ardizorro-md5.js.php"></script> <script type="text/javascript" src="login.js"></script> </head> <body> <!-- <div id="info" title="Klik untuk Sembunyikan Informasi"><a id="showinfo" title="Klik untuk Menampilkan Informasi" href="#">Sembunyikan Informasi</a></div> --> <form method="POST" action="cek_login.php"> <table class="tb" cellpadding="2px" cellspacing="2px" > <tr> <td class="header" colspan="2" bgcolor="#2fa1e5" nowrap="nowrap"><span class="light">Klasifikasi Kelulusan Mahasiswa<br> Menggunakan Pohon Keputusan C4.5</span></td> </tr> <tr> <td class="caption" colspan="2" align="center"><span class="th">Login Administrator</span></td> </tr> <tr> <td nowrap="nowrap" > </td> <td><input style="cursor:help" placeholder="Username" title="Contoh: admin" type="text" name="username" id="username" size="25" maxlength="15"/></td> </tr> <tr> <td nowrap="nowrap"> </td> <td><input type="password" name="password" id="password" width="130px" placeholder="Password" size="25" maxlength="32"/></td> </tr> <tr> <td height="50"> </td>
<td> <input type="hidden" id="postForm" name="postForm" maxlength="32" value="387bcfe8cb701b58a39196a6abb5f57a"/> <button type="reset" id="btnReset" name="btnReset" ><span class="txt">Reset</span></button> <button type="submit" id="btnLogin" name="btnLogin" value="Login"><span class="txt">Login</span></button> </td> </tr> </table> </form> <br> <!-- <center><b>Username: admin, Password: admin1234</b></center> --> <div id="footer"> <p>Copyright© 2014 by:</p> <p><b>---</b> </p> </div> </body> </html> cek_login.php <?php include "../config/koneksi.php"; $login=mysql_query("SELECT * FROM user WHERE id_user='$_POST[username]' AND password='$_POST[password]'"); $ketemu=mysql_num_rows($login); $r=mysql_fetch_array($login); // Apabila username dan password ditemukan if ($ketemu > 0) { session_start(); $_SESSION[namauser] = $r[id_user]; $_SESSION[passuser] = $r[password]; $_SESSION[leveluser]= $r[level]; // echo $_SESSION['leveluser']; header('location:media.php?module=home'); } else { echo "<script>alert('Login gagal! Username & Password tidak benar!'); document.location.href='index.php';</script>\n"; } media.php <?php error_reporting(0);
session_start(); if (empty($_SESSION[namauser]) AND empty($_SESSION[passuser])){ echo "<link href='../config/adminstyle.css' rel='stylesheet' type='text/css'> <center>Untuk mengakses modul, Anda harus login <br>"; echo "<a href=index.php><b>LOGIN</b></a></center>"; } else { ?> <html> <head> <title>Prediksi Kelulusan Menggunakan Pohon Keputusan C4.5</title> <link href="icon.png" rel="shortcut icon" type="image/png" /> <link href="../config/adminstyle.css" rel="stylesheet" type="text/css" /> <link href="dropdown.css" rel="stylesheet" type="text/css" /> </head> <body> <div style="background:#fff; width:1200px; position:relative; margin-right: auto; margin-left: auto;"> <div id="header"> <br> <div class='menupic'> <div class='menuhorisontal'> <marquee color='white' width="99%" direction="left" nilai_ips4="scroll" scrolldelay="120" onmouseover=this.stop() onmouseout=this.start()> Selamat Datang di Sistem Pendukung Keputusan - Prediksi Kelulusan Menggunakan Pohon Keputusan C4.5 </marquee> </div> </div> <div id="content"> <?php include "content.php"; ?> </div> <div id="menu"> <br><ul><?php if($_SESSION['leveluser']=="kajur"){ echo "<li><a href=?module=home>.: Home</a></li>
<li><a href=?module=data_mahasiswa>.: Data Mahasiswa</a></li> <li style=\"background-color:#78e3f0;\"><a href=?module=c45&act=mining onClick=\"return confirm('Anda Yakin? data training pada data Mahasiswa akan diproses menggunakan algoritma C4.5. Proses akan membutuhkan waktu yang cukup lama tergantung spesifikasi perangkat keras pemroses.')\"><i> C.45 » Proses Mining</i></a></li> <li><a href=?module=c45>.: C.45 » Hasil Mining</a></li> <li><a href=?module=c45&act=pohon_keputusan>.: C.45 » Aturan</a></li> <li><a href=?module=penentu_keputusan>.: Prediksi Kelulusan</a></li> <li><a href=?module=kinerja>.: Perbandingan</a></li> <li style=\"background-color:#78e3f0;\"><a href=logout.php onClick=\"return confirm('Apakah Anda Yakin? klik OK jika ingin menyudahi aplikasi')\">.: Logout</a></li>"; } elseif($_SESSION['leveluser']=="akademik"){ echo "<li><a href=?module=home>.: Home</a></li> <li><a href=?module=c45>.: C.45 » Hasil Mining</a></li> <li><a href=?module=c45&act=pohon_keputusan>.: C.45 » Aturan</a></li> <li><a href=?module=penentu_keputusan>.: Prediksi Kelulusan</a></li> <li><a href=?module=kinerja>.: Perbandingan</a></li> <li style=\"background-color:#78e3f0;\"><a href=logout.php onClick=\"return confirm('Apakah Anda Yakin? klik OK jika ingin menyudahi aplikasi')\">.: Logout</a></li>"; } elseif($_SESSION['leveluser']=="mahasiswa"){ echo "<li><a href=?module=home>.: Home</a></li> <li><a href=?module=penentu_keputusan>.: Prediksi Kelulusan</a></li> <li style=\"background-color:#78e3f0;\"><a href=logout.php onClick=\"return confirm('Apakah Anda Yakin? klik OK jika ingin menyudahi aplikasi')\">.: Logout</a></li>"; } else{ echo " <li><a href=?module=home>.: Home</a></li> <li><a href=?module=user>.: Data User</a></li> <li><a href=?module=data_mahasiswa>.: Data Kasus</a></li> <li style=\"background-color:#78e3f0;\"><a href=?module=c45&act=mining onClick=\"return confirm('Anda Yakin? data training pada data Mahasiswa akan diproses menggunakan algoritma C4.5. Proses akan membutuhkan waktu yang cukup lama tergantung spesifikasi perangkat keras pemroses.')\"><i> C.45 » Proses Mining</i></a></li> <li><a href=?module=c45>.: C.45 » Hasil Mining</a></li> <li><a href=?module=c45&act=pohon_keputusan>.: C.45 » Aturan</a></li> <li style=\"background-color:#78e3f0;\"><a href=?module=kinerja&act=lakukan_kinerja onClick=\"return confirm('Anda Yakin? hasil proses mining akan diproses untuk komparasi dengan data testing. Proses akan membutuhkan waktu yang cukup lama tergantung spesifikasi perangkat keras pemroses.')\"><i> Kinerja » Proses Kinerja</i></a></li> <li><a href=?module=kinerja>.: Kinerja » Perbandingan</a></li> <li><a href=?module=kinerja&act=tabel_penilaian>.: Kinerja » Tabel Penilaian</a></li> <li><a href=?module=penentu_keputusan>.: Penentu Keputusan</a></li> <!-- <li><a href=?module=about>.: About</a></li> -->
<li style=\"background-color:#78e3f0;\"><a href=logout.php onClick=\"return confirm('Apakah Anda Yakin? klik OK jika ingin menyudahi aplikasi')\">.: Logout</a></li> "; } ?> </ul> <p> </p> </div> <div id="footer"> <p>Copyright© 2014 by:<br /> <b>---<b></p> </div> </div> </div> </body> </html> <?php } ?> content.php <?php include "../config/koneksi.php"; include "../config/library.php"; include "../config/fungsi_indotgl.php"; include "../config/hitungWaktu.php"; include "../config/paginate.php"; // Bagian Home if ($_GET[module]=='home'){ echo "<h2>Prediksi Kelulusan Menggunakan Pohon Keputusan C4.5</h2> <table width='100%'> <tr> <td> <h2 align='justify'> Selamat Datang.<br> </h2> </td> </tr> </table>"; }
// Modul Data Kanker elseif ($_GET[module]=='data_mahasiswa'){ include "modul/data_mahasiswa.php"; } // Modul C4.5 elseif ($_GET[module]=='c45'){ include "modul/c45.php"; } // Modul about elseif ($_GET[module]=='about'){ include "modul/about.php"; } // Modul Penentu Keputusan elseif ($_GET[module]=='penentu_keputusan'){ include "modul/penentu_keputusan.php"; } // Modul Kinerja elseif ($_GET[module]=='kinerja'){ include "modul/kinerja.php"; } // Modul User elseif ($_GET[module]=='user'){ include "modul/mod_users/users.php"; } else{ echo "<p><b>MENU BELUM ADA</b></p>"; } ?> aksi.php <?php error_reporting(0); function deleteAllDb() { mysql_query("TRUNCATE atribut");
mysql_query("TRUNCATE data_kasus"); mysql_query("TRUNCATE data_keputusan"); mysql_query("TRUNCATE data_keputusan_kinerja"); mysql_query("TRUNCATE iterasi_c45"); mysql_query("TRUNCATE mining_c45"); mysql_query("TRUNCATE pohon_keputusan_c45"); mysql_query("TRUNCATE rule_c45"); mysql_query("TRUNCATE rule_penentu_keputusan"); mysql_query("TRUNCATE data_penentu_keputusan"); } // session_start(); include "../config/koneksi.php"; include "../config/library.php"; $module=$_GET[module]; $act=$_GET[act]; // hapus data Mahasiswa per item if ($module=='data_mahasiswa' AND $act=='hapus_data_mahasiswa'){ mysql_query("DELETE FROM data_kasus WHERE id_data_mahasiswa='$_GET[id]'"); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=data_mahasiswa';</script>\n"; } // hapus semua data Mahasiswa elseif ($module=='data_mahasiswa' AND $act=='hapus_semua_data_mahasiswa'){ mysql_query("TRUNCATE `data_kasus`"); deleteAllDb(); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=data_mahasiswa';</script>\n"; } // Input Data Mahasiswa elseif ($module=='data_mahasiswa' AND $act=='input'){ if ($_POST['nilai_ips1'] >=0 AND $_POST['nilai_ips1'] <= 2.00) { $ips1_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips1'] >=2.00 AND $_POST['nilai_ips1'] <= 2.76) { $ips1_kategori = "Memuaskan";
} else if ($_POST['nilai_ips1'] >=2.76 AND $_POST['nilai_ips1'] <= 3.50) { $ips1_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips1'] >=3.51 AND $_POST['nilai_ips1'] <= 4.00) { $ips1_kategori = "Cumlaude"; } if ($_POST['nilai_ips2'] >=0 AND $_POST['nilai_ips2'] <= 2.00) { $ips2_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips2'] >=2.00 AND $_POST['nilai_ips2'] <= 2.76) { $ips2_kategori = "Memuaskan"; } else if ($_POST['nilai_ips2'] >=2.76 AND $_POST['nilai_ips2'] <= 3.50) { $ips2_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips2'] >=3.51 AND $_POST['nilai_ips2'] <= 4.00) { $ips2_kategori = "Cumlaude"; } if ($_POST['nilai_ips3'] >=0 AND $_POST['nilai_ips3'] <= 2.00) { $ips3_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips3'] >=2.00 AND $_POST['nilai_ips3'] <= 2.76) { $ips3_kategori = "Memuaskan"; } else if ($_POST['nilai_ips3'] >=2.76 AND $_POST['nilai_ips3'] <= 3.50) { $ips3_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips3'] >=3.51 AND $_POST['nilai_ips3'] <= 4.00) { $ips3_kategori = "Cumlaude"; } if ($_POST['nilai_ips4'] >=0 AND $_POST['nilai_ips4'] <= 2.00) { $ips4_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips4'] >=2.00 AND $_POST['nilai_ips4'] <= 2.76) { $ips4_kategori = "Memuaskan"; } else if ($_POST['nilai_ips4'] >=2.76 AND $_POST['nilai_ips4'] <= 3.50) { $ips4_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips4'] >=3.51 AND $_POST['nilai_ips4'] <= 4.00) { $ips4_kategori = "Cumlaude"; } if ($_POST['nilai_ips5'] >=0 AND $_POST['nilai_ips5'] <= 2.00) { $ips5_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips5'] >=2.00 AND $_POST['nilai_ips5'] <= 2.76) { $ips5_kategori = "Memuaskan";
} else if ($_POST['nilai_ips5'] >=2.76 AND $_POST['nilai_ips5'] <= 3.50) { $ips5_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips5'] >=3.51 AND $_POST['nilai_ips5'] <= 4.00) { $ips5_kategori = "Cumlaude"; } if ($_POST['nilai_ips6'] >=0 AND $_POST['nilai_ips6'] <= 2.00) { $ips6_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips6'] >=2.00 AND $_POST['nilai_ips6'] <= 2.76) { $ips6_kategori = "Memuaskan"; } else if ($_POST['nilai_ips6'] >=2.76 AND $_POST['nilai_ips6'] <= 3.50) { $ips6_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips6'] >=3.51 AND $_POST['nilai_ips6'] <= 4.00) { $ips6_kategori = "Cumlaude"; } if ($_POST['nilai_ips7'] >=0 AND $_POST['nilai_ips7'] <= 2.00) { $ips7_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips7'] >=2.00 AND $_POST['nilai_ips7'] <= 2.76) { $ips7_kategori = "Memuaskan"; } else if ($_POST['nilai_ips7'] >=2.76 AND $_POST['nilai_ips7'] <= 3.50) { $ips7_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips7'] >=3.51 AND $_POST['nilai_ips7'] <= 4.00) { $ips7_kategori = "Cumlaude"; } if ($_POST['nilai_ips8'] >=0 AND $_POST['nilai_ips8'] <= 2.00) { $ips8_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips8'] >=2.00 AND $_POST['nilai_ips8'] <= 2.76) { $ips8_kategori = "Memuaskan"; } else if ($_POST['nilai_ips8'] >=2.76 AND $_POST['nilai_ips8'] <= 3.50) { $ips8_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips8'] >=3.51 AND $_POST['nilai_ips8'] <= 4.00) { $ips8_kategori = "Cumlaude"; } mysql_query("INSERT INTO data_kasus VALUES('', '$_POST[nim]', '$_POST[nama]', '$_POST[jenis_kelamin]',
'$_POST[jurusan]', '$_POST[nilai_ips1]', '$nilai_ips1_kategori', '$_POST[nilai_ips2]', '$nilai_ips2_kategori', '$_POST[nilai_ips3]', '$nilai_ips3_kategori', '$_POST[nilai_ips4]', '$nilai_ips4_kategori', '$_POST[nilai_ips5]', '$nilai_ips5_kategori', '$_POST[nilai_ips6]', '$nilai_ips6_kategori', '$_POST[nilai_ips7]', '$nilai_ips7_kategori', '$_POST[nilai_ips8]', '$nilai_ips8_kategori', '$_POST[class]', '$_POST[status_data]' )"); echo "<script>alert('Data berhasil diinput!'); document.location.href='media.php?module=data_mahasiswa';</script>\n"; } // Update Data Mahasiswa elseif ($module=='data_mahasiswa' AND $act=='update_data_mahasiswa'){ if ($_POST['nilai_ips1'] >=0 AND $_POST['nilai_ips1'] <= 2.00) { $ips1_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips1'] >=2.00 AND $_POST['nilai_ips1'] <= 2.76) { $ips1_kategori = "Memuaskan"; } else if ($_POST['nilai_ips1'] >=2.76 AND $_POST['nilai_ips1'] <= 3.50) { $ips1_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips1'] >=3.51 AND $_POST['nilai_ips1'] <= 4.00) { $ips1_kategori = "Cumlaude"; } if ($_POST['nilai_ips2'] >=0 AND $_POST['nilai_ips2'] <= 2.00) { $ips2_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips2'] >=2.00 AND $_POST['nilai_ips2'] <= 2.76) { $ips2_kategori = "Memuaskan"; } else if ($_POST['nilai_ips2'] >=2.76 AND $_POST['nilai_ips2'] <= 3.50) {
$ips2_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips2'] >=3.51 AND $_POST['nilai_ips2'] <= 4.00) { $ips2_kategori = "Cumlaude"; } if ($_POST['nilai_ips3'] >=0 AND $_POST['nilai_ips3'] <= 2.00) { $ips3_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips3'] >=2.00 AND $_POST['nilai_ips3'] <= 2.76) { $ips3_kategori = "Memuaskan"; } else if ($_POST['nilai_ips3'] >=2.76 AND $_POST['nilai_ips3'] <= 3.50) { $ips3_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips3'] >=3.51 AND $_POST['nilai_ips3'] <= 4.00) { $ips3_kategori = "Cumlaude"; } if ($_POST['nilai_ips4'] >=0 AND $_POST['nilai_ips4'] <= 2.00) { $ips4_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips4'] >=2.00 AND $_POST['nilai_ips4'] <= 2.76) { $ips4_kategori = "Memuaskan"; } else if ($_POST['nilai_ips4'] >=2.76 AND $_POST['nilai_ips4'] <= 3.50) { $ips4_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips4'] >=3.51 AND $_POST['nilai_ips4'] <= 4.00) { $ips4_kategori = "Cumlaude"; } if ($_POST['nilai_ips5'] >=0 AND $_POST['nilai_ips5'] <= 2.00) { $ips5_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips5'] >=2.00 AND $_POST['nilai_ips5'] <= 2.76) { $ips5_kategori = "Memuaskan"; } else if ($_POST['nilai_ips5'] >=2.76 AND $_POST['nilai_ips5'] <= 3.50) { $ips5_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips5'] >=3.51 AND $_POST['nilai_ips5'] <= 4.00) { $ips5_kategori = "Cumlaude"; } if ($_POST['nilai_ips6'] >=0 AND $_POST['nilai_ips6'] <= 2.00) { $ips6_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips6'] >=2.00 AND $_POST['nilai_ips6'] <= 2.76) { $ips6_kategori = "Memuaskan"; } else if ($_POST['nilai_ips6'] >=2.76 AND $_POST['nilai_ips6'] <= 3.50) {
$ips6_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips6'] >=3.51 AND $_POST['nilai_ips6'] <= 4.00) { $ips6_kategori = "Cumlaude"; } if ($_POST['nilai_ips7'] >=0 AND $_POST['nilai_ips7'] <= 2.00) { $ips7_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips7'] >=2.00 AND $_POST['nilai_ips7'] <= 2.76) { $ips7_kategori = "Memuaskan"; } else if ($_POST['nilai_ips7'] >=2.76 AND $_POST['nilai_ips7'] <= 3.50) { $ips7_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips7'] >=3.51 AND $_POST['nilai_ips7'] <= 4.00) { $ips7_kategori = "Cumlaude"; } if ($_POST['nilai_ips8'] >=0 AND $_POST['nilai_ips8'] <= 2.00) { $ips8_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips8'] >=2.00 AND $_POST['nilai_ips8'] <= 2.76) { $ips8_kategori = "Memuaskan"; } else if ($_POST['nilai_ips8'] >=2.76 AND $_POST['nilai_ips8'] <= 3.50) { $ips8_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips8'] >=3.51 AND $_POST['nilai_ips8'] <= 4.00) { $ips8_kategori = "Cumlaude"; } mysql_query("UPDATE data_kasus SET nim = '$_POST[nim]', nama = '$_POST[nama]', jenis_kelamin = '$_POST[jenis_kelamin]', jurusan = '$_POST[jurusan]', nilai_ips1 = '$_POST[nilai_ips1]', nilai_ips1_kategori = '$ips1_kategori', nilai_ips2 = '$_POST[nilai_ips2]', nilai_ips2_kategori = '$ips2_kategori', nilai_ips3 = '$_POST[nilai_ips3]', nilai_ips3_kategori = '$ips3_kategori', nilai_ips4 = '$_POST[nilai_ips4]', nilai_ips4_kategori = '$ips4_kategori', nilai_ips5 = '$_POST[nilai_ips5]', nilai_ips5_kategori = '$ips5_kategori',
nilai_ips6 = '$_POST[nilai_ips6]', nilai_ips6_kategori = '$ips6_kategori', nilai_ips7 = '$_POST[nilai_ips7]', nilai_ips7_kategori = '$ips7_kategori', nilai_ips8 = '$_POST[nilai_ips8]', nilai_ips8_kategori = '$ips8_kategori', class = '$_POST[class]', status_data = '$_POST[status_data]' WHERE id_data_mahasiswa = '$_POST[id]'"); echo "<script>alert('Data berhasil diupdate!'); document.location.href='media.php?module=data_mahasiswa';</script>\n"; } // Hapus Semua Data Perhitungan C45 elseif ($module=='c45' AND $act=='hapus_data_iterasi'){ mysql_query("TRUNCATE `iterasi_c45`"); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=c45';</script>\n"; } // Hapus Semua Data Pohon Keputusan C45 elseif ($module=='c45' AND $act=='hapus_pohon_keputusan'){ mysql_query("TRUNCATE `pohon_keputusan_c45`"); mysql_query("TRUNCATE `rule_c45`"); mysql_query("DELETE FROM rule_penentu_keputusan where pohon = 'C45'"); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=c45&act=pohon_keputusan';</script>\n"; } // Hapus Semua Data Penentu Keputusan elseif ($module=='penentu_keputusan' AND $act=='delete_data_penentu_keputusan'){ mysql_query("TRUNCATE `data_keputusan`"); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=penentu_keputusan';</script>\n"; } // Hapus Semua Data Penentu Keputusan per Item if ($module=='penentu_keputusan' AND $act=='hapus'){ mysql_query("DELETE FROM data_keputusan WHERE id='$_GET[id]'"); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=penentu_keputusan';</script>\n"; }
// Hapus Semua Data Kinerja elseif ($module=='kinerja' AND $act=='hapus_data_kinerja'){ mysql_query("TRUNCATE `data_keputusan_kinerja`"); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=kinerja';</script>\n"; } // Hapus Seluruh Database elseif ($module=='lain-lain' AND $act=='delete_all_db'){ deleteAllDb(); echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=lain-lain';</script>\n"; } modul/data_mahasiswa.php <?php switch($_GET[act]){ default: echo "<h2>Data Mahasiswa</h2>"; include "menu_data_mahasiswa.php"; //include "form_data_mahasiswa.php"; echo "<p>Opsi: <a href=?module=data_mahasiswa&act=sinkronisasi_data_mahasiswa>Sinkronisasi Data</a> | <a href=./aksi.php?module=data_mahasiswa&act=hapus_semua_data_mahasiswa>Hapus Semua Data</a></p>"; //include "upload_csv.php"; $per_page = 30; // number of results to show per page if ($_SESSION[leveluser]=='admin' OR $_SESSION[leveluser]=='kajur'){ $result=mysql_query("SELECT * FROM data_kasus"); } $total_results = mysql_num_rows($result); $total_pages = ceil($total_results / $per_page);//total pages we going to have $warna1 = '#FFFFFF'; $warna2 = '#CCFFFF'; $warna = $warna1; //-------------if page is setcheck------------------// if (isset($_GET['page'])) { $show_page = $_GET['page']; //it will telles the current page if ($show_page > 0 && $show_page <= $total_pages) { $start = ($show_page - 1) * $per_page; $end = $start + $per_page;
} else { // error - show first set of results $start = 0; $end = $per_page; } } else { // if page isn't set, show first set of results $start = 0; $end = $per_page; } // display pagination $page = intval($_GET['page']); $tpages=$total_pages; if ($page <= 0) $page = 1; $reload = $_SERVER['PHP_SELF'] . "?module=data_mahasiswa&act=data_mahasiswa&tpages=" . $tpages; if ($total_pages > 1) { echo paginate($reload, $show_page, $total_pages); } echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'> <tr> <th>No</th> <th>nim</th> <th>nama</th> <th>jenis kelamin</th> <th>jurusan</th> <th>nilai ips1</th> <th>nilai ips2</th> <th>nilai ips3</th> <th>nilai ips4</th> <th>nilai ips5</th> <th>nilai ips6</th> <th>nilai ips7</th> <th>nilai ips8</th> <th>Class</th> <th>Status Data</th>
<th>Opsi</th> </tr>"; for ($i = $start; $i < $end; $i++) { // make sure that PHP doesn't try to show results that don't exist if ($i == $total_results) { break; } $num = $i +1; echo '<tr bgcolor=' . $warna . '> <td>'.$num.'</td> <td>' . mysql_result($result, $i, 'nim') . '</td> <td>' . mysql_result($result, $i, 'nama') . '</td> <td>' . mysql_result($result, $i, 'jenis_kelamin') . '</td> <td>' . mysql_result($result, $i, 'jurusan') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips1') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips2') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips3') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips4') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips5') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips6') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips7') . '</td> <td>' . mysql_result($result, $i, 'nilai_ips8') . '</td> <td>' . mysql_result($result, $i, 'class') . '</td> <td>' . mysql_result($result, $i, 'status_data') . '</td> <td><a href=?module=data_mahasiswa&act=edit_data_mahasiswa&id=' . mysql_result($result, $i, 'id_data_mahasiswa').'>Edit</a> | <a href=./aksi.php?module=data_mahasiswa&act=hapus_data_mahasiswa&id=' . mysql_result($result, $i, 'id_data_mahasiswa').'>Hapus</a> </td> </tr>'; $no++; } echo"</table>"; break; case "edit_data_mahasiswa"; echo "<h2>Data Mahasiswa » Edit Data Mahasiswa</h2>"; // include "menu_data_mahasiswa.php"; include "form_edit_data_mahasiswa.php"; break;
case "partisi_data"; include "partisi_data.php"; break; case "sinkronisasi_data_mahasiswa"; include "sinkronisasi_data_mahasiswa_ekonomi.php"; echo "<script>alert('Data berhasil dihapus!'); document.location.href='media.php?module=data_mahasiswa';</script>\n"; break; } modul/c45.php <?php switch($_GET[act]){ default: echo "<h2>C45 » Perhitungan C4.5</h2>"; // include "menu_c45.php"; echo " <p>Opsi: <a href=./aksi.php?module=c45&act=hapus_data_iterasi>Hapus Semua Data</a></p> <table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'> <tr> <th>No</th> <th>Atribut Gain Ratio Max</th> <th>Atribut</th> <th>Nilai Atribut</th> <th>Jumlah Kasus Total</th> <th>Jumlah Kasus Tidak Tepat Waktu</th> <th>Jumlah Kasus TepatWaktu</th> <th>Entropy</th> <th>Information Gain</th> </tr>"; if ($_SESSION[leveluser]=='admin' OR $_SESSION[leveluser]=='kajur' OR $_SESSION[leveluser]=='akademik'){ $sql=mysql_query('SELECT * FROM iterasi_c45 ORDER BY id'); } $warna1 = '#FFFFFF'; $warna2 = '#CCFFFF'; $warna = $warna1; while ($data=mysql_fetch_array($sql)){ if($warna == $warna1){
$warna = $warna2; } else { $warna = $warna1; } /* echo " <tr bgcolor='$warna'> <td>$data[iterasi]</td> <td>$data[atribut_gain_ratio_max]</td> <td>$data[atribut]</td> <td>$data[nilai_atribut]</td> <td>$data[jml_kasus_total]</td> <td>$data[jml_kasus_tidak_tepat_waktu]</td> <td>$data[jml_kasus_tepat_waktu]</td> <td>$data[entropy]</td> <td>$data[inf_gain]</td> <td>$data[split_info]</td> <td>$data[gain_ratio]</td> </tr>"; */ echo " <tr bgcolor='$warna'> <td>$data[iterasi]</td> <td>$data[atribut_gain_ratio_max]</td> <td>$data[atribut]</td> <td>$data[nilai_atribut]</td> <td>$data[jml_kasus_total]</td> <td>$data[jml_kasus_tidak_tepat_waktu]</td> <td>$data[jml_kasus_tepat_waktu]</td> <td>$data[entropy]</td> <td>$data[inf_gain]</td> </tr>"; } echo"</table>"; break; case "mining"; echo "<h2>C45 » Mining C4.5</h2>"; // include "menu_c45.php"; $sql=mysql_query("SELECT COUNT(*) FROM data_kasus WHERE status_data = 'Data Training'"); $data=mysql_fetch_array($sql); if (empty($data)) { echo "<script>alert('Data Training Kosong, Harap Input Data Training!'); document.location.href='media.php?module=c45';</script>\n";
} else { timer_start(); echo "mohon sabar...."; //include "function/miningPrePruningC45___pruning.php"; include "function/miningPrePruningC45.php"; //include "function/algoritma.php"; $waktu = timer_stop(3); echo "<p>Proses Mining Selesai! Waktu yang dibutuhkan $waktu detik</p>"; } break; case "pohon_keputusan"; include "pohon_keputusan_c45.php"; break; } modul/penentu_keputusan.php <?php echo "<h2>Penentu Keputusan</h2>"; include "form_penentu_keputusan.php"; echo "<p>Opsi: <a href=./aksi.php?module=penentu_keputusan&act=delete_data_penentu_keputusan>Hapus Semua Data</a> </p>"; echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'> <tr> <th>No</th> <th>nim</th> <th>nama</th> <th>jenis kelamin</th> <th>jurusan</th> <th>nilai ips1</th> <th>nilai ips2</th> <th>nilai ips3</th> <th>nilai ips4</th> <th>Keputusan C4.5 </th> <th>ID Rule</th> <th>Opsi</th> </tr>"; if ($_SESSION[leveluser]=='admin'OR $_SESSION[leveluser]=='kajur'OR
$_SESSION[leveluser]=='akademik'OR $_SESSION[leveluser]=='mahasiswa'){ $sql=mysql_query('SELECT * FROM data_keputusan ORDER BY id'); } $warna1 = '#FFFFFF'; $warna2 = '#CCFFFF'; $warna = $warna1; $no = 1; while ($data=mysql_fetch_array($sql)){ if($warna == $warna1){ $warna = $warna2; } else { $warna = $warna1; } echo "<tr bgcolor='$warna'> <td>$no</td> <td>$data[nim]</td> <td>$data[nama]</td> <td>$data[jenis_kelamin]</td> <td>$data[jurusan]</td> <td>$data[nilai_ips1]</td> <td>$data[nilai_ips2]</td> <td>$data[nilai_ips3]</td> <td>$data[nilai_ips4]</td> <td> "; if ($data['keputusan_c45'] == 'Tepat Waktu') { echo "<font color=green><b>$data[keputusan_c45]</b></font>"; } elseif ($data['keputusan_c45'] == 'Tidak Tepat Waktu') { echo "<font color=red><b>$data[keputusan_c45]</b></font>"; } else { echo "<b>$data[keputusan_c45]</b>"; } echo "</td><td><b>$data[id_rule_c45]</b></td> <td> <a href=./aksi.php?module=penentu_keputusan&act=hapus&id=$data[id]>Hapus</a> </td> </tr>"; $no++; }
echo"</table>"; ?> </html> modul/kinerja.php <?php function countKeputusan($atribut, $nilai_atribut) { $sql = mysql_query("SELECT count(id_data_mahasiswa) as id FROM data_keputusan_kinerja where $atribut = '$nilai_atribut'"); while($row = mysql_fetch_array($sql)) { $count = "$row[id]"; } return $count; } function countKeputusankinerja($atribut1, $nilai_atribut1, $atribut2, $nilai_atribut2) { $sql = mysql_query("SELECT count(id_data_mahasiswa) as id FROM data_keputusan_kinerja where $atribut1 = '$nilai_atribut1' AND $atribut2 = '$nilai_atribut2'"); while($row = mysql_fetch_array($sql)) { $count = "$row[id]"; } return $count; } switch($_GET[act]){ default: echo "<h2>Kinerja » Tabel Perbandingan Keputusan</h2>"; // include "menu_kinerja.php"; echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'> <tr> <th>No</th> <th>nim</th> <th>nama</th> <th>jenis kelamin</th> <th>jurusan</th> <th>nilai ips1</th> <th>nilai ips2</th> <th>nilai ips3</th> <th>nilai ips4</th> <th>nilai ips5</th>
<th>nilai ips6</th> <th>nilai ips7</th> <th>nilai ips8</th> <th>Keputusan Asli</th> <th>Keputusan C4.5</th> <th>ID Rule C4.5</th> </tr>"; $warna1 = '#FFFFFF'; $warna2 = '#CCFFFF'; $warna = $warna1; $no = 1; $sqlDataKeputusanKinerja=mysql_query("SELECT * FROM data_keputusan_kinerja"); while ($rowDataKeputusanKinerja = mysql_fetch_array($sqlDataKeputusanKinerja)) { $sqlDataMahasiswa = mysql_query("SELECT * FROM data_kasus WHERE id_data_mahasiswa = '$rowDataKeputusanKinerja[id_data_mahasiswa]'"); $rowDataMahasiswa = mysql_fetch_array($sqlDataMahasiswa); if($warna == $warna1){ $warna = $warna2; } else { $warna = $warna1; } echo "<tr bgcolor='$warna'> <td>$no</td> <td>$rowDataMahasiswa[nim]</td> <td>$rowDataMahasiswa[nama]</td> <td>$rowDataMahasiswa[jenis_kelamin]</td> <td>$rowDataMahasiswa[jurusan]</td> <td>$rowDataMahasiswa[nilai_ips1]</td> <td>$rowDataMahasiswa[nilai_ips2]</td> <td>$rowDataMahasiswa[nilai_ips3]</td> <td>$rowDataMahasiswa[nilai_ips4]</td> <td>$rowDataMahasiswa[nilai_ips5]</td> <td>$rowDataMahasiswa[nilai_ips6]</td> <td>$rowDataMahasiswa[nilai_ips7]</td> <td>$rowDataMahasiswa[nilai_ips8]</td> <td><b>$rowDataKeputusanKinerja[keputusan_asli]</b></td> <td>"; if ($rowDataKeputusanKinerja['keputusan_asli'] == $rowDataKeputusanKinerja['keputusan_c45']) {
echo "<font color=green><b>$rowDataKeputusanKinerja[keputusan_c45]</b></font>"; } else { echo "<font color=red><b>$rowDataKeputusanKinerja[keputusan_c45]</b></font>"; } echo "</td><td>$rowDataKeputusanKinerja[id_rule_c45] </td></tr>"; $no++; } echo"</table>"; break; case "tabel_penilaian"; echo "<h2>Kinerja » Tabel Penilaian</h2>"; // include "menu_kinerja.php"; $sqlEmpty = mysql_query("SELECT id FROM data_keputusan_kinerja"); $rowEmpty = mysql_fetch_array($sqlEmpty); if (empty($rowEmpty)) { echo "Tabel Penilaian Kosong ! <br>Lakukan kinerja Dulu !"; } else { $TepatWaktu = countKeputusan($atribut = 'keputusan_asli', $nilai_atribut = 'Tepat Waktu'); $TidakTepatWaktu = countKeputusan($atribut = 'keputusan_asli', $nilai_atribut = 'Tidak Tepat Waktu'); $TepatWaktuC45IdentifikasiTepatWaktu = countKeputusankinerja($atribut1 = 'keputusan_asli', $nilai_atribut1 = 'Tepat Waktu', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Tepat Waktu'); $TepatWaktuC45IdentifikasiTidakTepatWaktu = countKeputusankinerja($atribut1 = 'keputusan_asli', $nilai_atribut1 = 'Tepat Waktu', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Tidak Tepat Waktu'); $TepatWaktuC45IdentifikasiNull = countKeputusankinerja($atribut1 = 'keputusan_asli', $nilai_atribut1 = 'Tepat Waktu', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Null'); $TidakTepatWaktuC45IdentifikasiTepatWaktu = countKeputusankinerja($atribut1 = 'keputusan_asli', $nilai_atribut1 = 'Tidak Tepat Waktu', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Tepat Waktu'); $TidakTepatWaktuC45IdentifikasiTidakTepatWaktu = countKeputusankinerja($atribut1 = 'keputusan_asli', $nilai_atribut1 = 'Tidak Tepat Waktu', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Tidak Tepat Waktu'); $TidakTepatWaktuC45IdentifikasiNull = countKeputusankinerja($atribut1 = 'keputusan_asli', $nilai_atribut1 = 'Tidak Tepat Waktu', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Null'); if ($TepatWaktu != ($TepatWaktuC45IdentifikasiTepatWaktu + $TepatWaktuC45IdentifikasiTidakTepatWaktu)) {
$TepatWaktuC45IdentifikasiTidakTepatWaktu += $TepatWaktuC45IdentifikasiNull; } if ($TidakTepatWaktu != ($TidakTepatWaktuC45IdentifikasiTepatWaktu + $TidakTepatWaktuC45IdentifikasiTidakTepatWaktu)) { $TidakTepatWaktuC45IdentifikasiTepatWaktu += $TidakTepatWaktuC45IdentifikasiNull; } $precision = round(($TepatWaktuC45IdentifikasiTepatWaktu / ($TidakTepatWaktuC45IdentifikasiTepatWaktu + $TepatWaktuC45IdentifikasiTepatWaktu) * 100), 2); $recall = round(($TepatWaktuC45IdentifikasiTepatWaktu / ($TepatWaktuC45IdentifikasiTidakTepatWaktu + $TepatWaktuC45IdentifikasiTepatWaktu) * 100), 2); $accuracy = round((($TepatWaktuC45IdentifikasiTepatWaktu + $TidakTepatWaktuC45IdentifikasiTidakTepatWaktu) / ($TepatWaktu + $TidakTepatWaktu) * 100), 2); echo "<p><b>Tabel Penilaian C4.5</b></p> <table> <tr> <td></td> <td><b>Diidentifikasi Tidak Tepat Waktu oleh C4.5</b></td> <td><b>Diidentifikasi Tepat Waktu oleh C4.5</b></td> </tr> <tr> <td><b>Keputusan Asli: Tidak Tepat Waktu = $TidakTepatWaktu</b></td> <td>$TidakTepatWaktuC45IdentifikasiTidakTepatWaktu</td> <td>$TidakTepatWaktuC45IdentifikasiTepatWaktu</td> </tr> <tr> <td><b>Keputusan Asli: Tepat Waktu = $TepatWaktu</b></td> <td>$TepatWaktuC45IdentifikasiTidakTepatWaktu</td> <td>$TepatWaktuC45IdentifikasiTepatWaktu</td> </tr> </table> <p> <a>1. Precision = $TepatWaktuC45IdentifikasiTepatWaktu / ($TidakTepatWaktuC45IdentifikasiTepatWaktu + $TepatWaktuC45IdentifikasiTepatWaktu) * 100% = $precision %</a><br> <a>2. Recall = $TepatWaktuC45IdentifikasiTepatWaktu / ($TepatWaktuC45IdentifikasiTidakTepatWaktu + $TepatWaktuC45IdentifikasiTepatWaktu) * 100% = $recall %</a><br> <a>3. Accuracy = ($TidakTepatWaktuC45IdentifikasiTidakTepatWaktu + $TepatWaktuC45IdentifikasiTepatWaktu) / ($TepatWaktu + $TidakTepatWaktu) * 100% = $accuracy %</a></p> <hr>";
} break; case "lakukan_kinerja"; echo "<h2>Kinerja » Proses Kinerja</h2>"; // include "menu_kinerja.php"; timer_start(); include "function/kinerjaC45.php"; $waktu = timer_stop(3); echo "<p>Proses perhitungan kinerja selesai! Waktu yang dibutuhkan $waktu detik</p>"; break; } ?> modul/pohon_keputusan_c45.php <?php include "../../config/koneksi.php"; echo "<h2>C45 » Pohon Keputusan</h2>"; // include "menu_c45.php"; echo " <p>Opsi: <a href=./aksi.php?module=c45&act=hapus_pohon_keputusan>Hapus Semua Data</a></p>"; echo "<font face='Courier New' size='2'>"; echo "<h3><b>Pohon Keputusan: <br></b></h3>"; function get_subfolder($idparent, $spasi){ if ($_SESSION[leveluser]=='admin' OR $_SESSION[leveluser]=='kajur' OR $_SESSION[leveluser]=='akademik'){ $result = mysql_query("select * from pohon_keputusan_c45 where id_parent= '$idparent'"); } while($row=mysql_fetch_row($result)){ for($i=1;$i<=$spasi;$i++){ echo "| "; } if ($row[6] === 'Tepat Waktu') { $keputusan = "<font color=green>$row[6]</font>"; } elseif ($row[6] === 'Tidak Tepat Waktu') { $keputusan = "<font color=red>$row[6]</font>"; } elseif ($row[6] === '?') { $keputusan = "<font color=blue>$row[6]</font>"; } else { $keputusan = "<b>$row[6]</b>"; } echo "<font color=red>$row[1]</font> = $row[2] : <b>$keputusan</b><br>";
/*panggil dirinya sendiri*/ get_subfolder($row[0], $spasi + 1); } } get_subfolder('0', 0); echo "<hr>"; echo "<h3><b>Rule: <br></b></h3>"; $no = 1; if ($_SESSION[leveluser]=='admin'){ $sqlLihatRule = mysql_query("select * from rule_c45 order by id" ); } while($rowLihatRule=mysql_fetch_array($sqlLihatRule)){ if ($rowLihatRule['keputusan'] === 'Tepat Waktu') { $keputusan = "<font color=green>$rowLihatRule[keputusan]</font>"; } elseif ($rowLihatRule['keputusan'] === 'Tidak Tepat Waktu') { $keputusan = "<font color=red>$rowLihatRule[keputusan]</font>"; } elseif ($rowLihatRule['keputusan'] === '?') { $keputusan = "<font color=blue>$rowLihatRule[keputusan]</font>"; } else { $keputusan = "<b>$rowLihatRule[keputusan]</b>"; } echo "<b>R$no.</b> JIKA <b>(</b>$rowLihatRule[rule]<b>)</b> MAKA <b>$keputusan</b> <font color=blue>(id = $rowLihatRule[id])</font><br>"; $no++; } echo "</font>"; modul/sinkronisasi_data_mahasiswa_ekonomi.php <?php error_reporting(E_ERROR | E_PARSE); include "koneksi.php"; mysql_query("TRUNCATE data_kasus"); //$sql="SELECT * from ac_mahasiswa where nim like '2008%' AND substr(nim,5,2) not in(14,15,16,21,22,23,24,25,31,32,41,42)"; //$sql="SELECT * from ac_mahasiswa where nim like '2008230026%'"; $sql="SELECT * from ac_mahasiswa where nim like '20084%'"; $query=mysql_query($sql); while($row=mysql_fetch_array($query)){ $nim=$row["nim"];
$nama=$row["nama"]; $jk=$row["jenis_kelamin"]; $userid=$row["pn_uid"]; $tahun_lulus=substr($row["tanggal_lulus"],0,4); if ($tahun_lulus=='2012') { $lulus='Tepat Waktu'; }else $lulus='Tidak Tepat Waktu'; $kode_jurusan=substr($nim,4,2); if ($kode_jurusan=='11'){ $jurusan='Sastra Jepang'; } elseif ($kode_jurusan=='12') { $jurusan='Sastra Inggris'; } elseif ($kode_jurusan=='13') { $jurusan='Sastra Cina'; }elseif ($kode_jurusan=='21') { $jurusan='Teknik Elektro'; }elseif ($kode_jurusan=='22') { $jurusan='Teknik Industri'; }elseif ($kode_jurusan=='23') { $jurusan='Teknik Informatika'; }elseif ($kode_jurusan=='24') { $jurusan='Sistem Informasi'; }elseif ($kode_jurusan=='25') { $jurusan='Teknik Mesin'; }elseif ($kode_jurusan=='31') { $jurusan='Teknologi Kelautan'; }elseif ($kode_jurusan=='32') { $jurusan='Sistem Teknologi Kelautah'; }elseif ($kode_jurusan=='41') { $jurusan='Manajemen'; }elseif ($kode_jurusan=='42') { $jurusan='Akuntansi'; } //if($row["tanggal_lulus"]=="0000-00-00"){$lulus="belum";}else{$lulus=$row["tanggal_lulus"];} $sqlip1="select sum(mutu)/sum(sks) as ips1 from ac_user_students where userid='$userid' and semester_year=2008 and semester=1 group by userid"; $queryip1=mysql_query($sqlip1); $rowip1=mysql_fetch_array($queryip1); $ips1=round($rowip1["ips1"],2);
$sqlip2="select sum(mutu)/sum(sks) as ips2 from ac_user_students where userid='$userid' and semester_year=2008 and semester=2 group by userid"; $queryip2=mysql_query($sqlip2); $rowip2=mysql_fetch_array($queryip2); $ips2=round($rowip2["ips2"],2); $sqlip3="select sum(mutu)/sum(sks) as ips3 from ac_user_students where userid='$userid' and semester_year=2009 and semester=1 group by userid"; $queryip3=mysql_query($sqlip3); $rowip3=mysql_fetch_array($queryip3); $ips3=round($rowip3["ips3"],2); $sqlip4="select sum(mutu)/sum(sks) as ips4 from ac_user_students where userid='$userid' and semester_year=2009 and semester=2 group by userid"; $queryip4=mysql_query($sqlip4); $rowip4=mysql_fetch_array($queryip4); $ips4=round($rowip4["ips4"],2); $sqlip5="select sum(mutu)/sum(sks) as ips5 from ac_user_students where userid='$userid' and semester_year=2010 and semester=1 group by userid"; $queryip5=mysql_query($sqlip5); $rowip5=mysql_fetch_array($queryip5); $ips5=round($rowip5["ips5"],2); $sqlip6="select sum(mutu)/sum(sks) as ips6 from ac_user_students where userid='$userid' and semester_year=2010 and semester=2 group by userid"; $queryip6=mysql_query($sqlip6); $rowip6=mysql_fetch_array($queryip6); $ips6=round($rowip6["ips6"],2); $sqlip7="select sum(mutu)/sum(sks) as ips7 from ac_user_students where userid='$userid' and semester_year=2011 and semester=1 group by userid"; $queryip7=mysql_query($sqlip7); $rowip7=mysql_fetch_array($queryip7); $ips7=round($rowip7["ips7"],2); $sqlip8="select sum(mutu)/sum(sks) as ips8 from ac_user_students where userid='$userid' and semester_year=2011 and semester=2 group by userid"; $queryip8=mysql_query($sqlip8); $rowip8=mysql_fetch_array($queryip8); $ips8=round($rowip8["ips8"],2);
if ($ips1 >=0 AND $ips1 <= 2.00) { $ips1_kategori = "Kurang Memuaskan"; } else if ($ips1 >=2.00 AND $ips1 <= 2.76) { $ips1_kategori = "Memuaskan"; } else if ($ips1 >=2.76 AND $ips1 <= 3.50) { $ips1_kategori = "Sangat Memuaskan"; } else if ($ips1 >=3.51 AND $ips1 <= 4.00) { $ips1_kategori = "Cumlaude"; } if ($ips2 >=0 AND $ips2 <= 2.00) { $ips2_kategori = "Kurang Memuaskan"; } else if ($ips2 >=2.00 AND $ips2 <= 2.76) { $ips2_kategori = "Memuaskan"; } else if ($ips2 >=2.76 AND $ips2 <= 3.50) { $ips2_kategori = "Sangat Memuaskan"; } else if ($ips2 >=3.51 AND $ips2 <= 4.00) { $ips2_kategori = "Cumlaude"; } if ($ips3 >=0 AND $ips3 <= 2.00) { $ips3_kategori = "Kurang Memuaskan"; } else if ($ips3 >=2.00 AND $ips3 <= 2.76) { $ips3_kategori = "Memuaskan"; } else if ($ips3 >=2.76 AND $ips3 <= 3.50) { $ips3_kategori = "Sangat Memuaskan"; } else if ($ips3 >=3.51 AND $ips3 <= 4.00) { $ips3_kategori = "Cumlaude"; } if ($ips4 >=0 AND $ips4 <= 2.00) { $ips4_kategori = "Kurang Memuaskan"; } else if ($ips4 >=2.00 AND $ips4 <= 2.76) { $ips4_kategori = "Memuaskan"; } else if ($ips4 >=2.76 AND $ips4 <= 3.50) { $ips4_kategori = "Sangat Memuaskan"; } else if ($ips4 >=3.51 AND $ips4 <= 4.00) { $ips4_kategori = "Cumlaude"; }
if ($ips5 >=0 AND $ips5 <= 2.00) { $ips5_kategori = "Kurang Memuaskan"; } else if ($ips5 >=2.00 AND $ips5 <= 2.76) { $ips5_kategori = "Memuaskan"; } else if ($ips5 >=2.76 AND $ips5 <= 3.50) { $ips5_kategori = "Sangat Memuaskan"; } else if ($ips5 >=3.51 AND $ips5 <= 4.00) { $ips5_kategori = "Cumlaude"; } if ($ips6 >=0 AND $ips6 <= 2.00) { $ips6_kategori = "Kurang Memuaskan"; } else if ($ips6 >=2.00 AND $ips6 <= 2.76) { $ips6_kategori = "Memuaskan"; } else if ($ips6 >=2.76 AND $ips6 <= 3.50) { $ips6_kategori = "Sangat Memuaskan"; } else if ($ips6 >=3.51 AND $ips6 <= 4.00) { $ips6_kategori = "Cumlaude"; } if ($ips7 >=0 AND $ips7 <= 2.00) { $ips7_kategori = "Kurang Memuaskan"; } else if ($ips7 >=2.00 AND $ips7 <= 2.76) { $ips7_kategori = "Memuaskan"; } else if ($ips7 >=2.76 AND $ips7 <= 3.50) { $ips7_kategori = "Sangat Memuaskan"; } else if ($ips7 >=3.51 AND $ips7 <= 4.00) { $ips7_kategori = "Cumlaude"; } if ($ips8 >=0 AND $ips8 <= 2.00) { $ips8_kategori = "Kurang Memuaskan"; } else if ($ips8 >=2.00 AND $ips8 <= 2.76) { $ips8_kategori = "Memuaskan"; } else if ($ips8 >=2.76 AND $ips8 <= 3.50) { $ips8_kategori = "Sangat Memuaskan"; } else if ($ips8 >=3.51 AND $ips8 <= 4.00) { $ips8_kategori = "Cumlaude"; }
$sql1="INSERT INTO data_kasus VALUES ( '', '$nim', '$nama', '$jk', '$jurusan', '$ips1', '$ips1_kategori', '$ips2', '$ips2_kategori', '$ips3', '$ips3_kategori', '$ips4', '$ips4_kategori', '$ips5', '$ips5_kategori', '$ips6', '$ips6_kategori', '$ips7', '$ips7_kategori', '$ips8', '$ips8_kategori', '$lulus', 'Data Training' ) "; $mysql1=mysql_query($sql1); if (!$mysql1) echo mysql_error(); } mysql_query("DELETE from data_kasus where nilai_ips5=0 AND nilai_ips6=0 AND nilai_ips7=0 AND nilai_ips8=0"); ?> function/algoritma.php <?php // ====================== mining tanpa pruning ======================== include "../../../config/koneksi.php";
function populateAtribut() { mysql_query("TRUNCATE atribut"); mysql_query("insert into `atribut` values ('', 'Total', 'Total') "); //insertAtribut('jenis_kelamin'); insertAtribut('jurusan'); insertAtribut('nilai_ips1_kategori'); insertAtribut('nilai_ips2_kategori'); insertAtribut('nilai_ips3_kategori'); insertAtribut('nilai_ips4_kategori'); } function insertAtribut($atribut) { $sqlAtribut = mysql_query("SELECT distinct `$atribut` FROM data_kasus ORDER by `$atribut`"); while ($rowAtribut = mysql_fetch_array($sqlAtribut)) {! mysql_query("insert into `atribut` values ('', '$atribut', '$rowAtribut[$atribut]')"); } } function populateDb() { //#1# Hapus semua DB dan insert default atribut dan nilai atribut mysql_query("TRUNCATE rule_penentu_keputusan"); mysql_query("TRUNCATE pohon_keputusan_c45"); mysql_query("TRUNCATE rule_c45"); mysql_query("TRUNCATE mining_c45"); mysql_query("TRUNCATE iterasi_c45"); populateAtribut(); } populateDb(); miningC45(null, null); //updateKeputusanUnknown(); //generateRuleFinalPrePruning(); //insertRuleC45PrePruning();
//---------- KUMPULAN FUNGSI yang AKAN DILAKUKAN DALAM PROSES MINING ---------- function miningC45($atribut, $nilai_atribut) { perhitunganC45($atribut, $nilai_atribut); //insertAtributPohonKeputusan($atribut, $nilai_atribut); //getInfGainMax($atribut, $nilai_atribut); } function perhitunganC45($atribut, $nilai_atribut) { if (empty($atribut) AND empty($nilai_atribut)) { //#2# Jika atribut yg diinputkan kosong, maka lakukan perhitungan awal $kondisiAtribut = ""; // set kondisi atribut kosong } else if (!empty($atribut) AND !empty($nilai_atribut)) { // jika atribut tdk kosong, maka select kondisi atribut dari DB $sqlKondisiAtribut = mysql_query("SELECT kondisi_atribut FROM pohon_keputusan_c45 WHERE atribut = '$atribut' AND nilai_atribut = '$nilai_atribut' order by id DESC LIMIT 1"); $rowKondisiAtribut = mysql_fetch_array($sqlKondisiAtribut); $kondisiAtribut = str_replace("~", "'", $rowKondisiAtribut['kondisi_atribut']); // replace string ~ menjadi ' } // ambil seluruh atribut $sqlAtribut = mysql_query("SELECT distinct atribut FROM atribut"); while($rowGetAtribut = mysql_fetch_array($sqlAtribut)) { $getAtribut=$rowGetAtribut['atribut']; //echo $getAtribut; if($getAtribut == 'Total'){ //#3# Jika atribut = total, maka hitung jumlah kasus total, jumlah kasus Tepat Waktu dan jumlah kasus Tidak Tepat Waktu // hitung jumlah kasus total $sqlJumlahKasusTotal = mysql_query("SELECT COUNT(*) as jumlah_total FROM data_kasus WHERE status_data = 'Data Training' $kondisiAtribut"); $rowJumlahKasusTotal = mysql_fetch_array($sqlJumlahKasusTotal); $getJumlahKasusTotal = $rowJumlahKasusTotal['jumlah_total']; // hitung jumlah kasus TepatWaktu $sqlJumlahKasusTepatWaktu = mysql_query("SELECT COUNT(*) as jumlah_tepat_waktu FROM data_kasus WHERE class = 'Tepat Waktu' AND status_data = 'Data Training' $kondisiAtribut"); $rowJumlahKasusTepatWaktu = mysql_fetch_array($sqlJumlahKasusTepatWaktu); $getJumlahKasusTepatWaktu = $rowJumlahKasusTepatWaktu['jumlah_tepat_waktu']; // hitung jumlah kasus Tidak Tepat Waktu
$sqlJumlahKasusTidakTepatWaktu = mysql_query("SELECT COUNT(*) as jumlah_tidak_tepat_waktu FROM data_kasus WHERE class = 'Tidak Tepat Waktu' AND status_data = 'Data Training' $kondisiAtribut"); $rowJumlahKasusTidakTepatWaktu = mysql_fetch_array($sqlJumlahKasusTidakTepatWaktu); $getJumlahKasusTidakTepatWaktu = $rowJumlahKasusTidakTepatWaktu['jumlah_tidak_tepat_waktu']; //#4# Insert jumlah kasus total, jumlah kasus Tepat Waktu dan jumlah kasus Tidak Tepat Waktu ke DB // insert ke database mining_c45 mysql_query("INSERT INTO mining_c45 VALUES ('', 'Total', 'Total', '$getJumlahKasusTotal', '$getJumlahKasusTidakTepatWaktu', '$getJumlahKasusTepatWaktu', '', '', '', '', '', '')"); }else{ //#5# Jika atribut != total (atribut lainnya), maka hitung jumlah kasus total, jumlah kasus Tepat Waktu dan jumlah kasus Tidak Tepat Waktu masing2 atribut // ambil nilai atribut $sqlNilaiAtribut = mysql_query("SELECT nilai_atribut FROM atribut WHERE atribut = '$getAtribut' ORDER BY id"); while($rowNilaiAtribut = mysql_fetch_array($sqlNilaiAtribut)) { $getNilaiAtribut = $rowNilaiAtribut['nilai_atribut']; // set kondisi dimana nilai_atribut = berdasakan masing2 atribut dan status data = data training $kondisi = "$getAtribut = '$getNilaiAtribut' AND status_data = 'Data Training' $kondisiAtribut"; // hitung jumlah kasus per atribut $sqlJumlahKasusTotalAtribut = mysql_query("SELECT COUNT(*) as jumlah_total FROM data_kasus WHERE $kondisi"); $rowJumlahKasusTotalAtribut = mysql_fetch_array($sqlJumlahKasusTotalAtribut); $getJumlahKasusTotalAtribut = $rowJumlahKasusTotalAtribut['jumlah_total']; // hitung jumlah kasus TepatWaktu $sqlJumlahKasusTepatWaktuAtribut = mysql_query("SELECT COUNT(*) as jumlah_tepat_waktu FROM data_kasus WHERE $kondisi AND class = 'Tepat Waktu'"); $rowJumlahKasusTepatWaktuAtribut = mysql_fetch_array($sqlJumlahKasusTepatWaktuAtribut); $getJumlahKasusTepatWaktuAtribut = $rowJumlahKasusTepatWaktuAtribut['jumlah_tepat_waktu']; // hitung jumlah kasus Tidak Tepat Waktu $sqlJumlahKasusTidakTepatWaktuAtribut = mysql_query("SELECT COUNT(*) as jumlah_tidak_tepat_waktu FROM data_kasus WHERE $kondisi AND class = 'Tidak Tepat Waktu'"); $rowJumlahKasusTidakTepatWaktuAtribut = mysql_fetch_array($sqlJumlahKasusTidakTepatWaktuAtribut); $getJumlahKasusTidakTepatWaktuAtribut = $rowJumlahKasusTidakTepatWaktuAtribut['jumlah_tidak_tepat_waktu'];
//#6# Insert jumlah kasus total, jumlah kasus Tepat Waktu dan jumlah kasus Tidak Tepat Waktu masing2 atribut ke DB // insert ke database mining_c45 mysql_query("INSERT INTO mining_c45 VALUES ('', '$getAtribut', '$getNilaiAtribut', '$getJumlahKasusTotalAtribut', '$getJumlahKasusTidakTepatWaktuAtribut', '$getJumlahKasusTepatWaktuAtribut', '', '', '', '', '', '')"); //akhir dari pengumpulan data //#7# Lakukan perhitungan entropy // perhitungan entropy $sqlEntropy = mysql_query("SELECT id, jml_kasus_total, jml_kasus_tepat_waktu, jml_kasus_tidak_tepat_waktu FROM mining_c45"); while($rowEntropy = mysql_fetch_array($sqlEntropy)) { $getJumlahKasusTotalEntropy = $rowEntropy['jml_kasus_total']; $getJumlahKasusTepatWaktuEntropy = $rowEntropy['jml_kasus_tepat_waktu']; $getJumlahKasusTidakTepatWaktuEntropy = $rowEntropy['jml_kasus_tidak_tepat_waktu']; $idEntropy = $rowEntropy['id']; // jika jml kasus = 0 maka entropy = 0 if ($getJumlahKasusTotalEntropy == 0 OR $getJumlahKasusTepatWaktuEntropy == 0 OR $getJumlahKasusTidakTepatWaktuEntropy == 0) { $getEntropy = 0; // jika jml kasus Tepat Waktu = jml kasus Tidak Tepat Waktu, maka entropy = 1 } else if ($getJumlahKasusTepatWaktuEntropy == $getJumlahKasusTidakTepatWaktuEntropy) { $getEntropy = 1; } else { // jika jml kasus != 0, maka hitung rumus entropy: $perbandingan_tepat_waktu = $getJumlahKasusTepatWaktuEntropy / $getJumlahKasusTotalEntropy; $perbandingantidak_tepat_waktu = $getJumlahKasusTidakTepatWaktuEntropy / $getJumlahKasusTotalEntropy; $rumusEntropy = (-($perbandingan_tepat_waktu) * log($perbandingan_tepat_waktu,2)) + (-($perbandingantidak_tepat_waktu) * log($perbandingantidak_tepat_waktu,2)); $getEntropy = round($rumusEntropy,4); // 4 angka di belakang koma } //#8# Update nilai entropy // update nilai entropy mysql_query("UPDATE mining_c45 SET entropy = $getEntropy WHERE id = $idEntropy"); }
//#9# Lakukan perhitungan information gain // perhitungan information gain // ambil nilai entropy dari total (jumlah kasus total) $sqlJumlahKasusTotalInfGain = mysql_query("SELECT jml_kasus_total, entropy FROM mining_c45 WHERE atribut = 'Total'"); $rowJumlahKasusTotalInfGain = mysql_fetch_array($sqlJumlahKasusTotalInfGain); $getJumlahKasusTotalInfGain = $rowJumlahKasusTotalInfGain['jml_kasus_total']; // rumus information gain $getInfGain = (-(($getJumlahKasusTotalEntropy / $getJumlahKasusTotalInfGain) * ($getEntropy))); //#10# Update information gain tiap nilai atribut (temporary) // update inf_gain_temp (utk mencari nilai masing2 atribut) mysql_query("UPDATE mining_c45 SET inf_gain_temp = $getInfGain WHERE id = $idEntropy"); $getEntropy = $rowJumlahKasusTotalInfGain['entropy']; // jumlahkan masing2 inf_gain_temp atribut $sqlAtributInfGain = mysql_query("SELECT SUM(inf_gain_temp) as inf_gain FROM mining_c45 WHERE atribut = '$getAtribut'"); while ($rowAtributInfGain = mysql_fetch_array($sqlAtributInfGain)) { $getAtributInfGain = $rowAtributInfGain['inf_gain']; // hitung inf gain $getInfGainFix = round(($getEntropy + $getAtributInfGain),4); //#11# Looping perhitungan information gain, sehingga mendapatkan information gain tiap atribut. Update information gain // update inf_gain (fix) mysql_query("UPDATE mining_c45 SET inf_gain = $getInfGainFix WHERE atribut = '$getAtribut'"); } //#12# Lakukan perhitungan split info // rumus split info $getSplitInfo = (($getJumlahKasusTotalEntropy / $getJumlahKasusTotalInfGain) * (log(($getJumlahKasusTotalEntropy / $getJumlahKasusTotalInfGain),2))); //#13# Update split info tiap nilai atribut (temporary) // update split_info_temp (utk mencari nilai masing2 atribut) mysql_query("UPDATE mining_c45 SET split_info_temp = $getSplitInfo WHERE id = $idEntropy"); // jumlahkan masing2 split_info_temp dari tiap atribut $sqlAtributSplitInfo = mysql_query("SELECT SUM(split_info_temp) as split_info FROM mining_c45 WHERE atribut = '$getAtribut'");
while ($rowAtributSplitInfo = mysql_fetch_array($sqlAtributSplitInfo)){ $getAtributSplitInfo = $rowAtributSplitInfo['split_info']; // split info fix (4 angka di belakang koma) $getSplitInfoFix = -(round($getAtributSplitInfo,4)); //#14# Looping perhitungan split info, sehingga mendapatkan information gain tiap atribut. Update information gain // update split info (fix) mysql_query("UPDATE mining_c45 SET split_info = $getSplitInfoFix WHERE atribut = '$getAtribut'"); } } // #15 //#15# Lakukan perhitungan gain ratio $sqlGainRatio = mysql_query("SELECT id, inf_gain, split_info FROM mining_c45"); while($rowGainRatio = mysql_fetch_array($sqlGainRatio)) { $idGainRatio = $rowGainRatio['id']; // jika nilai inf gain == 0 dan split info == 0, maka gain ratio = 0 if ($rowGainRatio['inf_gain'] == 0 AND $rowGainRatio['split_info'] == 0){ $getGainRatio = 0; } else { // rumus gain ratio $getGainRatio = round(($rowGainRatio['inf_gain'] / $rowGainRatio['split_info']),4); } //#16# Update gain ratio dari setiap atribut mysql_query("UPDATE mining_c45 SET gain_ratio = $getGainRatio WHERE id = '$idGainRatio'"); } } } } //#17# Insert atribut dgn information gain max ke DB pohon keputusan function insertAtributPohonKeputusan($atribut, $nilai_atribut) { // ambil nilai inf gain tertinggi dimana hanTepatWaktu 1 atribut saja yg dipilih $sqlInfGainMaxTemp = mysql_query("SELECT distinct atribut, gain_ratio FROM mining_c45 WHERE
gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) LIMIT 1"); $rowInfGainMaxTemp = mysql_fetch_array($sqlInfGainMaxTemp); } ?> function/kinerjac45.php <?php include "../../../config/koneksi.php"; mysql_query("TRUNCATE data_keputusan_kinerja"); $arrayPerbandingan = array(); // buat array baru // ambil data Mahasiswa $sqlDataTesting = mysql_query("SELECT * FROM data_kasus where status_data = 'Data Training'"); while($rowDataTesting = mysql_fetch_array($sqlDataTesting)) { if (!empty($rowDataTesting)) { // masukkan tiap nilai atribut data Mahasiswa pada array $array['id_data_mahasiswa'] = $rowDataTesting['id_data_mahasiswa']; $array['class'] = $rowDataTesting['class']; $arrayPerbandingan[] = $array; } } foreach ($arrayPerbandingan as $atribut) { // ambil atribut dan panggil fungsi penentuKeputusan() penentuKeputusan($atribut); } function penentuKeputusan($atribut) { mysql_query("TRUNCATE data_penentu_keputusan"); // buat variabel baru dan masukkan masing-masing atribut $id_data_mahasiswa = "$atribut[id_data_mahasiswa]"; $sqlDataMahasiswa = mysql_query("SELECT * FROM data_kasus WHERE id_data_mahasiswa = '$id_data_mahasiswa'"); $rowDataMahasiswa = mysql_fetch_array($sqlDataMahasiswa); $nim = $rowDataMahasiswa['nim']; $nama = $rowDataMahasiswa['nama']; //$jenis_kelamin = $rowDataMahasiswa['jenis_kelamin']; $jurusan = $rowDataMahasiswa['jurusan'];
$nilai_ips1 = $rowDataMahasiswa['nilai_ips1']; $nilai_ips1_kategori = $rowDataMahasiswa['nilai_ips1_kategori']; $nilai_ips2 = $rowDataMahasiswa['nilai_ips2']; $nilai_ips2_kategori = $rowDataMahasiswa['nilai_ips2_kategori']; $nilai_ips3 = $rowDataMahasiswa['nilai_ips3']; $nilai_ips3_kategori = $rowDataMahasiswa['nilai_ips3_kategori']; $nilai_ips4 = $rowDataMahasiswa['nilai_ips4']; $nilai_ips4_kategori = $rowDataMahasiswa['nilai_ips4_kategori']; /* $nilai_ips5 = $rowDataMahasiswa['nilai_ips5']; $nilai_ips5_kategori = $rowDataMahasiswa['nilai_ips5_kategori']; $nilai_ips6 = $rowDataMahasiswa['nilai_ips6']; $nilai_ips6_kategori = $rowDataMahasiswa['nilai_ips6_kategori']; $nilai_ips7 = $rowDataMahasiswa['nilai_ips7']; $nilai_ips7_kategori = $rowDataMahasiswa['nilai_ips7_kategori']; $nilai_ips8 = $rowDataMahasiswa['nilai_ips8']; $nilai_ips8_kategori = $rowDataMahasiswa['nilai_ips8_kategori']; */ $class = $atribut['class']; //"jenis_kelamin" => "$jenis_kelamin", // masukkan variabel pada array $array2 = array( "jurusan" => "$jurusan", "nilai_ips1_kategori" => "$nilai_ips1_kategori", "nilai_ips2_kategori" => "$nilai_ips2_kategori", "nilai_ips3_kategori" => "$nilai_ips3_kategori", "nilai_ips4_kategori" => "$nilai_ips4_kategori" /* "nilai_ips5_kategori" => "$nilai_ips5_kategori", "nilai_ips6_kategori" => "$nilai_ips6_kategori", "nilai_ips7_kategori" => "$nilai_ips7_kategori", "nilai_ips8_kategori" => "$nilai_ips8_kategori" */ ); // ambil atribut yang ada di pohon $sqlSelectDistinctAtribut = mysql_query("SELECT distinct atribut FROM pohon_keputusan_c45"); while($rowSelectDistinctAtribut = mysql_fetch_array($sqlSelectDistinctAtribut)) { if (!empty($rowSelectDistinctAtribut)) { foreach ($array2 as $atribut_array => $nilai_atribut_array) { // jika atribut pada pohon sama dgn atribut yg ada di array (atribut yg di post-kan) maka insert atribut dan nilai atribut pada db if ($rowSelectDistinctAtribut['atribut'] == $atribut_array) { mysql_query("INSERT INTO data_penentu_keputusan VALUES('', '$atribut_array', '$nilai_atribut_array')");
} } } } $arrayPenentuKeputusan = array(); // buat array baru // ambil atribut dan nilai atribut pada db data penentu keputusan $sqlDataPenentuKeputusan = mysql_query("SELECT * FROM data_penentu_keputusan"); while($rowDataPenentuKeputusan = mysql_fetch_array($sqlDataPenentuKeputusan)) { $sqlRulePenentuKeputusan = mysql_query("SELECT * FROM rule_penentu_keputusan where pohon = 'C45'"); while($rowRulePenentuKeputusan = mysql_fetch_array($sqlRulePenentuKeputusan)) { if (!empty($rowRulePenentuKeputusan)) { // jika atribut pada db data_penentu_keputusan sama dengan atribut pada db rule_penentu_keputusan if ($rowRulePenentuKeputusan['atribut'] == $rowDataPenentuKeputusan['atribut']) { // jika nilai atribut pada db data_penentu_keputusan sama dengan nilai atribut pada db rule_penentu_keputusan if ($rowRulePenentuKeputusan['nilai_atribut'] == $rowDataPenentuKeputusan['nilai_atribut']) { // set nilai id, cocok dan masukkan pada array $arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id']; $arrayPenentuKeputusanTemp['cocok'] = "Ya"; $arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp; } elseif ($rowRulePenentuKeputusan['nilai_atribut'] !== $rowDataPenentuKeputusan['nilai_atribut']) { // set nilai id, cocok dan masukkan pada array $arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id']; $arrayPenentuKeputusanTemp['cocok'] = "Tidak"; $arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp; } } } } } foreach ($arrayPenentuKeputusan as $arrayPenentuKeputusanUpdate) { // update nilai cocok dari array sebelumnya mysql_query("UPDATE rule_penentu_keputusan SET cocok = '$arrayPenentuKeputusanUpdate[cocok]' where id = $arrayPenentuKeputusanUpdate[id]"); }
// queri utk mengambil keputusan dan id rule berdasarkan nilai atribut yg cocok (nilai atribut rule == nilai atribut yg dipost-kan) $sqlKeputusan = mysql_query("SELECT distinct id_rule, keputusan FROM `rule_penentu_keputusan` WHERE pohon = 'C45' AND cocok = 'Ya' and id_rule not in (select distinct id_rule from `rule_penentu_keputusan` where pohon = 'C45' AND cocok = 'Tidak')"); $rowKeputusan = mysql_fetch_array($sqlKeputusan); if (!empty($rowKeputusan)) { $keputusan = "$rowKeputusan[keputusan]"; $idRule = "$rowKeputusan[id_rule]"; // insert data keputusan pada db mysql_query("INSERT INTO data_keputusan_kinerja VALUES('', '$id_data_mahasiswa', '$class', '$keputusan', '$idRule') "); } } function/penentukeputusan.php <?php include "../../../config/koneksi.php"; mysql_query("TRUNCATE data_penentu_keputusan"); // buat variabel baru yg berisi data yg di post-kan $nim = $_POST['nim']; $nama = $_POST['nama']; $jenis_kelamin = $_POST['jenis_kelamin']; $jurusan = $_POST['jurusan']; $nilai_ips1 = $_POST['nilai_ips1']; $nilai_ips2 = $_POST['nilai_ips2']; $nilai_ips3 = $_POST['nilai_ips3']; $nilai_ips4 = $_POST['nilai_ips4']; if ($_POST['nilai_ips1'] >=0 AND $_POST['nilai_ips1'] <= 2.00) { $nilai_ips1_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips1'] >=2.00 AND $_POST['nilai_ips1'] <= 2.76) { $nilai_ips1_kategori = "Memuaskan"; } else if ($_POST['nilai_ips1'] >=2.76 AND $_POST['nilai_ips1'] <= 3.50) { $nilai_ips1_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips1'] >=3.51 AND $_POST['nilai_ips1'] <= 4.00) {
$nilai_ips1_kategori = "Cumlaude"; } if ($_POST['nilai_ips2'] >=0 AND $_POST['nilai_ips2'] <= 2.00) { $nilai_ips2_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips2'] >=2.00 AND $_POST['nilai_ips2'] <= 2.76) { $nilai_ips2_kategori = "Memuaskan"; } else if ($_POST['nilai_ips2'] >=2.76 AND $_POST['nilai_ips2'] <= 3.50) { $nilai_ips2_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips2'] >=3.51 AND $_POST['nilai_ips2'] <= 4.00) { $nilai_ips2_kategori = "Cumlaude"; } if ($_POST['nilai_ips3'] >=0 AND $_POST['nilai_ips3'] <= 2.00) { $nilai_ips3_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips3'] >=2.00 AND $_POST['nilai_ips3'] <= 2.76) { $nilai_ips3_kategori = "Memuaskan"; } else if ($_POST['nilai_ips3'] >=2.76 AND $_POST['nilai_ips3'] <= 3.50) { $nilai_ips3_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips3'] >=3.51 AND $_POST['nilai_ips3'] <= 4.00) { $nilai_ips3_kategori = "Cumlaude"; } if ($_POST['nilai_ips4'] >=0 AND $_POST['nilai_ips4'] <= 2.00) { $nilai_ips4_kategori = "Kurang Memuaskan"; } else if ($_POST['nilai_ips4'] >=2.00 AND $_POST['nilai_ips4'] <= 2.76) { $nilai_ips4_kategori = "Memuaskan"; } else if ($_POST['nilai_ips4'] >=2.76 AND $_POST['nilai_ips4'] <= 3.50) { $nilai_ips4_kategori = "Sangat Memuaskan"; } else if ($_POST['nilai_ips4'] >=3.51 AND $_POST['nilai_ips4'] <= 4.00) { $nilai_ips4_kategori = "Cumlaude"; } //"jenis_kelamin" => "$jenis_kelamin", // masukkan variabel pada array $array2 = array( "jurusan" => "$jurusan", "nilai_ips1_kategori" => "$nilai_ips1_kategori", "nilai_ips2_kategori" => "$nilai_ips2_kategori", "nilai_ips3_kategori" => "$nilai_ips3_kategori",
"nilai_ips4_kategori" => "$nilai_ips4_kategori", ); $sqlSelectDistinctAtribut = mysql_query("SELECT distinct atribut FROM pohon_keputusan_c45"); while($rowSelectDistinctAtribut = mysql_fetch_array($sqlSelectDistinctAtribut)) { if (!empty($rowSelectDistinctAtribut)) { foreach ($array2 as $atribut_array => $nilai_atribut_array) { // jika atribut pada pohon sama dgn atribut yg ada di array (atribut yg di post-kan) maka insert atribut dan nilai atribut pada db if ($rowSelectDistinctAtribut['atribut'] == $atribut_array) { mysql_query("INSERT INTO data_penentu_keputusan VALUES('', '$atribut_array', '$nilai_atribut_array')"); } } } } $arrayPenentuKeputusan = array(); // buat array baru // ambil atribut dan nilai atribut pada db data penentu keputusan $sqlDataPenentuKeputusan = mysql_query("SELECT atribut, nilai_atribut FROM data_penentu_keputusan"); while($rowDataPenentuKeputusan = mysql_fetch_array($sqlDataPenentuKeputusan)) { // ambil atribut dan nilai atribut pada db rule_penentu_keputusan $sqlRulePenentuKeputusan = mysql_query("SELECT id, atribut, nilai_atribut FROM rule_penentu_keputusan where pohon = 'C45'"); while($rowRulePenentuKeputusan = mysql_fetch_array($sqlRulePenentuKeputusan)) { if (!empty($rowRulePenentuKeputusan)) { // jika atribut pada db data_penentu_keputusan sama dengan atribut pada db rule_penentu_keputusan if ($rowRulePenentuKeputusan['atribut'] == $rowDataPenentuKeputusan['atribut']) { // jika nilai atribut pada db data_penentu_keputusan sama dengan nilai atribut pada db rule_penentu_keputusan if ($rowRulePenentuKeputusan['nilai_atribut'] == $rowDataPenentuKeputusan['nilai_atribut']) { // set nilai id, cocok dan masukkan pada array $arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id']; $arrayPenentuKeputusanTemp['cocok'] = "Ya"; $arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp; } elseif ($rowRulePenentuKeputusan['nilai_atribut'] !== $rowDataPenentuKeputusan['nilai_atribut']) { // set nilai id, cocok dan masukkan pada array $arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id']; $arrayPenentuKeputusanTemp['cocok'] = "Tidak"; $arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp;
} } } } } foreach ($arrayPenentuKeputusan as $arrayPenentuKeputusanUpdate) { // update nilai cocok dari array sebelumnya mysql_query("UPDATE rule_penentu_keputusan SET cocok = '$arrayPenentuKeputusanUpdate[cocok]' where id = $arrayPenentuKeputusanUpdate[id]"); } // queri utk mengambil keputusan dan id rule berdasarkan nilai atribut yg cocok (nilai atribut rule == nilai atribut yg dipost-kan) $sqlKeputusan = mysql_query("SELECT distinct id_rule, keputusan FROM `rule_penentu_keputusan` WHERE pohon = 'C45' AND cocok = 'Ya' and id_rule not in (select distinct id_rule from `rule_penentu_keputusan` where pohon = 'C45' AND cocok = 'Tidak')"); $rowKeputusan = mysql_fetch_array($sqlKeputusan); if (!empty($rowKeputusan)) { $keputusan = "$rowKeputusan[keputusan]"; $idRule = "$rowKeputusan[id_rule]"; // insert data keputusan pada db mysql_query("INSERT INTO data_keputusan VALUES('', '$nim', '$nama', '$jenis_kelamin', '$jurusan', '$nilai_ips1', '$nilai_ips1_kategori', '$nilai_ips2', '$nilai_ips2_kategori', '$nilai_ips3', '$nilai_ips3_kategori', '$nilai_ips4', '$nilai_ips4_kategori', '$keputusan', '$idRule') "); } $w=isset($keputusan);
echo "<script>alert('Data berhasil diinput! Keputusan yang dihasilkan adalah : $keputusan'); document.location.href='../../media.php?module=penentu_keputusan';</script>";