Decision Tree
#Contoh eksekusi
from sklearn import datasets, model_selection
from pandas import *
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.tree import export_graphviz
import graphviz
from IPython.display import HTML, display; from tabulate import tabulate
def table(df): display(HTML(tabulate(df, tablefmt='html', headers='keys', showindex=False)))
iris = datasets.load_iris()
data = [list(s)+[iris.target_names[iris.target[i]]] for i,s in enumerate(iris.data)]
dataset = DataFrame(data, columns=iris.feature_names+['class'])
array = dataset.values
X = array[:,0:4]
Y = array[:,4]
X_train, X_validation, Y_train, Y_validation = \
model_selection.train_test_split(X, Y, \
train_size=0.5, random_state=2)
classifier = DecisionTreeClassifier()
fitting = classifier.fit(X_train, Y_train)
p = classifier.predict(X_validation)
pdd = DataFrame([list(X_validation[i])+[Y_validation[i],p[i]] for i in range(X_validation.shape[0])])
table(pdd)
print("Akurasi: ", accuracy_score(Y_validation, p))
0 | 1 | 2 | 3 | 4 | 5 |
4.6 | 3.4 | 1.4 | 0.3 | setosa | setosa |
4.6 | 3.1 | 1.5 | 0.2 | setosa | setosa |
5.7 | 2.5 | 5 | 2 | virginica | virginica |
4.8 | 3 | 1.4 | 0.1 | setosa | setosa |
4.8 | 3.4 | 1.9 | 0.2 | setosa | setosa |
7.2 | 3 | 5.8 | 1.6 | virginica | virginica |
5 | 3 | 1.6 | 0.2 | setosa | setosa |
6.7 | 2.5 | 5.8 | 1.8 | virginica | virginica |
6.4 | 2.8 | 5.6 | 2.1 | virginica | virginica |
4.8 | 3 | 1.4 | 0.3 | setosa | setosa |
5.3 | 3.7 | 1.5 | 0.2 | setosa | setosa |
4.4 | 3.2 | 1.3 | 0.2 | setosa | setosa |
5 | 3.2 | 1.2 | 0.2 | setosa | setosa |
5.4 | 3.9 | 1.7 | 0.4 | setosa | setosa |
6 | 3.4 | 4.5 | 1.6 | versicolor | versicolor |
6.5 | 2.8 | 4.6 | 1.5 | versicolor | versicolor |
4.5 | 2.3 | 1.3 | 0.3 | setosa | setosa |
5.7 | 2.9 | 4.2 | 1.3 | versicolor | versicolor |
6.7 | 3.3 | 5.7 | 2.5 | virginica | virginica |
5.5 | 2.5 | 4 | 1.3 | versicolor | versicolor |
6.7 | 3 | 5 | 1.7 | versicolor | virginica |
6.4 | 2.9 | 4.3 | 1.3 | versicolor | versicolor |
6.4 | 3.2 | 5.3 | 2.3 | virginica | virginica |
5.6 | 2.7 | 4.2 | 1.3 | versicolor | versicolor |
6.3 | 2.3 | 4.4 | 1.3 | versicolor | versicolor |
4.7 | 3.2 | 1.6 | 0.2 | setosa | setosa |
4.7 | 3.2 | 1.3 | 0.2 | setosa | setosa |
6.1 | 3 | 4.9 | 1.8 | virginica | virginica |
5.1 | 3.8 | 1.9 | 0.4 | setosa | setosa |
7.2 | 3.2 | 6 | 1.8 | virginica | virginica |
6.2 | 2.8 | 4.8 | 1.8 | virginica | virginica |
5.1 | 3.3 | 1.7 | 0.5 | setosa | setosa |
5.6 | 2.9 | 3.6 | 1.3 | versicolor | versicolor |
7.7 | 3.8 | 6.7 | 2.2 | virginica | virginica |
5.4 | 3 | 4.5 | 1.5 | versicolor | versicolor |
5.8 | 4 | 1.2 | 0.2 | setosa | setosa |
6.4 | 2.8 | 5.6 | 2.2 | virginica | virginica |
6.1 | 3 | 4.6 | 1.4 | versicolor | versicolor |
5.5 | 2.3 | 4 | 1.3 | versicolor | versicolor |
6.9 | 3.1 | 5.1 | 2.3 | virginica | virginica |
6 | 2.9 | 4.5 | 1.5 | versicolor | versicolor |
6.2 | 2.9 | 4.3 | 1.3 | versicolor | versicolor |
6.8 | 3.2 | 5.9 | 2.3 | virginica | virginica |
5 | 2.3 | 3.3 | 1 | versicolor | versicolor |
4.8 | 3.4 | 1.6 | 0.2 | setosa | setosa |
6.1 | 2.6 | 5.6 | 1.4 | virginica | versicolor |
5.2 | 3.4 | 1.4 | 0.2 | setosa | setosa |
6.7 | 3.1 | 4.4 | 1.4 | versicolor | versicolor |
5.1 | 3.5 | 1.4 | 0.2 | setosa | setosa |
5.2 | 3.5 | 1.5 | 0.2 | setosa | setosa |
5.5 | 3.5 | 1.3 | 0.2 | setosa | setosa |
4.9 | 2.5 | 4.5 | 1.7 | virginica | versicolor |
6.2 | 3.4 | 5.4 | 2.3 | virginica | virginica |
7.9 | 3.8 | 6.4 | 2 | virginica | virginica |
5.4 | 3.4 | 1.7 | 0.2 | setosa | setosa |
6.7 | 3.1 | 5.6 | 2.4 | virginica | virginica |
6.3 | 3.4 | 5.6 | 2.4 | virginica | virginica |
7.6 | 3 | 6.6 | 2.1 | virginica | virginica |
6 | 2.2 | 5 | 1.5 | virginica | versicolor |
4.3 | 3 | 1.1 | 0.1 | setosa | setosa |
4.8 | 3.1 | 1.6 | 0.2 | setosa | setosa |
5.8 | 2.7 | 5.1 | 1.9 | virginica | virginica |
5.7 | 2.8 | 4.1 | 1.3 | versicolor | versicolor |
5.2 | 2.7 | 3.9 | 1.4 | versicolor | versicolor |
7.7 | 3 | 6.1 | 2.3 | virginica | virginica |
6.3 | 2.7 | 4.9 | 1.8 | virginica | virginica |
6.1 | 2.8 | 4 | 1.3 | versicolor | versicolor |
5.1 | 3.7 | 1.5 | 0.4 | setosa | setosa |
5.7 | 2.8 | 4.5 | 1.3 | versicolor | versicolor |
5.4 | 3.9 | 1.3 | 0.4 | setosa | setosa |
5.8 | 2.8 | 5.1 | 2.4 | virginica | virginica |
5.8 | 2.6 | 4 | 1.2 | versicolor | versicolor |
5.1 | 2.5 | 3 | 1.1 | versicolor | versicolor |
5.7 | 3.8 | 1.7 | 0.3 | setosa | setosa |
5.5 | 2.4 | 3.7 | 1 | versicolor | versicolor |
Akurasi: 0.9466666666666667
dot_data = export_graphviz(classifier, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graphviz.Source(dot_data)
