Decision Trees

Entscheidungsbäume werden beim Machine Learning genutzt, um zum Beispiel Klassifizierungen von Daten vorzunehmen.

In folgendem Beispiel wollen wir mit dem Python Modul scikit-learn ein Programm schreiben, welches anhand der Körpergröße und der Haarlänge entscheidet, ob man ein Mann oder eine Frau ist.

from sklearn import tree
from sklearn.model_selection import train_test_split

# Größe und Haarlänge von 25 Personen
X=[[165,19],[175,32],[136,35],[174,65],[141,28],[176,15],[131,32],[166,6],[128,32],[179,10],[136,34],[186,2],[126,25],[176,28],[112,38],[169,9],[171,36],[116,25],[196,25], [196,38], [126,40], [197,20], [150,25], [140,32],[136,35]]
# Passendes Geschlecht zu den 25 Personen
Y=['Man','Woman','Woman','Man','Woman','Man','Woman','Man','Woman','Man','Woman','Man','Woman','Woman','Woman','Man','Woman','Woman','Man', 'Woman', 'Woman', 'Man', 'Man', 'Woman', 'Woman']

DTclf = tree.DecisionTreeClassifier()
DTclf = DTclf.fit(X,Y)

testPerson = [[160,50]]
prediction = DTclf.predict(testPerson)
print(prediction)

# Plot Data
import matplotlib.pyplot as plt
import numpy as np

numpyX = np.array(X)
height = numpyX[:,0]
hair_length = numpyX[:,1]
gender = np.array(Y)

fig, ax = plt.subplots()
fig.set_figheight(10)
fig.set_figwidth(10)
colors = {'Man':'blue', 'Woman':'red'}

for g in np.unique(gender):
    index = np.where(gender == g)
    ax.scatter(height[index], hair_length[index], c=colors[g], label = g)
plt.legend()
plt.show()

Die Variable „testPerson“ bekommt einen Größen- und einen Haarlängenwert und wird der „predict()“ Methode übergeben.

Das ist die Ausgabe mit den Daten im Diagramm. Der Entscheidungsbaum gibt bei einer Größe von 160cm und einer Haarlänge von 50cm zurück, dass die Werte zu einer Frau gehören müssten.

Links:

unsere-schule.org

×

Decision Trees

Code: