Heim Backend-Entwicklung Python-Tutorial Detaillierte Einführung in den Entscheidungsbaum für maschinelles Lernen in Python

Detaillierte Einführung in den Entscheidungsbaum für maschinelles Lernen in Python

Mar 19, 2017 pm 02:20 PM

Entscheidungsbäume (DTs) sind eine unbeaufsichtigte Lernmethode zur Klassifizierung und Regression.

Vorteile: Die Rechenkomplexität ist nicht hoch, die Ausgabeergebnisse sind leicht zu verstehen, unempfindlich gegenüber fehlenden Zwischenwerten und können irrelevante Merkmalsdaten verarbeiten.
Nachteile: Überanpassungsprobleme können auftreten.
Anwendbar Datentyp: numerischer und nominaler Quellcode-Download https://www.manning.com/books/machine-learning-in-Aktion

Demo ausführen

Schlüsselalgorithmus

if so return class tag;

else

Finden Die besten Funktionen zum Teilen des Datensatzes Funktion
createBranch und Hinzufügen des Rückgabeergebnisses zum Verzweigungsknoten
Verzweigungsknoten zurückgeben
entsprechender Code
def createTree (dataSet,labels):class

List

= [example[-1] for example in dataSet] is not dataset[-1] {the last element of dataset}, und zu diesem Zeitpunkt ist das erste Element vom letzten in jedem Element des Datensatzes

if classList.

count
(classList[0]) == len(classList): Wenn der zurückgegebene klassifizierte Listenanzahltyp ist das gleiche, gib diesen Typ zurück! Ob der untergeordnete Knoten klassifiziert werden kann. Wenn ja, geben Sie einen Typ zurück. Andernfalls rekursiv nach unten klassifizieren == 1: #Aufteilung beenden, wenn keine weiteren Features im DataSet vorhanden sind. Wenn nur ein Element vorhanden ist             return MajorityCnt(classList)
        bestFeat = ChooseBestFeatureToSplit(dataSet)                              e = {bestFeatLabel:{}}    Dann erstellen Sie einen Teilbaum der besten Kategorie   del( labels[bestFeat])   Löschen Sie die beste Kategorie featValues ​​​​= [example[bestFeat] zum Beispiel in dataSet] uniqueVals = set(featValues) set ist eine Klassifizierung, sehen Sie, wie viele Typen es dafür gibt value in uniqueVals:
subLabels = labels[:] #kopiere alle Labels, damit Bäume vorhandene Labels durcheinander bringen
MyTree [BestFeatlabel] [value] = CreateTree (SPLITDATASET (DataSET, BestFeat, Value), Sublabels
R> R Eturn mytree

Daten Die Änderung der Informationen vor und nach einem Satz wird als Informationsgewinn bezeichnet. Das wichtigste Prinzip beim Teilen eines Datensatzes besteht darin, ungeordnete Daten geordneter zu machen. Dies wird als kuchenschneidendes Prinzip verstanden:




Verwenden Sie die Einheitsentropie, um die Komplexität und Menge an Informationen zu beschreiben. Entsprechend der Dichte des Kuchens, wenn es sich um einen vertikal geschnittenen Kuchen gleicher Dichte handelt,

Das Gewicht jedes Teils g = Gesamt-G * sein Anteil im Großkreis! Wenn analog die Informationsentropie nach der Partitionierung gleich ist, ist das kleine h jedes kleinen Teils der Daten = pro * Gesamt-H und die Summe h[i] = H.

Allerdings: Was wir brauchen, ist Genau das Gegenteil: Es ist nicht so, dass die Informationsentropie gleich ist, aber sie ist ungleich. Die grünen können beispielsweise Grasfüllungen sein, die gelben sind Apfelfüllungen und die blauen sind violette Süßkartoffeln hat eine andere Dichte!

Wir müssen es richtig aufteilen! Sortieren Sie es und finden Sie die Linie, die den verschiedenen Füllungen nahekommt. Das kleine h wird hier minimiert, und schließlich nähert sich das Gesamt-H dem Minimalwert, während die Fläche unverändert bleibt, was ein zu lösendes Optimierungsproblem darstellt.


DebugProcess
calcShannonEnt : [[1, 'no'], [1, 'no']] = 0 log(1, 2) * 0,4 = 0 Warum ist es 0, weil pro 1 sein muss
log(prob,2) log(1,2) = 0;2^0=1, weil prob : [[1, 'ja'], [1, 'ja'], [0, 'nein']] = 0,91 >> * 0,6 = 0,55
25 Zeilen für featVec in dataSet: Häufigkeitszählung für prop
chooseBestFeatureToSplit() 
0.9709505944546686 = calcShannonEnt(dataSet) : [[1, 1, 'yes ' ], [1, 1, 'ja'], [1, 0, 'nein'], [0, 1, 'nein'], [0, 1, 'nein']]

# Erkennung, ob jedes Unterelement des Datensatzes zur gleichen Kategorie gehört: Wenn die Werte alle a sind und die Ergebnisse alle y oder n sind, handelt es sich um eine Kategorie. Daher sind nur zwei Parametereingaben
0,5509775004326937 = += prob * calcShannonEnt(subDataSet) getrennt Nach der Unterteilung wird die Wahrscheinlichkeit * Shannon-Drop, die erhaltene Summe, das ursprüngliche Gesamt-Shannon-Drop-Verhältnis

# 数据越接近,香浓熵值越少,越接近0 ,越不同,越多分逻辑,香浓熵就越大
# 只计算 其dataSet的featVec[-1] 结果标签
def calcShannonEnt(dataSet):
Nach dem Login kopieren


0,4199730940219749 infoGain = baseEntropy - newEntropy

Zusammenfassung:  

Zuerst konnte ich den Code nicht verstehen und verstand nicht, was er tun sollte! Klassifizierung: Unser Ziel ist es, eine Reihe von Daten zu klassifizieren und mit Etiketten zu kennzeichnen.
Wie k Neighbor Classify([0, 0], Group, Labels, 3), was bedeutet, dass die neuen Daten [0,0] in der Gruppe klassifiziert werden und Daten gemäß dem k=3 Neighbor-Algorithmus beschriftet werden! Gruppe entspricht Label!

Ich habe

später gesehen und dann verstanden, dass der Datensatz die Werte der Dimensionen bedeutet, und der letzte ist, ob es sich um Fisch handelt, Ergebnisbezeichnung Detaillierte Einführung in den Entscheidungsbaum für maschinelles Lernen in Python

Daher ist es notwendig, jede Dimension + Ergebnisbeschriftung in ein zweidimensionales Array auszuschneiden, um sie zu vergleichen und zu klassifizieren.

Der Test sollte darin bestehen, die ersten n Dimensionen zu dividieren. Wert, Vektoreingabe, die Ausgabe ist ja oder nein!

Auf den ersten Blick erscheint es verwirrend, aber es ist einfacher zu verstehen, wenn Sie Ihre Ideen klarstellen und sich den Code ansehen!

Nachdem Sie die Ziel- und Anfangsdaten verstanden haben, werden Sie verstehen, dass classList die Ergebnisbezeichnung ist! , ist das entsprechende Ergebnislabel

, das dem zu klassifizierenden Datensatz entspricht, und labels ist der Feature-Name, der der Dimension des Startdatensatzes entspricht, der Name des Features strname
bestFeatLabel ist der Dimensionsname des Besten Klassifizierungsmerkmal, unabhängig davon, ob es sich um die erste Dimension oder die zweite Dimension handelt, N
featValues ​​​​ist das Wertearray unter der Dimension von bestFeatLabel. Es sind die Gruppen unter dieser Dimension, die für neue Klassifizierungsvergleiche verwendet werden.
uniqueVals verwendet set, um zu bestimmen, ob es zur gleichen Kategorie gehört,
zum Beispiel
 dataSet = [[1, 1, 'yes'],[0, 1, 'yes'],[1, 0, 'no' ],[1, 0, 'no'],[0, 0, 'no']]
 labels = ['no surfaceing','flippers',]
createTree wie folgt: {'flippers': {0: 'no', 1: 'yes'}} lässt die Dimension „keine Oberfläche“ direkt weg





Schließlich verwenden wir einen Absatz um über den Entscheidungsbaum zu sprechen:

Die Essenz eines Entscheidungsbaums besteht darin, die Effizienz zu beschleunigen! Verwenden Sie „Maximum Optimal“, um das erste negative Etikett zu teilen, und das positive Etikett sollte weiterhin geteilt werden! Und wenn negativ, geben Sie direkt die Antwort des Blattknotens zurück! Die entsprechenden anderen Dimensionen werden nicht weiter bewertet!

Theoretisch können Sie, selbst wenn Sie den Entscheidungsbaumalgorithmus nicht verwenden, alle Daten blind erschöpfen, d. h. jedes Mal alle Dimensionen der Daten durchgehen! Und da ist die letzte Label-Antwort! Anzahl der Dimensionen * Anzahl der Daten! Für Komplexität! Das ist die passende Antwort zur Erinnerung! Passendes Expertensystem! Schlechte Fähigkeit, Situationen vorherzusagen, die nicht eintreten! Aber das Datenvolumen ist groß, die Geschwindigkeit ist hoch und es kann sich auch intelligent anfühlen! Weil es eine Wiederholung vergangener Erfahrungen ist! Aber ist es tot? Nein, es ist nicht tot! Erschöpfung ist tot, aber Entscheidungsbäume sind dynamisch! Lernen! Baum wechseln! Zumindest ist es dynamisch gebaut! Wenn Daten unvollständig sind, können sie auch unvollständig sein! Verwenden Sie ein Urteil, wenn es gelöst werden kann, und wenn nicht, brauchen Sie ein anderes! Abmessungen vergrößert!

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Entscheidungsbaum für maschinelles Lernen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden Mar 05, 2025 am 09:58 AM

Dieses Tutorial zeigt, wie man Python verwendet, um das statistische Konzept des Zipf -Gesetzes zu verarbeiten, und zeigt die Effizienz des Lesens und Sortierens großer Textdateien von Python bei der Bearbeitung des Gesetzes. Möglicherweise fragen Sie sich, was der Begriff ZiPF -Verteilung bedeutet. Um diesen Begriff zu verstehen, müssen wir zunächst das Zipf -Gesetz definieren. Mach dir keine Sorgen, ich werde versuchen, die Anweisungen zu vereinfachen. Zipf -Gesetz Das Zipf -Gesetz bedeutet einfach: In einem großen natürlichen Sprachkorpus erscheinen die am häufigsten vorkommenden Wörter ungefähr doppelt so häufig wie die zweiten häufigen Wörter, dreimal wie die dritten häufigen Wörter, viermal wie die vierten häufigen Wörter und so weiter. Schauen wir uns ein Beispiel an. Wenn Sie sich den Brown Corpus in amerikanischem Englisch ansehen, werden Sie feststellen, dass das häufigste Wort "Th ist

Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Mar 10, 2025 pm 06:54 PM

In diesem Artikel wird erklärt, wie man schöne Suppe, eine Python -Bibliothek, verwendet, um HTML zu analysieren. Es beschreibt gemeinsame Methoden wie find (), find_all (), select () und get_text () für die Datenextraktion, die Behandlung verschiedener HTML -Strukturen und -Anternativen (SEL)

Bildfilterung in Python Bildfilterung in Python Mar 03, 2025 am 09:44 AM

Der Umgang mit lauten Bildern ist ein häufiges Problem, insbesondere bei Mobiltelefonen oder mit geringen Auflösungskamera-Fotos. In diesem Tutorial wird die Bildfilterungstechniken in Python unter Verwendung von OpenCV untersucht, um dieses Problem anzugehen. Bildfilterung: Ein leistungsfähiges Werkzeug Bildfilter

Wie man mit PDF -Dokumenten mit Python arbeitet Wie man mit PDF -Dokumenten mit Python arbeitet Mar 02, 2025 am 09:54 AM

PDF-Dateien sind für ihre plattformübergreifende Kompatibilität beliebt, wobei Inhalte und Layout für Betriebssysteme, Lesegeräte und Software konsistent sind. Im Gegensatz zu Python Processing -Klartextdateien sind PDF -Dateien jedoch binäre Dateien mit komplexeren Strukturen und enthalten Elemente wie Schriftarten, Farben und Bilder. Glücklicherweise ist es nicht schwierig, PDF -Dateien mit Pythons externen Modulen zu verarbeiten. In diesem Artikel wird das PYPDF2 -Modul verwendet, um zu demonstrieren, wie Sie eine PDF -Datei öffnen, eine Seite ausdrucken und Text extrahieren. Die Erstellung und Bearbeitung von PDF -Dateien finden Sie in einem weiteren Tutorial von mir. Vorbereitung Der Kern liegt in der Verwendung von externem Modul PYPDF2. Installieren Sie es zunächst mit PIP: pip ist p

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Mar 02, 2025 am 10:10 AM

Dieses Tutorial zeigt, wie man Redis Caching nutzt, um die Leistung von Python -Anwendungen zu steigern, insbesondere innerhalb eines Django -Frameworks. Wir werden Redis -Installation, Django -Konfiguration und Leistungsvergleiche abdecken, um den Vorteil hervorzuheben

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Mar 10, 2025 pm 06:52 PM

Dieser Artikel vergleicht TensorFlow und Pytorch für Deep Learning. Es beschreibt die beteiligten Schritte: Datenvorbereitung, Modellbildung, Schulung, Bewertung und Bereitstellung. Wichtige Unterschiede zwischen den Frameworks, insbesondere bezüglich des rechnerischen Graps

So implementieren Sie Ihre eigene Datenstruktur in Python So implementieren Sie Ihre eigene Datenstruktur in Python Mar 03, 2025 am 09:28 AM

Dieses Tutorial zeigt, dass eine benutzerdefinierte Pipeline -Datenstruktur in Python 3 erstellt wird, wobei Klassen und Bedienerüberladungen für verbesserte Funktionen genutzt werden. Die Flexibilität der Pipeline liegt in ihrer Fähigkeit, eine Reihe von Funktionen auf einen Datensatz GE anzuwenden

Einführung in die parallele und gleichzeitige Programmierung in Python Einführung in die parallele und gleichzeitige Programmierung in Python Mar 03, 2025 am 10:32 AM

Python, ein Favorit für Datenwissenschaft und Verarbeitung, bietet ein reichhaltiges Ökosystem für Hochleistungs-Computing. Die parallele Programmierung in Python stellt jedoch einzigartige Herausforderungen dar. Dieses Tutorial untersucht diese Herausforderungen und konzentriert sich auf die globale Interprete

See all articles