Maschinelles Lernen - Entscheidungsbaum
- Vorherige Seite Training/Prüfung
- Nächste Seite MySQL Einführung

Entscheidungsbaum (Decision Tree)
In diesem Kapitel werden wir Ihnen zeigen, wie man ein "Entscheidungsbaum" erstellt. Ein Entscheidungsbaum ist ein Flussdiagramm, das Ihnen hilft, Entscheidungen auf Basis Ihrer früheren Erfahrungen zu treffen.
In diesem Beispiel wird eine Person versuchen zu entscheiden, ob er/sie an einem Komödienprogramm teilnehmen sollte.
Glücklicherweise wird unsere Beispielperson jedes Mal registriert, wenn ein Komödienprogramm im Dorf stattfindet, und einige Informationen über die Komödienakteure eingetragen, sowie ob er/sie daran teilgenommen hat.
Alter | Erfahrung | Rank | Nationality | Go |
---|---|---|---|---|
36 | 10 | 9 | UK | NO |
42 | 12 | 4 | USA | NO |
23 | 4 | 6 | N | NO |
52 | 4 | 4 | USA | NO |
43 | 21 | 8 | USA | YES |
44 | 14 | 5 | UK | NO |
66 | 3 | 7 | N | YES |
35 | 14 | 9 | UK | YES |
52 | 13 | 7 | N | YES |
35 | 5 | 9 | N | YES |
24 | 3 | 5 | USA | NO |
18 | 3 | 7 | UK | YES |
45 | 9 | 9 | UK | YES |
Jetzt kann Python basierend auf diesem Datenmenge einen Entscheidungsbaum erstellen, der verwendet werden kann, um zu entscheiden, ob es sich lohnt, an jeder neuen Aufführung teilzunehmen.
Arbeitsweise
Zunächst müssen die erforderlichen Module importiert und die Datenmenge mit pandas gelesen werden:
Beispiel
Datenmenge lesen und ausgeben:
import pandas from sklearn import tree import pydotplus from sklearn.tree import DecisionTreeClassifier import matplotlib.pyplot as plt import matplotlib.image as pltimg df = pandas.read_csv("shows.csv") print(df)
Um einen Entscheidungsbaum zu erstellen, müssen alle Daten numerisch sein.
Wir müssen die nicht-numerischen Spalten 'Nationality' und 'Go' in numerische Werte umwandeln.
Pandas hat eine map()
Methode, die ein Dictionary akzeptiert, das Informationen darüber enthält, wie die Werte umgewandelt werden sollen.
{'UK': 0, 'USA': 1, 'N': 2}
Das bedeutet, dass der Wert 'UK' in 0, den Wert 'USA' in 1 und den Wert 'N' in 2 umgewandelt wird.
Beispiel
Stringwerte in numerische Werte umwandeln:
d = {'UK': 0, 'USA': 1, 'N': 2} df['Nationality'] = df['Nationality'].map(d) d = {'YES': 1, 'NO': 0} df['Go'] = df['Go'].map(d) print(df)
Dann müssen wir die Merkmalsspalte von der Zielspalte trennen.
Die Merkmalsspalte ist die Spalte, aus der wir versuchen, Vorhersagen zu treffen, und die Zielspalte ist die Spalte mit den Werten, die wir versuchen, vorherzusagen.
Beispiel
X ist die Merkmalsspalte, y ist die Zielspalte:
features = ['Age', 'Experience', 'Rank', 'Nationality'] X = df[features] y = df['Go'] print(X) print(y)
Nun können wir eine tatsächliche Entscheidungsbaum erstellen, die unseren Details entspricht, und dann eine .png-Datei auf dem Computer speichern:
Beispiel
Erstellen Sie einen Entscheidungsbaum, speichern Sie ihn als Bild und zeigen Sie das Bild an:
dtree = DecisionTreeClassifier() dtree = dtree.fit(X, y) data = tree.export_graphviz(dtree, out_file=None, feature_names=features) graph = pydotplus.graph_from_dot_data(data) graph.write_png('mydecisiontree.png') img = pltimg.imread('mydecisiontree.png') imgplot = plt.imshow(img) plt.show()
Ergebnisdeutung
Der Entscheidungsbaum verwendet Ihre vorherigen Entscheidungen, um die Wahrscheinlichkeit zu berechnen, dass Sie eine Komödie besuchen möchten.
Lassen Sie uns verschiedene Aspekte des Entscheidungsbaums lesen:

Rank
Rank <= 6.5
Das bedeutet, dass Komödianten mit einem Rang von weniger als 6.5 diesem Muster folgen werden. True
Pfeil (nach links), der Rest folgt. False
Pfeil (nach rechts).
gini = 0.497
Das bedeutet die Qualität der Aufteilung und ist immer eine Zahl zwischen 0.0 und 0.5, wobei 0.0 bedeutet, dass alle Proben das gleiche Ergebnis erzielen, und 0.5 bedeutet, dass die Aufteilung vollständig in der Mitte erfolgt.
samples = 13
Das bedeutet, dass zu diesem Zeitpunkt noch 13 Komödianten in der Entscheidung bleiben, da dies der erste Schritt ist und daher alle Komödianten sind.
value = [6, 7]
Das bedeutet, dass von den 13 Komödianten 6 ein "NO" erhalten und 7 ein "GO" erhalten.
Gini
Es gibt viele Methoden zur Aufteilung von Proben, und wir verwenden in diesem教程 die GINI-Methode.
Die Gini-Methode verwendet den folgenden Ausdruck:
Gini = 1 - (x/n)2 - (y/n)2
Hierbei ist x die Anzahl der positiven Antworten ("GO"), n die Anzahl der Proben und y die Anzahl der negativen Antworten ("NO"). Der folgende Ausdruck wird verwendet, um zu berechnen:
1 - (7 / 13)2 - (6 / 13)2 = 0.497

Der nächste Schritt enthält zwei Kästchen, eines für Komödianten mit 'Rank' 6.5 oder niedriger, und das andere für die restlichen.
True - Hier enden 5 Komödianten:
gini = 0.0
Das bedeutet, dass alle Proben das gleiche Ergebnis erzielen.
samples = 5
Die folgende Branche enthält noch 5 Komödianten (deren Rang 6.5 oder niedriger ist).
value = [5, 0]
Das bedeutet, dass 5 "NEIN" erhält und 0 "WEG" erhält.
False - 8 Theaterdarsteller gehen weiter:
Nationality (Nationalität)
Nationality <= 0,5
Das bedeutet, dass Komödianten mit einem Nationalitätswert kleiner als 0,5 der linken Pfeil folgen (das bedeutet alle aus Großbritannien), und die其余en der rechten Pfeil folgen werden.
gini = 0,219
Das bedeutet, dass etwa 22% der Proben in eine Richtung bewegen werden.
samples = 8
Das bedeutet, dass in dieser Zweigstelle noch 8 Komödianten bleiben (8 Komödianten mit einem Rating höher als 6,5).
value = [1, 7]
Das bedeutet, dass von diesen 8 Komödianten 1 "NEIN" erhält und 7 "WEG" erhält.

True - 4 Theaterdarsteller gehen weiter:
Age (Alter)
Age <= 35,5
Das bedeutet, dass Komödianten unter 35,5 Jahren der linken Pfeil folgen und die其余en der rechten Pfeil folgen werden.
gini = 0,375
Das bedeutet, dass etwa 37,5% der Proben in eine Richtung bewegen werden.
samples = 4
Das bedeutet, dass in dieser Zweigstelle noch 4 Komödianten bleiben (4 britische Komödianten).
value = [1, 3]
Das bedeutet, dass von diesen 4 Komödianten 1 "NEIN" erhält und 3 "WEG" erhält.
False - 4 Komödianten enden hier:
gini = 0.0
Das bedeutet, dass alle Proben dasselbe Ergebnis erzielen.
samples = 4
Das bedeutet, dass in dieser Zweigstelle noch 4 Komödianten bleiben (4 britische Komödianten).
value = [0, 4]
Das bedeutet, dass von diesen 4 Komödianten 0 "NEIN" erhält und 4 "WEG" erhält.

True - 2 Komödianten enden hier:
gini = 0.0
Das bedeutet, dass alle Proben dasselbe Ergebnis erzielen.
samples = 2
Das bedeutet, dass in dieser Zweigstelle noch 2 Komödianten bleiben (2 Komödianten unter 35,5 Jahren).
value = [0, 2]
Das bedeutet, dass von diesen 2 Komödianten 0 "NEIN" erhält und 2 "WEG" erhält.
False - 2 Theaterdarsteller gehen weiter:
Experience (Erfahrung)
Experience <= 9,5
Das bedeutet, dass Komödianten mit 9,5 Jahren Erfahrung oder mehr der linken Pfeil folgen und die其余en der rechten Pfeil folgen werden.
gini = 0,5
Das bedeutet, dass 50% der Proben in eine Richtung bewegen werden.
samples = 2
Das bedeutet, dass in dieser Zweigstelle noch 2 Komödianten bleiben (2 Komödianten über 35,5 Jahren).
value = [1, 1]
Das bedeutet, dass einer der beiden Komödianten "NEIN" erhält und einer "WEG" erhält.

True - 1 Komödiant endet hier:
gini = 0.0
Das bedeutet, dass alle Proben dasselbe Ergebnis erzielen.
samples = 1
Das bedeutet, dass in dieser Untergruppe noch ein Komödienactor übrig ist (einer hat 9,5 Jahre oder weniger Erfahrung).
value = [0, 1]
0 bedeutet "NEIN", 1 bedeutet "JA".
False - 1 Komödienactor bis hierher:
gini = 0.0
Das bedeutet, dass alle Proben dasselbe Ergebnis erzielen.
samples = 1
Das bedeutet, dass in dieser Untergruppe noch ein Komödienactor übrig ist (von denen einer über 9,5 Jahre Erfahrung hat).
value = [1, 0]
1 bedeutet "NEIN", 0 bedeutet "JA".
Vorhersagewerte
Wir können den Entscheidungsbaum verwenden, um neue Werte vorherzusagen.
Zum Beispiel: Sollte ich eine Show sehen, die von einem 40-jährigen amerikanischen Komödienactor mit 10 Jahren Erfahrung und einer Komödienbewertung von 7 gespielt wird?
Beispiel
Verwenden predict()
Methoden zur Vorhersage neuer Werte:
print(dtree.predict([[40, 10, 7, 1]]))
Beispiel
Was ist die Antwort, wenn die Komödienstufe 6 ist?
print(dtree.predict([[40, 10, 6, 1]]))
Unterschiedliche Ergebnisse
Wenn er ausreichend oft ausgeführt wird, liefert der Entscheidungsbaum auch unterschiedliche Ergebnisse, selbst wenn die gleichen Daten eingegeben werden.
Das liegt daran, dass der Entscheidungsbaum uns keine 100%ige Bestätigung geben kann. Es basiert auf der Wahrscheinlichkeit der Ergebnisse, daher können die Antworten unterschiedlich sein.
- Vorherige Seite Training/Prüfung
- Nächste Seite MySQL Einführung