PENDAHULUAN
Assalamualaikum teman-teman, apakah anda pernah mendengar kata Data Mining? Tau gak sih apa itu Data Mining ? Bagaimana Data Mining mampu menghasilkan sebuah keputusan dari sebuah permasalahan? Apa itu klasifikasi? Serta apa itu Decision Tree dan Python sebagaimana yang dimaksud dalam judul?
Nah jika anda adalah seseorang yang tertarik dibidang data mining wajib tau nih, apalagi jika anda seorang mahasiswa yang mempelajari dunia teknologi masa kini. Nyatanya teknologi tidak terpaku pada software dan hardware saja loh. Ada ilmu penting lainnya yang dapat anda pelajari untuk menambah wawasan dan mempermudah penyelesaian masalah loh, salah satunya yaitu ilmu Data Mining ini.
Bagi yang baru mengenal dunia Data Mining semoga bisa memahami penjelasan dibawah ini ya serta selamat mencoba! Untuk yang sudah terjun dalam dunia Data Mining yuk sama-sama memperdalam ilmu dengan membaca artikel ini.
Apa itu DATA MINING?
Data Mining adalah sebuah proses menggunakan teknik kecerdasan buatan, matematika, statistik, serta machine learing untuk mengektraksi, mengindentifikasi serta menghasilkan informasi yang bermanfaat dan pengetahuan yang terkait dari suatu database yang besar (Pudjiantoro, 2011).
Data Mining juga merupakan suatu metode pengolahan data untuk menemukan dan menentukan pola tersembunyi dari kumpulan data. Hasil dari pengolahan data tersebut dapat digunakan untuk mengambil sebuah keputusan dimasa yang akan datang. Terdapat beberapa teknik dalam Data Mining diantaranya adalah Klasifikasi, Klustering, Estimasi, Asosiasi, dan Prediksi.
Pada kesempatan kali ini kita akan membahas mengenai penerapan salah satu algoritma pada teknik klasifikasi data mining dengan menggunakan Bahasa pemrograman Python. Python merupakan salah satu bahasa pemrograman tingkat tinggi yang diciptakan oleh Guido van Rossum. Python sudah banyak digunakan untuk membuat berbagai macam program, seperti: Game, Program GUI (desktop), Web, Aplikasi Mobile, IoT, program CLI, Program untuk Hacking, dsb.
Python juga dikenal dengan bahasa pemrograman yang mudah dipelajari karena struktur sintaknya yang rapi. Bahasa pemograman Python bagus untuk pemula yang belum pernah belajar coding sebelumnya karena bahasa pemograman ini sangat sederhana dibandingkan bahasa pemograman lainnya. Bahkan tagline websitenya menyebutkan python akan membuatmu bekerja lebih cepat dan lebih efektif! Gimana apakah anda sudah tertarik untuk mencobanya?
Apa itu KLASIFIKASI?
Klasifikasi adalah salah satu teknik dalam Data Mining ataupun Mechine Learning. Klasifikasi bertujuan untuk menemukan model dengan pengelompokan data dimana data yang digunakan tersebut mempunyai kelas label atau target. Sehingga algoritma-algoritma untuk menyelesaikan masalah klasifikasi dikategorisasikan ke dalam supervised learning. supervised learning adalah data label atau target ikut berperan sebagai ‘supervisor’ atau ‘guru’ yang mengawasi proses pembelajaran dalam mencapai tingkat akurasi atau presisi tertentu. Salah satu algoritma pada teknik klasifikasi yang paling popular dan banyak digunakan dalam penelitian adalah algoritma Decision Tree.
Lalu apa yang dimaksud dengan DECISION TREE?
Decision Tree (pohon keputusan) adalah salah satu teknik klasifikasi sebagai bagian dari ilmu Data Mining. Algoritma Decision Tree melakukan penggalian pengetahuan terhadap data yang tersedia dengan model prediksi menggunakan struktur pohon atau struktur berhirarki. Decision Tree berkonsep mengubah data menjadi hirarki dan aturan-aturan keputusan.
Manfaat utama dari penggunaan teknik ini yaitu kemampuannya untuk mem-break down proses pengambilan keputusan yang kompleks menjadi lebih simple, sehingga pengambil keputusan akan lebih menginterpretasikan solusi dari permasalahan. Kelebihan lain dari metode ini adalah mampu mengeliminasi perhitungan atau data-data yang kiranya tidak diperlukan.
Kemudian, bagaimana penerapan algortima Klasifikasi Decision Tree dengan Python?
Check this out!
Sebelum kita membahas lebih lanjut mengenai penerapan algortima klasifikasi Decision Tree dengan Python. Terdapat beberapa hal yang perlu anda siapkan terlebih dahulu, diantaranya adalah:
- Niat
Ini yang paling penting nih, tanpa ada niat maka mustahil anda bisa mengerjakan ini. Hehe. Jangan lupa dipasang dulu niatnya ya teman-teman. - Dataset
Dataset diperlukan untuk mengolah algoritmanya. Jika tidak ada dataset, lalu apa yang akan kita proses? Jangan lupa dataset yang digunakan adalah dataset yang sudah memiliki label atau kelas yaa! - Python + Jupyter Notebook
Nah, Bahasa pemrograman yang kami gunakan saat ini adalah Python 3.0, sedangkan untuk tools nya kami menggunakan Jupyter notebook
Oke langsung saja,
- Dataset yang akan kami gunakan aadalah dataset untuk menentukan status kelayakan penerima beasiswa yang terdiri dari 2 kelas yaitu kelas Ya Layak dan Tidak Layak menerima beasiswa serta terdiri dari 6 atribut/feature antara lain:
- Jenis Tinggal (JT)
- Alat Transportasi (AT)
- Pekerjaan Ayah (PKA)
- Penghasilan Ayah (PHA)
- Pekerjaan Ibu (PKI)
- Penghasilan Ibu (PHI)
Berikut merupakan dataset yang telah melalui proses preprocessing dan siap untuk diproses kedalam teknik klasifikasi. Dataset yang digunakan sebanyak 240 record yang akan dibagi menjadi data training dan data testing dengan menggunakan teknik hold-out 70%-30%, dimana masing-masing data training berjumlah sebesar 70% dari total data yaitu 168 record dan data testing berjumlah 72 record dengan persentase 30% dari keseluruhan data.
Data Training yang digunakan
No | Nama | JK | JT | AT | PKA | PHA | PKI | PHI | Status Kelayakan |
1 | S-1 | L | 0,500 | 1,000 | 0,083 | 0,625 | 0,833 | 1,000 | Tidak |
2 | S-2 | L | 0,250 | 0,143 | 0,667 | 0,375 | 0,833 | 1,000 | Tidak |
3 | S-3 | L | 0,250 | 1,000 | 0,667 | 0,500 | 0,833 | 1,000 | Tidak |
4 | S-4 | L | 0,250 | 0,286 | 0,500 | 0,250 | 0,833 | 1,000 | Tidak |
5 | S-5 | L | 0,250 | 0,000 | 0,000 | 0,500 | 0,917 | 0,875 | Tidak |
6 | S-6 | P | 0,250 | 1,000 | 0,333 | 0,500 | 0,083 | 0,875 | Tidak |
7 | S-7 | L | 0,250 | 0,286 | 0,667 | 0,250 | 0,833 | 1,000 | Tidak |
8 | S-8 | L | 0,250 | 0,000 | 0,083 | 0,500 | 0,833 | 1,000 | Tidak |
9 | S-9 | L | 0,250 | 0,286 | 0,917 | 0,375 | 0,833 | 1,000 | Tidak |
10 | S-10 | P | 0,250 | 1,000 | 0,083 | 0,625 | 0,667 | 0,625 | Tidak |
… | … | … | … | … | … | … | … | … | … |
168 | S-168 | P | 0,250 | 0,571 | 0,083 | 0,625 | 0,667 | 0,625 | Tidak |
Data Testing yang digunakan
No | Nama | JK | JT | AT | PKA | PHA | PKI | PHI | Status Kelayakan |
1 | S-169 | L | 0,250 | 0,143 | 0,917 | 0,500 | 0,500 | 1,000 | Tidak |
2 | S-170 | P | 0,250 | 1,000 | 0,667 | 0,750 | 0,667 | 0,625 | Tidak |
3 | S-171 | P | 0,250 | 1,000 | 0,917 | 0,500 | 0,833 | 1,000 | Tidak |
4 | S-172 | L | 0,250 | 1,000 | 0,083 | 0,625 | 0,833 | 1,000 | Tidak |
5 | S-173 | L | 0,250 | 1,000 | 1,000 | 0,625 | 1,000 | 0,500 | Tidak |
6 | S-174 | L | 0,250 | 0,000 | 0,917 | 0,500 | 0,833 | 1,000 | Tidak |
7 | S-175 | L | 0,250 | 1,000 | 0,333 | 0,500 | 0,833 | 1,000 | Ya |
8 | S-176 | L | 0,250 | 1,000 | 0,917 | 0,500 | 0,833 | 1,000 | Tidak |
9 | S-177 | P | 0,250 | 1,000 | 0,083 | 0,875 | 0,833 | 1,000 | Ya |
10 | S-178 | L | 0,250 | 1,000 | 0,917 | 0,500 | 0,833 | 1,000 | Tidak |
… | … | … | … | … | … | … | … | … | … |
72 | S-240 | P | 0,250 | 1,000 | 0,917 | 0,625 | 0,833 | 1,000 | Tidak |
- Jika data training dan data testing telah tersedia, kemudian buka lembaran kerja pada jupyter notebook lalu import beberapa library yang diperlukan, sebagaimana dibawah ini.

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import accuracy_score, f1_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
- Kemudian, import data yang akan digunakan sebagaimana dibawah ini

def read_file(filename):
df = pd.read_excel(filename)
print(df.shape)
df['Status Kelayakan'] = df['Status Kelayakan'].apply(lambda x: x.strip().lower())
return df
FILE_HO_TRAIN = 'A_Train_HO.xlsx'
FILE_HO_TEST = 'A_Test_HO.xlsx'
df_ho_train = read_file(FILE_HO_TRAIN)
df_ho_test = read_file(FILE_HO_TEST)
Pada output yang dihasilkan dapat dilihat bahwa terdapat 2 dataset dengan masing-masing berjumlah 168 record & 10 row yang merupakan data training serta data dengan 72 record dengan 10 row yang merupakan data testing.
- Kemudian, tentukan label/kelas yang digunakan sebagaimana dibawah ini,

target_encoder = LabelEncoder()
df_ho_train['Target'] = target_encoder.fit_transform(df_ho_train['Status Kelayakan'])
df_ho_test['Target'] = target_encoder.transform(df_ho_test['Status Kelayakan'])
- Dari 10 row yang ada, tidak semua row/kolom dijadikan sebagai atribut sebagaimana penjelasan sebelumnya, agar hanya kolom atribut yang diproses maka kolom yang berfungsi sebagai label/kelas atau kolom Nomor, id, serta row pelengkap perlu didrop terlebih dahulu sebagaimana dibawah ini.

x_ho_train = df_ho_train.drop(['Status Kelayakan', 'No', 'Nama', 'Target', 'JK'], axis=1)
y_ho_train = df_ho_train['Target']
x_ho_test = df_ho_test.drop(['Status Kelayakan', 'No', 'Nama', 'Target', 'JK'], axis=1)
y_ho_test = df_ho_test['Target']
- Kemudian, input model algoritma decision tree untuk memproses data sekaligus melihat akurasi yang dihasilkan dengan menggunakan algoritma tersebut

model = DecisionTreeClassifier(criterion='gini')
model.fit(x_ho_train, y_ho_train)
model.score(x_ho_train, y_ho_train)
predicted= model.predict(x_ho_test)
accuracy_ho = accuracy_score(predicted, y_ho_test) * 100
print('Akurasi pada Algoritma Decision Tree menggunakan Hold-out dengan persentase 70:30 = %s' % accuracy_ho)
Dapat dilihat pada gambar diatas, bahwa Algoritma Decision Tree menggunakan Hold-out dengan persentase 70:30 menghasilkan akurasi sebesar 84.72%
- Untuk melihat visualisasi dari hasil algoritma decision tree dengan menggunakan plot tree dapat dilihat pada gambar dibawah ini,

clf = DecisionTreeClassifier(max_depth = 3)
clf.fit(x_ho_train, y_ho_train)
tree.plot_tree(clf));
fn=['AT','JT','PHA','PHI','PKA','PKI']
cn=['Ya', 'Tidak']
fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=300)
plot_tree(clf,
feature_names = fn,
class_names=cn,
filled = True);fig.savefig('imagename.png')
Proses diatas akan menghasilkan plot tree dari algoritma Decision Tree untuk kasus status kelayakan beasiswa sebagaimana gambar berikut.

Itulah tahap-tahap dalam mengimplementasikan algoritma decision tree dengan Bahasa pemrograman python. Selamat mencoba, semoga bermanfaat!
REFERENSI
[1]. https://www.analyticsvidhya.com/, diakses 06 Mei 2020
[2]. https://towardsdatascience.com/, diakses 05 Mei 2020
[3]. https://medium.com/, diakses 06 Mei 2020
[4]. http://jurnal.una.ac.id/index.php/jurti/article/view/298, diakses 07 Mei 2020
[5]. http://ejournal.ust.ac.id/index.php/Jurnal_Means/article/view/287, diakses 07 Mei 2020
Original Create by: Siti Syahidatul Helma & Ega Dwi Lestari