Ich lese Machine Learning In Action
und gehe durch den Entscheidungsbaum Kapitel. Ich verstehe, dass Entscheidungsbäume so aufgebaut sind, dass das Teilen des Datensatzes Ihnen eine Möglichkeit gibt, Ihre Zweige und Blätter zu strukturieren. Dies gibt Ihnen wahrscheinlichere Informationen an der Spitze des Baums und begrenzt, wie viele Entscheidungen Sie durchlaufen müssen.Verständnis Shannon Entropie eines Datensatzes
Das Buch zeigt eine Funktion der Shannon-Entropie eines Datensatzes Bestimmung:
def calcShannonEnt(dataSet):
numEntries = len(dataSet)
labelCounts = {}
for featVec in dataSet: #the the number of unique elements and their occurance
currentLabel = featVec[-1]
if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
shannonEnt = 0.0
for key in labelCounts:
prob = float(labelCounts[key])/numEntries
shannonEnt -= prob * log(prob,2) #log base 2
return shannonEnt
Wenn der Eingabedatensatz ein Array von Arrays, wobei jedes Array ein Potential klassifizierbar Merkmal darstellt:
dataSet = [[1, 1, 'yes'],
[1, 1, 'yes'],
[1, 0, 'no'],
[0, 1, 'no'],
[0, 1, 'no']]
Was ich nicht verstehe ist, warum die Shannon-Entropie-Funktion in diesem Buch immer nur das letzte Element im Feature-Array betrachtet? Es sieht so aus, als würde es nur die Entropie für "Ja" oder "Nein" -Elemente berechnen und nicht die Entropie irgendeines der anderen Merkmale?
Es macht Sinn für mich nicht, weil die Entropie für diese Daten
gesetztdataSet = [[1, 1, 'yes'],
[1, 'asdfasdf', 'yes'],
[1900, 0, 'no'],
[0, 1, 'no'],
['ddd', 1, 'no']]
Ist das gleiche wie die Entropie oben, obwohl es viel vielfältige Daten hat.
Sollten nicht auch die anderen Feature-Elemente gezählt werden, um die gesamte Entropie des Datensatzes zu erhalten, oder verstehe ich nicht, was die Entropieberechnung machen soll?
Wenn jemand neugierig ist, ist die vollständige Quelle (wo dieser Code herkam) für das Buch here unter dem Ordner Chapter03.