Machine Learning – kurz & gut. Oliver Zeigermann
Чтение книги онлайн.
Читать онлайн книгу Machine Learning – kurz & gut - Oliver Zeigermann страница 5
Abbildung 1-5: Verteilung von Verspätungen als Google-Sheets-Diagramm
Auch wenn diese automatisch erzeugte Grafik noch einige Punkte zu wünschen übrig lässt, sehen wir sofort, dass die meisten Verspätungen (über 300) in dem ersten Balken liegen. Die meisten Flüge aus unseren Daten sind also entweder gar nicht oder nur gering verspätet.
Auch die weitere Verteilung der Verspätungen können wir auf einen Blick erfassen. Eine Häufung am rechten Rand fällt noch auf. Manche Flüge scheinen extrem verspätet. Ohne genauer auf die Interpretation dieser Daten einzugehen: Dies aus einer Menge von rohen Datensätzen herauszulesen, wäre uns vermutlich ohne den Umweg über eine – eventuell von Hand gezeichnete – Grafik nicht möglich gewesen.
Aus diesem Grund werden wir immer wieder Visualisierungen unserer Daten mit Python erzeugen und auch in dieses Buch einbinden. Wie das geht, lernst du Schritt für Schritt in jedem Kapitel ein wenig mehr.
KAPITEL 2
Quick-Start
In diesem Buch werden wir das auf Python basierende Framework Scikit-Learn (http://scikit-learn.org) verwenden. Oft wird auch nur der abgekürzte Name Sklearn genutzt.
Anhand eines kompletten und durchgängigen Beispiels kannst du dich hier schon einmal mit dem Vorgehen beim Machine Learning vertraut machen.
Unser erstes Python-Notebook
Damit du wirklich lauffähigen Code hast, aber keine Installationsarie durchlaufen musst, haben wir für dich ein sogenanntes Notebook erstellt. Das Notebook erfordert nur einen Browser für seine Darstellung. Der tatsächliche Code wird auf einem Server, auf dem auch sämtliche Software installiert ist, ausgeführt.
Für jedes Kapitel haben wir ein Notebook vorbereitet. Diese sind unter der URL https://github.com/DJCordhose/buch-machine-learning-notebooks (https://bit.ly/ml-kug) öffentlich erreichbar.
Dort kannst du dir das Notebook in der Vorschau inklusive aller Anmerkungen und Ergebnisse ansehen. Du kannst es aber auch auf deinen eigenen Computer herunterladen oder es direkt ohne Installation über die dort vorbereiteten Links auf Google Colab laufen lassen. Dieses Kapitel ist unter dem Namen kap2.ipynb erreichbar.
Notebooks
Gerade im Bereich Machine Learning führen wir oft interaktiv eine Reihe von Codeschnipseln aus, um z.B. einen Datensatz besser zu verstehen oder schnell eine andere Lernstrategie auszuprobieren. Sogenannte Notebooks erlauben uns genau das zusammen mit der Möglichkeit, so ein Notebook auch leicht teilen zu können und damit andere an unseren Ergebnissen partizipieren zu lassen.
In einem Notebook kannst du Texte und Grafiken mit Codeschnipseln mischen. Das Besondere dabei ist, dass diese Codeschnipsel wirklich ausführbar sind. Dabei wird der Code nicht notwendigerweise auf dem Rechner ausgeführt, auf dem das Ergebnis im Browser angezeigt wird. In unserem Beispiel hier wird der Code auf einem Rechner von Google ausgeführt, auf dem auch sämtliche Software installiert ist. Die Ausgabe erfolgt aber in dem Browser auf deinem Rechner, auf dem außer dem Browser nichts weiter installiert sein muss.
Im einfachsten Fall kannst du dir so ein Notebook einfach nur ansehen, ohne es überhaupt auszuführen. Das geht, weil so ein Notebook auch jedes Ergebnis, inklusive Bildern, eines Codeschnipsels speichert.
Mehr Informationen zu Notebooks findest du unter http://jupyter.org/.
Unser Beispiel: Irisblüten
Als Beispiel nehmen wir den Irisdatensatz, der dir im Buch immer wieder begegnen wird (siehe auch den Kasten auf der nächsten Seite). Es geht darum, anhand von vier Eigenschaften der Irisblüten (Features) drei unterschiedliche Irisarten voneinander zu unterscheiden. Features sind die zu einem Datensatz gehörigen Eingaben, Labels sind die zugehörigen Ausgaben. Diese Ausgaben sind in unserem Fall die Zahlen 0 bis 2 für die unterschiedlichen Irisarten. Man unterscheidet die Arten »Iris setosa« (0), »Iris virginica« (1) und »Iris versicolor« (2). Unser Beispiel ist dabei ein Klassifikationsproblem. Anhand der Features wollen wir das zugehörige Label erschließen. Da wir dazu das System mit Datensätzen trainieren, haben wir es mit Supervised Learning zu tun.
Dieser Irisdatensatz wird sehr gut verstanden und für viele Beispiele verwendet. Daher gibt es diverse Ressourcen dafür, und er ist sogar direkt in Scikit-Learn als Beispieldatensatz verfügbar, ohne dass du ihn dir von irgendwo besorgen müsstest. Wie erwähnt, ist Scikit-Learn eine zentrale Python-Bibliothek für Machine Learning, die wir über das ganze Buch hinweg einsetzen werden.
Ursprung des Irisdatensatzes
Der Irisdatensatz wurde von dem Botaniker Edgar Anderson (https://en.wikipedia.org/wiki/Edgar_Anderson) zusammengestellt. Bekanntheit erlangte er über die Verwendung durch den Statistiker Ronald Fisher (https://en.wikipedia.org/wiki/Ronald_Fisher). Dieser nutzte den Datensatz in einem Artikel eines Magazin zur Eugenik als Beispiel für statistische Methoden der Klassifikation. Wir distanzieren uns von Fishers Ansichten (https://en.wikipedia.org/wiki/Ronald_Fisher#Views_on_race) über Existenz und unterschiedliche mentale Fähigkeiten von menschlichen Rassen und generell von der Thematik der Eugenik.
Im ersten Schritt unseres Notebooks nutzen wir nun den Beispieldatensatz direkt aus Scikit-Learn und haben dann die kompletten Daten in der Variablen iris. Es ist bei Scikit-Learn üblich, die Features mit einem großen X und die Labels mit einem kleinen y zu bezeichnen. Der Unterschied in der Groß-/Kleinschreibung soll andeuten, dass y nur ein einfacher Vektor mit der Art der Iris ist, also 0, 1 oder 2. X hat hingegen zwei Dimensionen, da es für jeden Datensatz vier Features gibt:
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
Für jede der drei Arten gibt es jeweils 50 Beispiele. In jedem Beispiel ist zusammen mit der Irisart die Länge und Breite sowohl des Kelchblatts (Sepalum) als auch des Kronblatts (Petalum) erfasst. Das Kronblatt sind die bunten Blätter, die wir typischerweise als Blüte wahrnehmen. Das Kelchblatt ist meist grün wie der Stängel der Pflanze und schützt die Blüte im Knospenzustand. Bei einer blühenden Iris geht das Kelchblatt im Gegensatz zum Kronblatt ziemlich unter. Mehr dazu gibt es auf Wikipedia unter https://de.wikipedia.org/wiki/Portal:Statistik/Datensaetze#Iris.
Für