• Tidak ada hasil yang ditemukan

Implementasi data mining dengan algoritma c4.5 untuk memprediksi tingkat kelulusan mahasiswa (studi kasus: program studi teknik informatika universitas multimedia nusantara)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Implementasi data mining dengan algoritma c4.5 untuk memprediksi tingkat kelulusan mahasiswa (studi kasus: program studi teknik informatika universitas multimedia nusantara)"

Copied!
33
0
0

Teks penuh

(1)Hak cipta dan penggunaan kembali: Lisensi ini mengizinkan setiap orang untuk menggubah, memperbaiki, dan membuat ciptaan turunan bukan untuk kepentingan komersial, selama anda mencantumkan nama penulis dan melisensikan ciptaan turunan dengan syarat yang serupa dengan ciptaan asli. Copyright and reuse: This license lets you remix, tweak, and build upon work non-commercially, as long as you credit the origin creator and license it on your new creations under the identical terms.. Team project ©2017 Dony Pratidana S. Hum | Bima Agus Setyawan S. IIP.

(2) DAFTAR LAMPIRAN 1. 60 Data Training 2. 40 Data Testing dan Hasil Prediksi Aplikasi 3. Source Code Data Training 4. Source Code Data Testing 5. Source Code Data Testing Excel 6. Form Penilaian Aplikasi 7. Form Konsultasi Skripsi. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(3) Lampiran 1 : 60 Data Training. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(4) Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(5) Lampiran 2: 40 Data Testing dan Hasil Prediksi. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(6) Lampiran 3 : Source Code Data Training using using using using using using using using using. System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms;. using System.Data.OleDb; namespace WindowsFormsApplication2 { public partial class DataTraining : Form { /* *array x dari 1-6 ips *array x 7 jenis kelamin L dan P *array x 8 jenis sma contoh = SMA1 - SMA9, dll *array y dari x 1-6 5 jumlah data yang dapat nilai a,b,c,d,e *array x 9 jenis kelulusan */ double[,] jlh = new double[9, 10]; // untuk hitung detail entropy double[, ,] jlh_detail = new double[9, 10, 4]; int x,y,z; // untuk array 3 dimensi string[] sma = new string[10]; // variabel untuk entropy double entropy = 0; double[,] entropy_detail = new double[9, 10]; // variabel untuk gain double[] gain = new double[9]; int idx = 0; int total_data = 0; public DataTraining() { InitializeComponent(); } // function untuk set null semua variabel private void set_null() { for (x = 0; x < 8; x++) { gain[x] = 0; for (y = 0; y < 10; y++) { jlh[x, y] = 0; for (z = 0; z < 4; z++) jlh_detail[x, y, z] = 0; } } } private void button1_Click(object sender, EventArgs e) {. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(7) OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.txtFile.Text = ofd.FileName; btnProsesExcel.Enabled = true; } } // hitung jumlah kelulusan private void hit_jlh_detail(int kat,char parm, int idx) { if (parm == '1') jlh_detail[kat, idx, 0]++; else if (parm == '2') jlh_detail[kat, idx, 1]++; else if (parm == '3') jlh_detail[kat, idx, 2]++; else if (parm == '4') jlh_detail[kat, idx, 3]++; } private void hitung_jumlah() { // 3-8 untuk ips, 9 untuk jenis kelamin, 10 untuk sma dan 11 untuk tanda kelulusan for (int x = 3; x <= 11; x++) { for (int y = 0; y < total_data; y++) { // hitung jumlah nilai ips 1-6 if (x < 9) { Double temp = Convert.ToDouble(dgvTrainingData.Rows[y].Cells[x].Value.ToString()); string temp2 = dgvTrainingData.Rows[y].Cells[11].Value.ToString(); // untuk nilai ips diatas if (temp >= 3) { jlh[x - 3, 0] += 1; hit_jlh_detail(x - 3, } else if (temp >= 2) { jlh[x - 3, 1] += 1; hit_jlh_detail(x - 3, } else if (temp >= 1) { jlh[x - 3, 2] += 1; hit_jlh_detail(x - 3, } else { jlh[x - 3, 3] += 1; hit_jlh_detail(x - 3, }. 3 dst. temp2[0], 0);. temp2[0], 1);. temp2[0], 2);. temp2[0], 3);. } // hitung jumlah jk. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(8) else if (x == 9) { string temp = dgvTrainingData.Rows[y].Cells[x].Value.ToString(); string temp2 = dgvTrainingData.Rows[y].Cells[11].Value.ToString(); if (temp[0] == 'L') { jlh[x - 3, 0]++; hit_jlh_detail(x - 3, temp2[0], 0); } else { jlh[x - 3, 1]++; hit_jlh_detail(x - 3, temp2[0], 1); } } // hitung jumlah sma else if (x == 10) { string temp = dgvTrainingData.Rows[y].Cells[x].Value.ToString(); string temp2 = dgvTrainingData.Rows[y].Cells[11].Value.ToString(); int flag = 0; // masukkan sma kedalam array for (int z = 0; z < 9; z++) { if (sma[z] == temp) { jlh[x - 3, z]++; hit_jlh_detail(x - 3, temp2[0], z); z++; } else flag++; } if (flag == 9) { jlh[x - 3, 9]++; hit_jlh_detail(x - 3, temp2[0], 9); } } // hitung jumlah kelulusan else if (x == 11) { string temp = dgvTrainingData.Rows[y].Cells[x].Value.ToString(); if (temp[0] == '1') jlh[x - 3, 0]++; else if (temp[0] == '2') jlh[x - 3, 1]++; else if (temp[0] == '3') jlh[x - 3, 2]++; else jlh[x - 3, 3]++; }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(9) } } } private void hitung_gain() { /* Masuk pada rumus masukkan entropi dan gain Dimana menggunakan Math.log(x) = ln(x) */ // Entropy total entropy = (hit_entropy(jlh[8, 0], total_data)*-1) hit_entropy(jlh[8, 1], total_data) - hit_entropy(jlh[8, 2], total_data) - hit_entropy(jlh[8, 3], total_data); // Entropy detail for (x = 0; x < 9; x++) {// array untuk kategori seperti ips 1, ips 2 dst for (y = 0; y < 10; y++) {// array untuk isi data, a,b,c,d (ips) l,p (JenKel) sma110 (Sekolah) entropy_detail[x, y] = (hit_entropy(jlh_detail[x, y, 0], jlh[x, y])*-1) - hit_entropy(jlh_detail[x, y, 1], jlh[x, y]) - hit_entropy(jlh_detail[x, y, 2], jlh[x, y]) - hit_entropy(jlh_detail[x, y, 3], jlh[x, y]); } }. (jlh[x, 1] (jlh[x, 3]. (jlh[x, 1] (jlh[x, 3]. // Perhitungan Gain masing-masing kategori for (x = 0; x < 9; x++) { // kategori ips 1 sampai dengan ips 6 if (x < 6) { gain[x] = entropy - ( (jlh[x, 0] / total_data) * entropy_detail[x, / total_data) * entropy_detail[x, 1] + (jlh[x, 2] / total_data) * entropy_detail[x, / total_data) * entropy_detail[x, 3] ); } // kategori jenis kelamin if (x == 6) { gain[x] = entropy - ( (jlh[x, 0] / total_data) * entropy_detail[x, (jlh[x, 1] / total_data) * entropy_detail[x, ); } // kategori SMA if (x == 7) { gain[x] = entropy - ( (jlh[x, 0] / total_data) * entropy_detail[x, / total_data) * entropy_detail[x, 1] + (jlh[x, 2] / total_data) * entropy_detail[x, / total_data) * entropy_detail[x, 3] +. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014. 0] + 2] +. 0] + 1]. 0] + 2] +.

(10) (jlh[x, 4] / total_data) * entropy_detail[x, 4] + (jlh[x, 5] / total_data) * entropy_detail[x, 5] + (jlh[x, 6] / total_data) * entropy_detail[x, 6] + (jlh[x, 7] / total_data) * entropy_detail[x, 7] + (jlh[x, 8] / total_data) * entropy_detail[x, 8] + (jlh[x, 9] / total_data) * entropy_detail[x, 9] ); } } } private void btnProsesExcel_Click(object sender, EventArgs e) { bool flag = false; mnuInput.Enabled = true; string PathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtFile.Text + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";"; OleDbConnection conn = new OleDbConnection(PathConn); try { OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [Sheet1$]", conn); DataTable dt = new DataTable(); myDataAdapter.Fill(dt); dgvTrainingData.DataSource = dt; total_data = dgvTrainingData.Rows.Count - 1; proses_data_sma(); flag = true; } catch (Exception ex) { MessageBox.Show("Open your excel or invalid file! Please read form help."); frmHelp frm = new frmHelp(); frm.Show(); } try { if (flag) { hitung_jumlah(); hitung_gain(); add_datagridview(); prosesTree(); btnProsesExcel.Enabled = false; } } catch (Exception ex) { MessageBox.Show("Tidak bisa diproses karena " + ex.Message); } } private void proses_data_sma() { int idx_sma=0, sum=0; for (x = 0; x < total_data; x++) {. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(11) string temp = dgvTrainingData.Rows[x].Cells[10].Value.ToString(); if (x == 0) sma[idx_sma] = temp; else { // cek sma yg sama sum = 0; for (y = 0; y < sma.Count(); y++) { if (sma[y] != temp) { sum++; } } if (sum >= 10) { idx_sma++; if (idx_sma > 9) sma[9] = "Dan Lain-lain"; else sma[idx_sma] = temp; } } } } private void prosesTree() { double max_gain = -99; //cari gain tertinggi for (x = 0; x < 8; x++) { if (max_gain < gain[x]) { max_gain = gain[x]; idx = x; } } } private string rate_nilai(int k_nilai) { switch (k_nilai) { case 0: return "3 - 4"; break; case 1: return "2 - 3"; break; case 2: return "1 - 2"; break; case 3: return "0 - 1"; break; default: return " "; break; } } // Function untuk memasukkan hasil data dalam grid view private void add_datagridview() { dgv_entropy_gain.ColumnCount = 9; dgv_entropy_gain.Columns[0].Name = "Kategori"; dgv_entropy_gain.Columns[1].Name = "Kategori Data"; dgv_entropy_gain.Columns[2].Name = "Jumlah";. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(12) dgv_entropy_gain.Columns[3].Name dgv_entropy_gain.Columns[4].Name dgv_entropy_gain.Columns[5].Name dgv_entropy_gain.Columns[6].Name dgv_entropy_gain.Columns[7].Name dgv_entropy_gain.Columns[8].Name. = = = = = =. "Lulus Cepat"; "Lulus Tepat"; "Lulus Terlambat"; "Tidak Lulus"; "Entropy"; "Gain";. for (x = 0; x < 9; x++) {// array untuk kategori seperti ips 1, ips 2 dst for (y = 0; y < 10; y++) {// array untuk isi data, a,b,c,d (ips) l,p (JenKel) sma110 (Sekolah) // hitung entropy dari IPS 1-6 if (x < 6) { if (y < 4) { string[] row = new string[] { "IPS " + (x + 1), "Nilai "+rate_nilai(y), jlh[x,y].ToString(), jlh_detail[x,y,0].ToString(), jlh_detail[x,y,1].ToString(), jlh_detail[x,y,2].ToString(), jlh_detail[x,y,3].ToString(), entropy_detail[x,y].ToString(), gain[x].ToString()}; dgv_entropy_gain.Rows.Add(row); } } // jenis kelamin if (x == 6) { if (y < 2) { if (y == 0) { string[] row = new string[] { "Jenis Kelamin", "L", jlh[x,y].ToString(), jlh_detail[x,y,0].ToString(), jlh_detail[x,y,1].ToString(), jlh_detail[x,y,2].ToString(), jlh_detail[x,y,3].ToString(), entropy_detail[x,y].ToString(), gain[x].ToString()}; dgv_entropy_gain.Rows.Add(row); } else { string[] row = new string[] { "Jenis Kelamin", "P", jlh[x,y].ToString(), jlh_detail[x,y,0].ToString(), jlh_detail[x,y,1].ToString(), jlh_detail[x,y,2].ToString(), jlh_detail[x,y,3].ToString(), entropy_detail[x,y].ToString(), gain[x].ToString()}; dgv_entropy_gain.Rows.Add(row); } } } // jenis sma if (x == 7) { string[] row = new string[] { "SMA", sma[y], jlh[x,y].ToString(),. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(13) jlh_detail[x,y,0].ToString(), jlh_detail[x,y,1].ToString(), jlh_detail[x,y,2].ToString(), jlh_detail[x,y,3].ToString(), entropy_detail[x,y].ToString(), gain[x].ToString()}; dgv_entropy_gain.Rows.Add(row); } } } int warna = 0; foreach (DataGridViewRow row in dgv_entropy_gain.Rows) { warna++; if (warna % 2 == 0) row.DefaultCellStyle.BackColor = System.Drawing.Color.Aqua; } foreach (DataGridViewRow row in dgvTrainingData.Rows) { warna++; if (warna % 2 == 0) row.DefaultCellStyle.BackColor = System.Drawing.Color.Aqua; } } // hitung jumlah entropy private double hit_entropy(double jumlah, double total) { if (jumlah == 0 || total == 0) return 0; double hasil = jumlah / total * Math.Log(jumlah / total) / Math.Log(2); return hasil; } private void historyToolStripMenuItem_Click(object sender, EventArgs e) { DataTesting frm = new DataTesting(idx, dgvTrainingData, jlh, sma, jlh_detail); frm.Show(); } private void mnuExit_Click(object sender, EventArgs e) { this.Close(); } private void mnuOpen_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.txtFile.Text = ofd.FileName; btnProsesExcel.Enabled = true; } } private void mnuHelp_Click(object sender, EventArgs e) { frmHelp frm = new frmHelp();. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(14) frm.Show(); } private void mnuAboutUs_Click(object sender, EventArgs e) { frmAboutUs frm = new frmAboutUs(); frm.Show(); } private void btnQuit_Click(object sender, EventArgs e) { this.Close(); } } }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(15) Lampiran 4 : Source Code Data Testing using using using using using using using using using. System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms;. namespace WindowsFormsApplication2 { public partial class DataTesting : Form { double[,,] jlh_detail = new double[9, 10,4]; double[,] jlh = new double[9, 10]; int x, y, z; // untuk array 3 dimensi string[] sma = new string[10]; double[] in_ips = new double[6]; double[, ,] dta_lls = new double[9, 10, 4]; int jk, sekolah; int jlh_sks = 0; double total_data = 0; int total = 0; int parent; // variabel untuk entropy // variabel untuk gain // untuk hitung detail entropy double entropy = 0; double entropy_child = 0; double[] gain_child = new double[9]; double[,] entropy_detail_child = new double[9, 10]; double[,] jlh_child = new double[9, 10]; double[, ,] jlh_detail_child = new double[9, 10, 4]; string[,] data_training = new string[10,1000]; string[,] temp_data_training = new string[10, 1000]; // variabel untuk yg excel. int ex_idx_max; double[,] ex_jlh_detail; string[] ex_sma; double[,,] ex_dta_lls; DataGridView ex_dgv_training; int in_atribute, node_flag = 0; public DataTesting(int in_idx_max, DataGridView in_dgv_training, double[,] in_jlh_detail, string[] in_sma, double[,,] in_dta_lls) { ex_idx_max = in_idx_max; ex_jlh_detail = in_jlh_detail; ex_dgv_training = in_dgv_training; ex_sma = in_sma; ex_dta_lls = in_dta_lls;. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(16) InitializeComponent(); //input data training add_data_sma(in_sma); total = in_dgv_training.Rows.Count - 1; for (x = 0; x < in_dgv_training.Rows.Count - 1; x++) { for (y = 0; y < 10; y++) { temp_data_training[y, x] = in_dgv_training.Rows[x].Cells[3 + y].Value.ToString(); } } data_training = temp_data_training; parent = in_idx_max; reset(); } private void reset() { parent = ex_idx_max; node_flag = 0; for (x = 0; x < ex_dgv_training.Rows.Count - 1; x++) { for (y = 0; y < 10; y++) { temp_data_training[y, x] = ex_dgv_training.Rows[x].Cells[3 + y].Value.ToString(); } } for (x = 0; x < 9; x++) { for (y = 0; y < 10; y++) { jlh[x, y] = ex_jlh_detail[x, y]; for (z = 0; z < 4; z++) { dta_lls[x, y, z] = ex_dta_lls[x, y, z]; } } } jlh_child = jlh; jlh_detail_child = dta_lls; } public string[] proses_excel(string[,] data_testing, int total_dt) { string[] k_lulus = new string[1000]; for (int c = 0; c < total_dt; c++) { for (int a = 0; a < ex_dgv_training.Rows.Count - 1; a++) { for (int b = 0; b < 10; b++) { temp_data_training[b, a] = ex_dgv_training.Rows[a].Cells[3 + b].Value.ToString(); }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(17) } total = ex_dgv_training.Rows.Count - 1; if (set_data_excel(data_testing, c)) { // jumlah atribute dari kategori parent 1 int flag_klr = 0; Boolean keputusan = true; // jika jumlah attribute yang lain 0 maka langsung masuk kedalam keputusan if (parent < 6) { in_atribute = tipe_nilai(in_ips[parent]); } else if (parent == 6) { in_atribute = jk; } else if (parent == 7) { in_atribute = sekolah; } if (cek_keputusan()) { k_lulus[c] = cek_nilai_max_keputusan(in_atribute, parent); } // jika tidak akan mencari node yang baru dan menghitung gain kembali else { do { update_data(parent, in_atribute); if (parent < 6) { total_data = jlh_child[parent, in_atribute - 1]; } else { total_data = jlh_child[parent, in_atribute]; } reset_child(); hit_gain_child(); node_flag = (node_flag * 10) + parent; //MessageBox.Show(parent.ToString()+" "+total_data.ToString()); parent = max_gain(); if (parent < 6) { in_atribute = tipe_nilai(in_ips[parent]); } else if (parent == 6) { in_atribute = jk; }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(18) else if (parent == 7) { in_atribute = sekolah; } if (cek_keputusan()) { keputusan = false; } flag_klr++; if (flag_klr > 100) { keputusan = false; } } while (keputusan); if (parent < 6) { k_lulus[c] = cek_nilai_max_keputusan(in_atribute - 1, parent); } else k_lulus[c] = cek_nilai_max_keputusan(in_atribute, parent); } } else { MessageBox.Show("Data pada line "+c.ToString()+" masih salah."); this.Close(); } } return k_lulus; } private void btnProses_Click(object sender, EventArgs e) { if (in_data()) { // jumlah atribute dari kategori parent 1 int flag_klr = 0; lblhasil.Text = " "; double total = 0; Boolean keputusan = true; if (parent < 6) { in_atribute = tipe_nilai(in_ips[parent]); } else if (parent == 6) { in_atribute = jk; } else if (parent == 7) { in_atribute = sekolah; } // jika jumlah attribute yang lain 0 maka langsung masuk kedalam keputusan. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(19) if (cek_keputusan()) { lblhasil.Text += "Keputusan " + (cek_nilai_max_keputusan(in_atribute, parent)); } // jika tidak akan mencari node yang baru dan menghitung gain kembali else { do { update_data(parent, in_atribute); if (parent < 6) { total_data = jlh_child[parent, in_atribute 1]; } else { total_data = jlh_child[parent, in_atribute 1]; } reset_child(); hit_gain_child(); node_flag = (node_flag * 10) + parent; parent = max_gain(); if (parent < 6) { in_atribute = tipe_nilai(in_ips[parent]); } else if (parent == 6) { in_atribute = jk; } else if (parent == 7) { in_atribute = sekolah; } if (cek_keputusan()) { keputusan = false; } } while (keputusan); if (parent < 6) { lblhasil.Text += "Keputusan " + (cek_nilai_max_keputusan(in_atribute - 1, parent)); } else lblhasil.Text += "Keputusan " + (cek_nilai_max_keputusan(in_atribute, parent)); } } } private void add_data_sma(string[] in_sma). Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(20) { sma = in_sma; cbxSma.DataSource = in_sma; } private bool in_data() { string temp = cbxjk.Text; try { jlh_sks = int.Parse(txtJlhSks.Text); in_ips[0] = double.Parse(ips1.Text); in_ips[1] = double.Parse(ips2.Text); in_ips[2] = double.Parse(ips3.Text); in_ips[3] = double.Parse(ips4.Text); in_ips[4] = double.Parse(ips5.Text); in_ips[5] = double.Parse(ips6.Text); if (temp[0] == 'L') { jk = 0; } else jk = 1; sekolah = cek_sma(cbxSma.Text); if (in_ips[0] >= 0 && in_ips[1] >= 0 && in_ips[2] >= 0 && in_ips[3] >= 0 && in_ips[4] >= 0 && in_ips[5] >= 0 && in_ips[0] <= 4 && in_ips[1] <= 4 && in_ips[2] <= 4 && in_ips[3] <= 4 && in_ips[4] <= 4 && in_ips[5] <= 4) { return true; } else { MessageBox.Show("Data yang dimasukkan salah. Silakan masukkan data kembali atau baca pentunjuk dengan menekan button help."); return false; } } catch (Exception e) { MessageBox.Show("Data yang dimasukkan salah. Silakan masukkan data kembali atau baca pentunjuk dengan menekan button help."); return false; } // proses combo box sekolah } // cek keputusan private Boolean cek_keputusan() { int flag = 1; for (int x = 0; x < 4; x++) { if (parent < 6) { if (jlh_detail_child[parent, in_atribute - 1, x] == 0) { flag++; } }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(21) else { if (jlh_detail_child[parent, in_atribute, x] == 0) { flag++; } } } if (flag > 3) return true; else return false; } // cek nilai maximum keputusan private string cek_nilai_max_keputusan(int attribute, int kategori) { double max = 0; int idx = -1; for (x = 0; x < 4; x++) { if (max < jlh_detail_child[kategori, attribute, x]) { idx = x; max = jlh_detail_child[kategori, attribute, x]; } } if (jlh_sks > 140) idx = -1; if (jlh_sks < 119 && idx < 3) { idx = 2; if (jlh_sks < 60) idx = 3; } reset(); switch (idx) { case 0: lblhasil.ForeColor = System.Drawing.Color.Blue; return "Lulus Cepat"; break; case 1: lblhasil.ForeColor = System.Drawing.Color.Blue; return "Lulus Tepat"; break; case 2: lblhasil.ForeColor = System.Drawing.Color.Red; return "Lulus Terlambat"; break; case 3: lblhasil.ForeColor = System.Drawing.Color.Red; return "Tidak lulus / Drop Out"; break; default: return "Tidak ada hasil"; } } private void update_data(int in_idx_kategori, int in_idx_atribute) { for (int x = 0; x < 9; x++) { for (int y = 0; y < total; y++) { if (in_idx_kategori < 6) { double temp3 = Convert.ToDouble(data_training[in_idx_kategori, y]);. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(22) if (tipe_nilai(temp3) != in_idx_atribute) { data_training[x, y] = "-1"; } } //jk else if (in_idx_kategori == 6) { string temp = (data_training[in_idx_kategori, y]); int temp3 = 0; if (temp[0] == 'P') temp3 = 1; if (temp3 != in_idx_atribute) { data_training[x, y] = "-1"; } } else if (in_idx_kategori == 7) { int temp3 = cek_sma(data_training[in_idx_kategori, y]); if (temp3 != in_idx_atribute) { data_training[x, y] = "-1"; } } } } } // set nilai null jika terjadi pernambahan node private void reset_child() { for (int x = 0; x < 9; x++) { gain_child[x] = 0; for (int y = 0; y < 10; y++) { jlh_child[x, y] = 0; entropy_detail_child[x, y] = 0; for (z = 0; z < 4; z++) { jlh_detail_child[x, y, z] = 0; } } } entropy_child = 0; } private void hit_gain_child() { // cari jumlah yang sesuai dengan jumlah data child // 0-5 untuk ips, 6 untuk jenis kelamin, 7 untuk sma dan 8 untuk tanda kelulusan for (int x = 0; x < 9; x++) { for (int y = 0; y < total; y++) { f_hit_jlh_child(x, y);. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(23) } } // hitung entropy dan gain f_hit_gain_child(); // cari gain maximum dan buat child baru } private int max_gain() { int idx = 0; double max_gain = -1; for (x = 0; x < 7; x++) { for (y = node_flag; y > 0; ) { if (y % 10 == x) { gain_child[x] = -1; y = -1; } else { y = y / 10; } } } for (x = 0; x < 7; x++) { if (max_gain < gain_child[x]) { max_gain = gain_child[x]; idx = x; } } return idx; } // hitung jumlah child yang ada private void f_hit_jlh_child(int x, int y) { // hitung jumlah nilai ips 1-6 if (x < 6) { Double temp = Convert.ToDouble(data_training[x, y]); string temp2 = data_training[8, y]; // untuk nilai ips diatas 3 dst if (temp >= 3) { jlh_child[x, 0] += 1; hit_jlh_detail_child(x, temp2[0], 0); } else if (temp >= 2) { jlh_child[x, 1] += 1; hit_jlh_detail_child(x, temp2[0], 1); } else if (temp >= 1) {. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(24) jlh_child[x, 2] += 1; hit_jlh_detail_child(x, temp2[0], 2); } else if (temp >= 0) { jlh_child[x, 3] += 1; hit_jlh_detail_child(x, temp2[0], 3); } } // hitung jumlah jk else if (x == 6) { string temp = data_training[x, y]; string temp2 = data_training[8, y]; if (temp[0] == 'L') { jlh_child[x, 0]++; hit_jlh_detail_child(x, temp2[0], 0); } else if (temp[0] == 'P') { jlh_child[x, 1]++; hit_jlh_detail_child(x, temp2[0], 1); } } // hitung jumlah sma else if (x == 7) { string temp = data_training[x, y]; string temp2 = data_training[8, y]; int flag = 0; // masukkan sma kedalam array for (int z = 0; z < 9; z++) { if (sma[z] == temp) { jlh_child[x, z]++; hit_jlh_detail_child(x, temp2[0], z); z++; } else flag++; } if (flag == 9) { jlh_child[x, 9]++; hit_jlh_detail_child(x, temp2[0], 9); } } // hitung jumlah kelulusan else if (x == 8) { string temp = data_training[x, y]; if (temp[0] == '1') jlh_child[x, 0]++; else if (temp[0] == '2'). Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(25) jlh_child[x, else if (temp[0] jlh_child[x, else if (temp[0] jlh_child[x,. 1]++; == '3') 2]++; == '4') 3]++;. } } // hit jumlah kategori lulus private void hit_jlh_detail_child(int kat, char parm, int idx) { if (parm == '1') jlh_detail_child[kat, idx, 0]++; else if (parm == '2') jlh_detail_child[kat, idx, 1]++; else if (parm == '3') jlh_detail_child[kat, idx, 2]++; else if (parm == '4') jlh_detail_child[kat, idx, 3]++; } // hitung gain node private void f_hit_gain_child() { double in_jlh_child = total_data; // Entropy total entropy_child = (hit_entropy(jlh_child[8, 0], in_jlh_child) * 1) - hit_entropy(jlh_child[8, 1], in_jlh_child) - hit_entropy(jlh_child[8, 2], in_jlh_child) - hit_entropy(jlh_child[8, 3], in_jlh_child); //MessageBox.Show(entropy_child.ToString() +">"+ jlh_child[8, 0].ToString() + " " + jlh_child[8, 1].ToString() + " " + jlh_child[8, 2].ToString() + " " + jlh_child[8, 3].ToString() + "/ " + in_jlh_child.ToString()); // Entropy detail for (int x = 0; x < 9; x++) {// array untuk kategori seperti ips 1, ips 2 dst for (int y = 0; y < 10; y++) {// array untuk isi data, a,b,c,d (ips) l,p (JenKel) sma110 (Sekolah) entropy_detail_child[x, y] = (hit_entropy(jlh_detail_child[x, y, 0], jlh_child[x, y]) * -1) hit_entropy(jlh_detail_child[x, y, 1], jlh_child[x, y]) - hit_entropy(jlh_detail_child[x, y, 2], jlh_child[x, y]) - hit_entropy(jlh_detail_child[x, y, 3], jlh_child[x, y]); } } // Gain for (x = 0; x < 9; x++) {// array untuk kategori seperti ips 1, ips 2 dst if (x < 6) { gain_child[x] = entropy_child - ( (jlh_child[x, 0] / in_jlh_child) * entropy_detail_child[x, 0] + (jlh_child[x, 1] / in_jlh_child) * entropy_detail_child[x, 1] +. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(26) (jlh_child[x, 2] / in_jlh_child) * entropy_detail_child[x, 2] + (jlh_child[x, 3] / in_jlh_child) * entropy_detail_child[x, 3] ); } if (x == 6) { gain_child[x] = entropy_child - ( (jlh_child[x, 0] / in_jlh_child) * entropy_detail_child[x, 0] + (jlh_child[x, 1] / in_jlh_child) * entropy_detail_child[x, 1] ); } if (x == 7) { gain_child[x] = entropy_child - ( (jlh_child[x, 0] / in_jlh_child) * entropy_detail_child[x, 0] + (jlh_child[x, 1] / in_jlh_child) * entropy_detail_child[x, 1] + (jlh_child[x, 2] / in_jlh_child) * entropy_detail_child[x, 2] + (jlh_child[x, 3] / in_jlh_child) * entropy_detail_child[x, 3] + (jlh_child[x, 4] / in_jlh_child) * entropy_detail_child[x, 4] + (jlh_child[x, 5] / in_jlh_child) * entropy_detail_child[x, 5] + (jlh_child[x, 6] / in_jlh_child) * entropy_detail_child[x, 6] + (jlh_child[x, 7] / in_jlh_child) * entropy_detail_child[x, 7] + (jlh_child[x, 8] / in_jlh_child) * entropy_detail_child[x, 8] + (jlh_child[x, 9] / in_jlh_child) * entropy_detail_child[x, 9] ); } } } // hit jumlah atribute private int cek_length(int in_idx) { if (in_idx < 6) return 4; // untuk ips else if (in_idx == 6) return 2; // jenis kelamin else if (in_idx == 7) return 10; // untuk sma else return 0; } // hitung entropy private double hit_entropy(double jumlah, double total) { if (jumlah == 0 || total == 0) return 0; double hasil = jumlah / total * Math.Log(jumlah / total) / Math.Log(2); return hasil; } // tipe nilai ips yang masuk. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(27) private int tipe_nilai(double in_nilai) { if (in_nilai >= 3) return 1; else if (in_nilai >= 2) return 2; else if (in_nilai >= 1) return 3; else if (in_nilai >= 0) return 4; else return -1; } //cek data idx sma private int cek_sma(string in_sma) { for (x = 0; x < sma.Count(); x++) { if (in_sma == sma[x]) { return x; } } return 9; } // memasukkan data dalam variabel private void btnExcel_Click(object sender, EventArgs e) { DataTestingExcel frm = new DataTestingExcel(ex_idx_max, ex_dgv_training, ex_jlh_detail, ex_sma, ex_dta_lls); frm.Show(); } private void btnQuit_Click(object sender, EventArgs e) { this.Close(); } private bool set_data_excel(string[,] data_testing, int in_row) { try { jlh_sks = int.Parse(data_testing[11, in_row]); in_ips[0] = double.Parse(data_testing[3,in_row]); in_ips[1] = double.Parse(data_testing[4,in_row]); in_ips[2] = double.Parse(data_testing[5,in_row]); in_ips[3] = double.Parse(data_testing[6,in_row]); in_ips[4] = double.Parse(data_testing[7,in_row]); in_ips[5] = double.Parse(data_testing[8,in_row]); if (data_testing[9,in_row][0] == 'L') { jk = 0; } else jk = 1; sekolah = cek_sma(data_testing[10,in_row]); if (in_ips[0] >= 0 && in_ips[1] >= 0 && in_ips[2] >= 0 && in_ips[3] >= 0 && in_ips[4] >= 0 && in_ips[5] >= 0 && in_ips[0] <= 4 && in_ips[1] <= 4 && in_ips[2] <= 4 && in_ips[3] <= 4 && in_ips[4] <= 4 && in_ips[5] <= 4) {. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(28) return true; } else { return false; } } catch (Exception e) { return false; } } private void btnHelp_Click(object sender, EventArgs e) { frmHelp frm = new frmHelp(); frm.Show(); } } }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(29) Lampiran 5 : Source Code Data Testing Excel using using using using using using using using using using. System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; System.Data.OleDb;. namespace WindowsFormsApplication2 { public partial class DataTestingExcel : Form { int total_data,x,y; string[,] data_testing = new string[13,1000]; int idx_max; DataGridView dgv_training; double[,] jlh_detail; string[] sma; double[, ,] dta_lls; public DataTestingExcel(int in_idx_max, DataGridView in_dgv_training, double[,] in_jlh_detail, string[] in_sma, double[, ,] in_dta_lls) { InitializeComponent(); idx_max = in_idx_max; dgv_training = in_dgv_training; jlh_detail = in_jlh_detail; sma = in_sma; dta_lls = in_dta_lls; } private void btnOpenFileExcel_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { btnProsesData.Enabled = true; string PathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ofd.FileName+ ";Extended Properties=\"Excel 8.0;HDR=Yes;\";"; OleDbConnection conn = new OleDbConnection(PathConn); try { OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [Sheet1$]", conn); DataTable dt = new DataTable(); myDataAdapter.Fill(dt); dgvFileExcel.DataSource = dt; total_data = dgvFileExcel.Rows.Count - 1; input_data_testing(dgvFileExcel);. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(30) int warna = 0; foreach (DataGridViewRow row in dgvFileExcel.Rows) { warna++; if (warna % 2 == 0) row.DefaultCellStyle.BackColor = System.Drawing.Color.Aqua; } } catch (Exception ex) { MessageBox.Show("File yang anda buka salah! Jika"); this.Close(); } } } private void input_data_testing (DataGridView in_dgv_training) { for (x = 0; x < total_data; x++) for (y = 0; y < 12; y++) data_testing[y, x] = in_dgv_training.Rows[x].Cells[y].Value.ToString(); } private void btnProsesData_Click(object sender, EventArgs e) { string[] lulus = new string[1000]; dgvHasilKeputusan.ColumnCount = 13; dgvHasilKeputusan.Columns[0].Name = "No"; dgvHasilKeputusan.Columns[1].Name = "Nama"; dgvHasilKeputusan.Columns[2].Name = "NIM"; dgvHasilKeputusan.Columns[3].Name = "IPS1"; dgvHasilKeputusan.Columns[4].Name = "IPS2"; dgvHasilKeputusan.Columns[5].Name = "IPS3"; dgvHasilKeputusan.Columns[6].Name = "IPS4"; dgvHasilKeputusan.Columns[7].Name = "IPS5"; dgvHasilKeputusan.Columns[8].Name = "IPS6"; dgvHasilKeputusan.Columns[9].Name = "Jenis Kelamin"; dgvHasilKeputusan.Columns[10].Name = "SMA"; dgvHasilKeputusan.Columns[11].Name = "Jumlah SKS"; dgvHasilKeputusan.Columns[12].Name = "Prediksi Kelulusan"; DataTesting dt = new DataTesting(idx_max, dgv_training, jlh_detail, sma, dta_lls); string[] dta_lulus = dt.proses_excel(data_testing, total_data); for (y = 0; y < total_data; y++) { string[] row = new string[] { data_testing[0,y], data_testing[1,y], data_testing[2,y], data_testing[3,y], data_testing[4,y], data_testing[5,y], data_testing[6,y], data_testing[7,y], data_testing[8,y] , data_testing[9,y], data_testing[10,y], data_testing[11,y],dta_lulus[y]}; dgvHasilKeputusan.Rows.Add(row); }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(31) int warna = 0; foreach (DataGridViewRow row in dgvHasilKeputusan.Rows) { warna++; if (warna % 2 == 0) row.DefaultCellStyle.BackColor = System.Drawing.Color.Aqua; } } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } } }. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(32) Lampiran 7 : Form Penilaian Aplikasi. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(33) RIWAYAT HIDUP Data Pribadi Nama. : David Hartanto Kamagi. Tempat, Tanggal Lahir. : Tana Toraja, 14 Januari 1993. Jenis Kelamin. : Laki-laki. Agama. : Kristen. Kewarganegaraan. : Indonesia. Alamat. : Winangun Jl. Matoa No. 1 Manado. No. Telepon. : 082124544587. Email. : davidkamagi@gmail.com. Latar Belakang Pendidikan 2010 - sekarang. Universitas Multimedia Nusantara, Fakultas Teknologi Informasi dan Komunikasi, Jurusan Teknik Informatika. 2007 – 2010. Sekolah Menengah Atas Negeri 1, Manado. 2004 – 2007. Sekolah Menengah Pertama Kristen Eben Heazer, Manado. 2002 – 2004. Sekolah Dasar Negeri Winangun, Manado. 2001 – 2002. Sekolah Dasar Negeri Tanawangko, Manado. 2000 – 2001. Sekolah Dasar Negeri Matungkas, Manado. Pengalaman Kerja dan Organisasi . November 2013 – Januari 2014, Programmer web SkyStar Ventures bisnis. inkubator Universitas Multimedia Nusantara. . Juni – Agustus 2013, Programmer Web (magang) di Universitas. Multimedia Nusantara.. Implementasi Data ..., David Hartanto Kamagi, FTI UMN, 2014.

(34)

Referensi

Dokumen terkait

Untuk menguji adanya pengaruh variabel motivasi kerja dalam hubungan antara kepuasan kerja dan komitmen organisasi terhadap kinerja karyawan dengan persamaan regresi melalui uji

Tujuan Program Keahlian Seni Musik Non Klasik (Keyboard) secara umum mengacu pada isi Undang Undang Sistem Pendidikan Nasional (UU SPN) pasal 3 mengenai Tujuan Pendidikan Nasional

Teknik analisa video yang dilakukan oleh tim Studi Video Pembelajaran Matematika kelas 8 di Indonesia tahun 2007 dapat menjadi salah satu referensi bagi para peneliti

Dengan terlibat dalam penjaminan kredit baik melalui pembentukan LPKD maupun bekerjasama dengan LPK, maka PEMDA akan dihadapkan pada resiko gagal bayar dari UMKM yang

[r]

4.3.1.3 The Table Observation of Teacher and Students’ Activities in Teaching Students Writing Skill in Report Text by Using WebQuest for Eleventh Grade Students of Science 1 of

Sistem Pakar Untuk Mendiagnosa Penyakit Dan Hama Pada Tanaman Salak Di Turi Sleman menggunakan metode TOPSISdapat menganalisis penyakit dan hama secara cepat dan

Penulis mengucapkan terimakasih kepada Pimpinan Balai Penelitian Perusahaan Perkebunan Gula (BP3G) yang telah mem- beri ijin penelitian di BP3G dan khususnya kepada karyawan