Kali kita akan belajar membuat decision tree sekaligus membuat visualisasinya dengan Google Colab. Decision Tree adalah algoritma pembelajaran supervisi non-parametrik yang digunakan untuk
tugas klasifikasi dan regresi. Ini memiliki struktur pohon hierarkis
yang terdiri dari simpul akar, cabang, simpul internal, dan simpul daun.
Decision Tree dibuat berdasarkan data yang didapatkan dari datasets. Datasets adalah sekumpulan data yang memiliki terkadang memiliki banyak field dan value yang tidak konsisten, Sehingga kita sebagai data scientist ditugaskan untuk merapihkannya dan menganalisa untuk mendapatkan keputusan yang baik bagi perusahaan
Salah satu cara yang didapat adalah dengan menggunakan decision tree ini
Kita akan memulainya dengan ngoding menggunakan Python
Pertama buka google colab kalian
Lalu kita akan mengimport library yang dibutuhkan
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import matplotlib.pyplot as plt # data visualization
import seaborn as sns # statistical data visualization
%matplotlib inline
Kita membutuhkan dataset, dataset ini sudah saya siapkan di dalam google drive. Berikut tampilan dataset yang akan kita gunakan
Tips: Sebelum kalian mengolah datasets, pastikan tidak ada nama field di dalamd datasets, ada baiknya nama nama field dimasukkan secara otomatis menggunakan Python
Kita juga akan memasukkan kode sehingga Google Colab bisa membaca isi drive kita
data = '/content/drive/MyDrive/datasets/datasets.csv'
df = pd.read_csv(data, header=None)
Selengkapnya kalian bisa membaca disini
Kita akan menamai datasets ini tiap fieldnya dengan memasukkan kode berikut
col_names = ['age', 'income', 'student', 'credit_routing', 'class']
df.columns = col_names
col_names
Kini datasets kita sudah memiliki nama nama field atau kolom
Akan tetapi ada masalah. Datasets kita ini berisi data berupa string, kita harus mengubahnya menjadi angka. Caranya adalah dengan memasukkan kode dibawah ini
import pandas as pd
from sklearn.preprocessing import LabelEncoder
df = pd.DataFrame(df)
label_encoder = LabelEncoder()
df["age"] = label_encoder.fit_transform(df["age"])
df["income"] = label_encoder.fit_transform(df["income"])
df["student"] = label_encoder.fit_transform(df["student"])
df["credit_routing"] = label_encoder.fit_transform(df["credit_routing"])
df["class"] = label_encoder.fit_transform(df["class"])
print(df)
Lalu, kita akan mendefinisikan variable x dan y untuk test dan train
X = df.drop(['class'], axis=1)
y = df['class']
Kita buat Train dan Test
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.33, random_state = 42)
Setelah itu kita akan membuat model dengan sklearn untuk membuat decision tree
from sklearn.tree import DecisionTreeClassifier
import pandas as pd
from sklearn.preprocessing import LabelEncoder
df = pd.DataFrame(df)
label_encoder = LabelEncoder()
df["age"] = label_encoder.fit_transform(df["age"])
clf_gini = DecisionTreeClassifier(criterion='gini', max_depth=3, random_state=0)
clf_gini.fit(X_train, y_train)
y_pred_gini = clf_gini.predict(X_test)
from sklearn.metrics import accuracy_score
print('Model accuracy score with criterion gini index: {0:0.4f}'. format(accuracy_score(y_test, y_pred_gini)))
y_pred_train_gini = clf_gini.predict(X_train)
y_pred_train_gini
print('Test set score: {:.4f}'.format(clf_gini.score(X_test, y_test)))
# print the scores on training and test set
print('Training set score: {:.4f}'.format(clf_gini.score(X_train, y_train)))
print('Test set score: {:.4f}'.format(clf_gini.score(X_test, y_test)))
plt.figure(figsize=(12,8))
from sklearn import tree
tree.plot_tree(clf_gini.fit(X_train, y_train))