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 34 5
4.63.41.40.3setosa setosa
4.63.11.50.2setosa setosa
5.72.55 2 virginica virginica
4.83 1.40.1setosa setosa
4.83.41.90.2setosa setosa
7.23 5.81.6virginica virginica
5 3 1.60.2setosa setosa
6.72.55.81.8virginica virginica
6.42.85.62.1virginica virginica
4.83 1.40.3setosa setosa
5.33.71.50.2setosa setosa
4.43.21.30.2setosa setosa
5 3.21.20.2setosa setosa
5.43.91.70.4setosa setosa
6 3.44.51.6versicolorversicolor
6.52.84.61.5versicolorversicolor
4.52.31.30.3setosa setosa
5.72.94.21.3versicolorversicolor
6.73.35.72.5virginica virginica
5.52.54 1.3versicolorversicolor
6.73 5 1.7versicolorvirginica
6.42.94.31.3versicolorversicolor
6.43.25.32.3virginica virginica
5.62.74.21.3versicolorversicolor
6.32.34.41.3versicolorversicolor
4.73.21.60.2setosa setosa
4.73.21.30.2setosa setosa
6.13 4.91.8virginica virginica
5.13.81.90.4setosa setosa
7.23.26 1.8virginica virginica
6.22.84.81.8virginica virginica
5.13.31.70.5setosa setosa
5.62.93.61.3versicolorversicolor
7.73.86.72.2virginica virginica
5.43 4.51.5versicolorversicolor
5.84 1.20.2setosa setosa
6.42.85.62.2virginica virginica
6.13 4.61.4versicolorversicolor
5.52.34 1.3versicolorversicolor
6.93.15.12.3virginica virginica
6 2.94.51.5versicolorversicolor
6.22.94.31.3versicolorversicolor
6.83.25.92.3virginica virginica
5 2.33.31 versicolorversicolor
4.83.41.60.2setosa setosa
6.12.65.61.4virginica versicolor
5.23.41.40.2setosa setosa
6.73.14.41.4versicolorversicolor
5.13.51.40.2setosa setosa
5.23.51.50.2setosa setosa
5.53.51.30.2setosa setosa
4.92.54.51.7virginica versicolor
6.23.45.42.3virginica virginica
7.93.86.42 virginica virginica
5.43.41.70.2setosa setosa
6.73.15.62.4virginica virginica
6.33.45.62.4virginica virginica
7.63 6.62.1virginica virginica
6 2.25 1.5virginica versicolor
4.33 1.10.1setosa setosa
4.83.11.60.2setosa setosa
5.82.75.11.9virginica virginica
5.72.84.11.3versicolorversicolor
5.22.73.91.4versicolorversicolor
7.73 6.12.3virginica virginica
6.32.74.91.8virginica virginica
6.12.84 1.3versicolorversicolor
5.13.71.50.4setosa setosa
5.72.84.51.3versicolorversicolor
5.43.91.30.4setosa setosa
5.82.85.12.4virginica virginica
5.82.64 1.2versicolorversicolor
5.12.53 1.1versicolorversicolor
5.73.81.70.3setosa setosa
5.52.43.71 versicolorversicolor
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)

svg