Python Machine Learning-Buchcode-Repository
WICHTIGER HINWEIS (21.09.2017):
Dieses GitHub-Repository enthält die Codebeispiele der 1. Auflage des Buches „Python Machine Learning“. Wenn Sie nach Codebeispielen der 2. Edition suchen, lesen Sie bitte stattdessen dieses Repository.
Was Sie erwarten können, sind 400 Seiten mit nützlichem Material und praktisch allem, was Sie wissen müssen, um mit maschinellem Lernen zu beginnen ... von der Theorie bis zum tatsächlichen Code, den Sie direkt in die Tat umsetzen können! Dies ist nicht nur ein weiteres „So funktioniert Scikit-Learn“-Buch. Mein Ziel ist es, alle zugrunde liegenden Konzepte zu erklären, Ihnen alles zu sagen, was Sie in Bezug auf Best Practices und Vorbehalte wissen müssen, und wir werden diese Konzepte hauptsächlich mit NumPy, scikit-learn und Theano in die Tat umsetzen.
Sie sind sich nicht sicher, ob dieses Buch das Richtige für Sie ist? Bitte schauen Sie sich die Auszüge aus dem Vorwort und dem Vorwort an oder werfen Sie einen Blick auf den FAQ-Bereich für weitere Informationen.
1. Auflage, veröffentlicht am 23. September 2015
Taschenbuch: 454 Seiten
Herausgeber: Packt Publishing
Sprache: Englisch
ISBN-10: 1783555130
ISBN-13: 978-1783555130
Kindle-ASIN: B00YSILNL0
Deutsche ISBN-13: 978-3958454224
Japanische ISBN-13: 978-4844380603
Italienische ISBN-13: 978-8850333974
Chinesisch (traditionell) ISBN-13: 978-9864341405
Chinesisch (Festland) ISBN-13: 978-7111558804
Koreanische ISBN-13: 979-1187497035
Russische ISBN-13: 978-5970604090
Inhaltsverzeichnis und Code-Notizbücher
Klicken Sie einfach auf die ipynb
/ nbviewer
-Links neben den Kapitelüberschriften, um die Codebeispiele anzuzeigen (derzeit werden die internen Dokumentlinks nur von der NbViewer-Version unterstützt). Bitte beachten Sie, dass es sich dabei lediglich um die dem Buch beiliegenden Codebeispiele handelt, die ich zur Vereinfachung hochgeladen habe. Beachten Sie, dass diese Notizbücher ohne die Formeln und den beschreibenden Text möglicherweise nicht nützlich sind.
- Auszüge aus dem Vorwort und dem Vorwort
- Anleitung zum Einrichten von Python und dem Jupiter Notebook
- Maschinelles Lernen – Computern die Möglichkeit geben, aus Daten zu lernen [dir] [ipynb] [nbviewer]
- Training von Algorithmen für maschinelles Lernen zur Klassifizierung [dir] [ipynb] [nbviewer]
- Eine Tour durch Klassifikatoren für maschinelles Lernen mit Scikit-Learn [dir] [ipynb] [nbviewer]
- Erstellen guter Trainingssätze – Datenvorverarbeitung [dir] [ipynb] [nbviewer]
- Komprimieren von Daten durch Dimensionsreduktion [dir] [ipynb] [nbviewer]
- Lernen von Best Practices für die Modellevaluierung und Hyperparameteroptimierung [dir] [ipynb] [nbviewer]
- Kombination verschiedener Modelle für Ensemble-Lernen [dir] [ipynb] [nbviewer]
- Anwendung von maschinellem Lernen auf die Stimmungsanalyse [dir] [ipynb] [nbviewer]
- Einbetten eines Modells für maschinelles Lernen in eine Webanwendung [dir] [ipynb] [nbviewer]
- Vorhersage kontinuierlicher Zielvariablen mit Regressionsanalyse [dir] [ipynb] [nbviewer]
- Arbeiten mit unbeschrifteten Daten – Clustering-Analyse [dir] [ipynb] [nbviewer]
- Training künstlicher neuronaler Netze für die Bilderkennung [dir] [ipynb] [nbviewer]
- Parallelisierung des neuronalen Netzwerktrainings über Theano [dir] [ipynb] [nbviewer]
Gleichungsreferenz
[PDF] [TEX]
Folien für den Unterricht
Ein großes Dankeschön geht an Dmitriy Dligach für das Teilen seiner Folien aus seinem Kurs zum maschinellen Lernen, der derzeit an der Loyola University Chicago angeboten wird.
- https://github.com/dmitriydligach/PyMLSlides
Zusätzliche Mathematik- und NumPy-Ressourcen
Einige Leser fragten nach Math- und NumPy-Primern, da diese aufgrund von Längenbeschränkungen nicht enthalten waren. Allerdings habe ich solche Ressourcen kürzlich für ein anderes Buch zusammengestellt, diese Kapitel jedoch online frei verfügbar gemacht, in der Hoffnung, dass sie auch als hilfreiches Hintergrundmaterial für dieses Buch dienen:
Algebra-Grundlagen [PDF] [EPUB]
Eine Einführung in Analysis und Differenzierung [PDF] [EPUB]
Einführung in NumPy [PDF] [EPUB] [Code Notebook]
Dieses Buch zitieren
Sie sind herzlich eingeladen, die Codeschnipsel oder andere Inhalte aus diesem Buch in wissenschaftlichen Publikationen und anderen Arbeiten wiederzuverwenden; In diesem Fall würde ich mich über Zitate der Originalquelle freuen:
BibTeX :
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
MLA :
Raschka, Sebastian. Python maschinelles Lernen . Birmingham, Großbritannien: Packt Publishing, 2015. Drucken.
Feedback und Bewertungen
Kurze Rezensionsausschnitte
Sebastian Raschkas neues Buch „Python Machine Learning“ ist gerade erschienen. Ich hatte die Gelegenheit, ein Rezensionsexemplar zu lesen und es ist genau so, wie ich es erwartet hatte – wirklich großartig! Es ist gut organisiert, super einfach zu befolgen und bietet nicht nur eine gute Grundlage für kluge Nicht-Experten, auch Praktiker können sich hier Anregungen holen und neue Tricks lernen.
– Lon Riesberg bei Data Elixir
Super Arbeit! Bisher scheint es für mich die richtige Balance zwischen Theorie und Praxis gefunden zu haben … Mathematik und Code!
– Brian Thomas
Ich habe (praktisch) jeden Titel zum Thema maschinelles Lernen gelesen, der auf Scikit-learn basiert, und dies ist zweifellos der beste, den es gibt.
– Jason Wolosonovich
Das beste Buch, das ich je von PACKT Publishing gesehen habe. Dies ist eine sehr gut geschriebene Einführung in maschinelles Lernen mit Python. Wie andere angemerkt haben, eine perfekte Mischung aus Theorie und Anwendung.
– Josh D.
Ein Buch mit einer Mischung von Qualitäten, die kaum zu finden ist: Es kombiniert die erforderliche Mathematik zur Kontrolle der Theorie mit der angewandten Codierung in Python. Es ist auch großartig zu sehen, dass es nicht mit der Vermittlung einer Einführung in Python verschwendet wird, wie es bei vielen anderen Büchern der Fall ist, nur um ein größeres Publikum anzusprechen. Man merkt, dass es von sachkundigen Autoren geschrieben wurde und nicht nur von Heimwerkern.
– Amazon-Kunde
Sebastian Raschka hat ein erstaunliches Tutorial zum maschinellen Lernen erstellt, das Theorie mit Praxis verbindet. Das Buch erklärt maschinelles Lernen aus theoretischer Sicht und enthält jede Menge codierte Beispiele, die zeigen, wie Sie die Technik des maschinellen Lernens tatsächlich anwenden würden. Es kann von einem Anfänger oder fortgeschrittenen Programmierer gelesen werden.
- William P. Ross, 7 Python-Bücher, die man unbedingt lesen muss
Längere Rezensionen
Wenn Sie Hilfe bei der Entscheidung benötigen, ob dieses Buch das Richtige für Sie ist, schauen Sie sich einige der unten verlinkten „längeren“ Rezensionen an. (Wenn Sie eine Rezension geschrieben haben, lassen Sie es mich bitte wissen, ich füge sie dann gerne zur Liste hinzu.)
- Python Machine Learning Review von Patrick Hill am Chartered Institute for IT
- Buchrezension: Python Machine Learning von Sebastian Raschka von Alex Turner bei WhatPixel
Links
- E-Book und Taschenbuch bei Amazon.com, Amazon.co.uk, Amazon.de
- E-Book und Taschenbuch von Packt (dem Verlag)
- in anderen Buchhandlungen: Google Books, O'Reilly, Safari, Barnes & Noble, Apple iBooks, ...
- soziale Plattformen: Goodreads
Übersetzungen
- Italienische Übersetzung über „Apogeo“
- Deutsche Übersetzung über „mitp Verlag“
- Japanische Übersetzung über „Impress Top Gear“
- Chinesische Übersetzung (traditionelles Chinesisch)
- Chinesische Übersetzung (einfaches Chinesisch)
- Koreanische Übersetzung über „Kyobo“
- Polnische Übersetzung über „Helion“
Literaturhinweise und weiterführende Literatur
Errata
Bonus-Notizbücher (nicht im Buch)
- Implementierung der logistischen Regression [dir] [ipynb] [nbviewer]
- Ein grundlegendes Pipeline- und Grid-Such-Setup [dir] [ipynb] [nbviewer]
- Ein Beispiel für eine erweiterte verschachtelte Kreuzvalidierung [dir] [ipynb] [nbviewer]
- Eine einfache Barebones-Flask-Webapp-Vorlage [Verzeichnis anzeigen][als ZIP-Datei herunterladen]
- Lesen handgeschriebener Ziffern von MNIST in NumPy-Arrays [GitHub ipynb] [nbviewer]
- Scikit-learn-Modellpersistenz mit JSON [GitHub ipynb] [nbviewer]
- Multinomiale logistische Regression / Softmax-Regression [GitHub ipynb] [nbviewer]
„Verwandter Inhalt“ (nicht im Buch)
- Modellbewertung, Modellauswahl und Algorithmenauswahl beim maschinellen Lernen – Teil I
- Modellbewertung, Modellauswahl und Algorithmenauswahl beim maschinellen Lernen – Teil II
- Modellbewertung, Modellauswahl und Algorithmenauswahl beim maschinellen Lernen – Teil III
SciPy 2016
Wir hatten eine tolle Zeit bei SciPy 2016 in Austin! Es war eine wahre Freude, so viele Leser meines Buches zu treffen und mit ihnen zu plaudern. Vielen Dank für all die netten Worte und das Feedback! Und falls Sie es verpasst haben: Andreas Mueller und ich haben eine Einführung in maschinelles Lernen mit Scikit-learn gegeben; Bei Interesse sind die Videoaufzeichnungen von Teil I und Teil II jetzt online!
PyData Chicago 2016
Ich habe mich auf der PyData Chicago 2016 an der ziemlich herausfordernden Aufgabe versucht, scikit-learn und maschinelles Lernen in nur 90 Minuten einzuführen. Die Folien und das Tutorialmaterial sind unter „Learning scikit-learn – An Introduction to Machine Learning in Python“ verfügbar.
Notiz
Ich habe eine separate Bibliothek, mlxtend
, eingerichtet, die zusätzliche Implementierungen von Algorithmen für maschinelles Lernen (und allgemeine „Data Science“) enthält. Ich habe auch Implementierungen aus diesem Buch (z. B. das Entscheidungsbereichsdiagramm, das künstliche neuronale Netzwerk und sequentielle Merkmalsauswahlalgorithmen) mit zusätzlicher Funktionalität hinzugefügt.
Übersetzungen
Liebe Leser ,
zunächst einmal möchte ich mich bei euch allen für die tolle Unterstützung bedanken! Ich freue mich sehr über all das tolle Feedback, das Sie mir bisher geschickt haben, und freue mich, dass das Buch einem breiten Publikum so nützlich war.
In den letzten Monaten habe ich Hunderte von E-Mails erhalten und versucht, in der mir zur Verfügung stehenden Zeit so viele wie möglich zu beantworten. Um sie auch für andere Leser nützlich zu machen, habe ich viele meiner Antworten im FAQ-Bereich (unten) gesammelt.
Darüber hinaus haben mich einige von Ihnen nach einer Plattform gefragt, auf der Leser über den Inhalt des Buches diskutieren können. Ich hoffe, dass dies eine Gelegenheit für Sie ist, Ihr Wissen mit anderen Lesern zu diskutieren und zu teilen:
Google Groups-Diskussionsforum
(Und ich werde mein Bestes geben, Fragen selbst zu beantworten, wenn es die Zeit erlaubt! :))
Gute Ratschläge können nur weitergegeben werden. Es nützt einem selbst nie etwas.
– Oscar Wilde
Beispiele und Anwendungen von Lesern
Ich muss noch einmal (großes!) DANKE für all das nette Feedback zum Buch sagen. Ich habe viele E-Mails von Lesern erhalten, die die Konzepte und Beispiele aus diesem Buch in die Praxis umsetzen und in ihren Projekten sinnvoll einsetzen. In diesem Abschnitt fange ich an, einige dieser großartigen Anwendungen zu sammeln, und ich würde Ihr Projekt gerne zu dieser Liste hinzufügen – schreiben Sie mir einfach eine kurze E-Mail!
- 40 Skripte zur optischen Zeichenerkennung von Richard Lyman
- Code-Experimente von Jeremy Nation
- Was ich gelernt habe: Implementierung eines Klassifikators von Grund auf in Python von Jean-Nicholas Hould
FAQ
Allgemeine Fragen
- Was sind maschinelles Lernen und Datenwissenschaft?
- Warum implementieren Sie und andere Menschen manchmal Algorithmen für maschinelles Lernen von Grund auf?
- Auf welchen Lernpfad/welche Disziplin in der Datenwissenschaft sollte ich mich konzentrieren?
- Ab wann sollte man anfangen, zu Open Source beizutragen?
- Wie wichtig ist es Ihrer Meinung nach, einen Mentor für den Lernprozess zu haben?
- Wo gibt es die besten Online-Communities rund um Data Science/maschinelles Lernen oder Python?
- Wie würden Sie einem Softwareentwickler maschinelles Lernen erklären?
- Wie würde Ihr Lehrplan für einen Anfänger im maschinellen Lernen aussehen?
- Was ist die Definition von Data Science?
- Wie führen Datenwissenschaftler die Modellauswahl durch? Unterscheidet es sich von Kaggle?
Fragen zum Bereich Maschinelles Lernen
- Wie hängen künstliche Intelligenz und maschinelles Lernen zusammen?
- Was sind einige reale Beispiele für Anwendungen des maschinellen Lernens in diesem Bereich?
- Welche verschiedenen Studienrichtungen gibt es im Data Mining?
- Was sind die Forschungsunterschiede zwischen den beiden Bereichen maschinelles Lernen und Data Mining?
- Woher weiß ich, ob das Problem durch maschinelles Lernen lösbar ist?
- Was sind die Ursprünge des maschinellen Lernens?
- Wie wurde die Klassifizierung als lernende Maschine entwickelt?
- Welche Algorithmen für maschinelles Lernen gehören zu den besten?
- Was sind die allgemeinen Kategorien von Klassifikatoren?
- Was ist der Unterschied zwischen einem Klassifikator und einem Modell?
- Was ist der Unterschied zwischen einem parametrischen Lernalgorithmus und einem nichtparametrischen Lernalgorithmus?
- Was ist der Unterschied zwischen einer Kostenfunktion und einer Verlustfunktion beim maschinellen Lernen?
Fragen zu ML-Konzepten und Statistiken
Kostenfunktionen und Optimierung
- Anpassen eines Modells über geschlossene Gleichungen vs. Gradientenabstieg vs. stochastischer Gradientenabstieg vs. Mini-Batch-Lernen – was ist der Unterschied?
- Wie leitet man die Gradientenabstiegsregel für lineare Regression und Adaline ab?
Regressionsanalyse
- Was ist der Unterschied zwischen Pearson R und der einfachen linearen Regression?
Baummodelle
- Wie funktioniert das Random-Forest-Modell? Wie unterscheidet es sich vom Bagging und Boosting in Ensemble-Modellen?
- Welche Nachteile hat die Verwendung des klassischen Entscheidungsbaumalgorithmus für einen großen Datensatz?
- Warum sind Implementierungen von Entscheidungsbaumalgorithmen normalerweise binär und welche Vorteile bieten die verschiedenen Verunreinigungsmetriken?
- Warum bauen wir Entscheidungsbäume über Entropie statt über den Klassifizierungsfehler auf?
- Wann kann eine zufällige Gesamtstruktur eine schreckliche Leistung erbringen?
Modellbewertung
- Was ist Überanpassung?
- Wie kann ich eine Überanpassung vermeiden?
- Ist es bei der Kreuzvalidierung immer besser, die größtmögliche Anzahl an Falten zu haben?
- Ist es beim Training eines SVM-Klassifikators besser, eine große oder eine kleine Anzahl von Unterstützungsvektoren zu haben?
- Wie bewerte ich ein Modell?
- Was ist die beste Validierungsmetrik für die Klassifizierung mehrerer Klassen?
- Welche Faktoren sollte ich bei der Auswahl einer Vorhersagemodelltechnik berücksichtigen?
- Welche Spielzeugdatensätze eignen sich am besten zur Visualisierung und zum Verständnis des Klassifikatorverhaltens?
- Wie wähle ich SVM-Kernel aus?
- Zwischenspiel: Vergleichen und Berechnen von Leistungsmetriken bei der Kreuzvalidierung – Probleme mit unausgeglichenen Klassen und drei verschiedene Methoden zur Berechnung des F1-Scores
Logistische Regression
- Was ist Softmax-Regression und wie hängt sie mit der logistischen Regression zusammen?
- Warum wird die logistische Regression als lineares Modell betrachtet?
- Was ist die probabilistische Interpretation der regulierten logistischen Regression?
- Führt die Regularisierung bei der logistischen Regression immer zu einer besseren Anpassung und einer besseren Verallgemeinerung?
- Was ist der Hauptunterschied zwischen naivem Bayes und logistischer Regression?
- Was genau ist „Softmax und der multinomiale Logistikverlust“ im Kontext des maschinellen Lernens?
- Welche Beziehung besteht zwischen logistischer Regression und neuronalen Netzen und wann sollte welche verwendet werden?
- Logistische Regression: Warum Sigmoidfunktion?
- Gibt es eine analytische Lösung für die logistische Regression, die der Normalgleichung für die lineare Regression ähnelt?
Neuronale Netze und Deep Learning
- Was ist der Unterschied zwischen Deep Learning und herkömmlichem maschinellen Lernen?
- Können Sie den Backpropagation-Algorithmus für neuronale Netze anschaulich erklären?
- Warum hat es so lange gedauert, bis tiefe Netzwerke erfunden wurden?
- Welche guten Bücher/Aufsätze zum Erlernen von Deep Learning gibt es?
- Warum gibt es so viele Deep-Learning-Bibliotheken?
- Warum hassen manche Menschen neuronale Netze/Deep Learning?
- Wie kann ich herausfinden, ob Deep Learning für ein bestimmtes Problem besser funktioniert als SVM oder Random Forest?
- Was ist falsch, wenn der Fehler meines neuronalen Netzwerks zunimmt?
- Wie debugge ich einen Algorithmus für ein künstliches neuronales Netzwerk?
- Was ist der Unterschied zwischen einem Perceptron-, Adaline- und einem neuronalen Netzwerkmodell?
- Was ist die Grundidee hinter der Dropout-Technik?
Andere Algorithmen für überwachtes Lernen
- Warum ist Nearest Neighbor ein Lazy-Algorithmus?
Unüberwachtes Lernen
- Welche Probleme gibt es beim Clustering?
Halbüberwachtes Lernen
- Was sind die Vorteile des halbüberwachten Lernens gegenüber überwachtem und unüberwachtem Lernen?
Ensemble-Methoden
- Ist die Kombination von Klassifikatoren mit Stapeln besser als die Auswahl des Besten?
Vorverarbeitung, Merkmalsauswahl und Extraktion
- Warum müssen wir Trainingsparameter wiederverwenden, um Testdaten zu transformieren?
- Welche verschiedenen Methoden zur Dimensionsreduktion gibt es beim maschinellen Lernen?
- Was ist der Unterschied zwischen LDA und PCA zur Dimensionsreduktion?
- Wann sollte ich die Datennormalisierung/-standardisierung anwenden?
- Beeinflusst die mittlere Zentrierung oder Merkmalsskalierung eine Hauptkomponentenanalyse?
- Wie geht man ein Problem des maschinellen Lernens mit einer großen Anzahl von Funktionen an?
- Was sind einige gängige Ansätze für den Umgang mit fehlenden Daten?
- Was ist der Unterschied zwischen Filter-, Wrapper- und eingebetteten Methoden zur Funktionsauswahl?
- Sollte der Datenvorbereitungs-/Vorverarbeitungsschritt als Teil des Feature-Engineerings betrachtet werden? Warum oder warum nicht?
- Wird die Merkmalsdarstellung einer Worttasche für die Textklassifizierung als spärliche Matrix betrachtet?
Naiver Bayes
- Warum ist der Naive Bayes-Klassifikator naiv?
- Was ist die Entscheidungsgrenze für Naive Bayes?
- Kann ich Naive-Bayes-Klassifikatoren für gemischte Variablentypen verwenden?
- Ist es möglich, in Naive Bayes verschiedene Variablentypen zu mischen, beispielsweise binäre und fortlaufende Funktionen?
Andere
- Was ist die euklidische Distanz im Hinblick auf maschinelles Lernen?
- Wann sollte man den Median im Gegensatz zum Mittelwert oder Durchschnitt verwenden?
Programmiersprachen und Bibliotheken für Data Science und maschinelles Lernen
- Wird R heute in der Datenwissenschaft häufig verwendet?
- Was ist der Hauptunterschied zwischen TensorFlow und scikit-learn?
Fragen zum Buch
- Kann ich Absätze und Bilder aus dem Buch in Präsentationen oder meinem Blog verwenden?
- Wie unterscheidet sich das von anderen Büchern über maschinelles Lernen?
- Welche Python-Version wurde in den Codebeispielen verwendet?
- Welche Technologien und Bibliotheken werden verwendet?
- Welche Buchversion/welches Format würden Sie empfehlen?
- Warum haben Sie sich für Python für maschinelles Lernen entschieden?
- Warum verwenden Sie in den Codebeispielen so viele führende und nachgestellte Unterstriche?
- Welchen Zweck haben die
return self
Redewendungen in Ihren Codebeispielen? - Gibt es Voraussetzungen und empfohlene Vorlektüren?
- Wie kann ich SVM auf kategoriale Daten anwenden?
Kontakt
Gerne beantworte ich Fragen! Schreiben Sie mir einfach eine E-Mail oder stellen Sie die Frage in der E-Mail-Liste von Google Groups.
Wenn Sie daran interessiert sind, in Kontakt zu bleiben, habe ich einen recht lebhaften Twitter-Stream (@rasbt) rund um Datenwissenschaft und maschinelles Lernen. Außerdem führe ich einen Blog, in dem ich all die Dinge poste, die mich besonders begeistern.