Sie sind hier
E-Book

Machine Learning Kochbuch

Praktische Lösungen mit Python: von der Vorverarbeitung der Daten bis zum Deep Learning

AutorChris Albon
VerlagO'Reilly Verlag
Erscheinungsjahr2019
Seitenanzahl368 Seiten
ISBN9783960103073
FormatePUB
KopierschutzWasserzeichen
GerätePC/MAC/eReader/Tablet
Preis36,90 EUR
Python-Programmierer finden in diesem Kochbuch nahezu 200 wertvolle und jeweils in sich abgeschlossene Anleitungen zu Aufgabenstellungen aus dem Bereich des Machine Learning, wie sie für die tägliche Arbeit typisch sind - von der Vorverarbeitung der Daten bis zum Deep Learning. Entwickler, die mit Python und seinen Bibliotheken einschließlich Pandas und Scikit-Learn vertraut sind, werden spezifische Probleme erfolgreich bewältigen - wie etwa Daten laden, Text und numerische Daten behandeln, Modelle auswählen, Dimensionalität reduzieren und vieles mehr. Jedes Rezept enthält Code, den Sie kopieren, zum Testen in eine kleine Beispieldatenmenge einfügen und dann anpassen können, um Ihre eigenen Anwendungen zu konstruieren. Darüber hinaus werden alle Lösungen diskutiert und wichtige Zusammenhänge hergestellt. Dieses Kochbuch unterstützt Sie dabei, den Schritt von der Theorie und den Konzepten hinein in die Praxis zu machen. Es liefert das praktische Rüstzeug, das Sie benötigen, um funktionierende Machine-Learning-Anwendungen zu entwickeln. In diesem Kochbuch finden Sie Rezepte für: - Vektoren, Matrizen und Arrays - den Umgang mit numerischen und kategorischen Daten, Texten, Bildern sowie Datum und Uhrzeit - das Reduzieren der Dimensionalität durch Merkmalsextraktion oder Merkmalsauswahl - Modellbewertung und -auswahl - lineare und logistische Regression, Bäume und Wälder und k-nächste Nachbarn - Support Vector Machine (SVM), naive Bayes, Clustering und neuronale Netze - das Speichern und Laden von trainierten Modellen

Chris Albon ist Data Scientist und Politikwissenschaftler mit einem Jahrzehnt Erfahrung in der Anwendung von statistischem Lernen, künstlicher Intelligenz und Software-Engineering in den Bereichen politischer, sozialer und humanitärer Bemühungen - von der Wahlbeobachtung bis zur Katastrophenhilfe. Derzeit ist Chris der Chief Data Scientist bei BRCK, einem kenianischen Start-up-Unternehmen, das ein robustes Netzwerk für Internetnutzer des Frontier-Markts entwickelt.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

KAPITEL 1


Vektoren, Matrizen und Arrays


1.0Einführung


Die Programmbibliothek NumPy bildet die Grundlage des Python-Stapels für maschinelles Lernen (auch als SciPy-Stapel bezeichnet). NumPy erlaubt effiziente Operationen auf Datenstrukturen, die in Projekten des maschinellen Lernens häufig vorkommen: Vektoren, Matrizen und Tensoren. Auch wenn NumPy nicht im Mittelpunkt dieses Buchs steht, werden Sie in den folgenden Kapiteln häufig auf diese Bibliothek stoßen. Dieses Kapitel behandelt die gebräuchlichsten NumPy-Operationen, mit denen Sie es in Workflows des maschinellen Lernens höchstwahrscheinlich zu tun haben werden.

1.1Einen Vektor erzeugen


Problem

Sie müssen einen Vektor erzeugen.

Lösung

Verwenden Sie NumPy, um ein eindimensionales Array anzulegen:

# Bibliothek laden

import numpy as np

# Einen Vektor als Zeile erstellen

vector_row = np.array([1, 2, 3])

# Einen Vektor als Spalte erstellen

vector_column = np.array([[1],

[2],

[3]])

Diskussion

Die Hauptdatenstruktur von NumPy ist das mehrdimensionale Array. Um einen Vektor zu erzeugen, legen wir einfach ein eindimensionales Array an. Vektoren lassen sich genau wie Arrays horizontal (d.h. als Zeilen) oder vertikal (d.h. als Spalten) darstellen.

Siehe auch

1.2Eine Matrix erstellen


Problem

Es muss eine Matrix erstellt werden.

Lösung

Verwenden Sie NumPy, um ein zweidimensionales Array einzurichten:

# Bibliothek laden

import numpy as np

# Eine Matrix erstellen

matrix = np.array([[1, 2],

[1, 2],

[1, 2]])

Diskussion

Eine Matrix können Sie mit einem zweidimensionalen NumPy-Array erstellen. In der angegebenen Lösung enthält die Matrix drei Zeilen und zwei Spalten (eine Spalte mit Einsen und eine Spalte mit Zweien). Die Bibliothek NumPy bringt aber auch eine dedizierte matrix-Datenstruktur mit:

matrix_object = np.mat([[1, 2],

[1, 2],

[1, 2]])

matrix([[1, 2],

[1, 2],

[1, 2]])

Die matrix-Datenstruktur empfiehlt sich allerdings aus zwei Gründen nicht. Erstens stellen Arrays die De-facto-Standarddatenstruktur von NumPy dar, und zweitens gibt die große Mehrheit der NumPy-Operationen Arrays zurück und keine matrix-Objekte.

Siehe auch

1.3Eine dünn besetzte Matrix erzeugen


Problem

Sie möchten Daten mit wenigen Werten ungleich null effizient darstellen.

Lösung

Erstellen Sie eine dünn besetzte Matrix:

# Bibliotheken laden

import numpy as np

from scipy import sparse

# Eine Matrix erstellen

matrix = np.array([[0, 0],

[0, 1],

[3, 0]])

# CSR-Matrix erzeugen

matrix_sparse = sparse.csr_matrix(matrix)

Diskussion

Beim maschinellen Lernen kommt es häufig vor, dass riesige Datenmengen anfallen, in denen aber die meisten Datenelemente den Wert null besitzen. Stellen Sie sich zum Beispiel eine Matrix vor, bei der jeder Spalte ein Netflix-Movie und jeder Zeile ein Benutzer zugeordnet ist. Die Werte der Matrix geben an, wie oft ein Benutzer das jeweilige Movie angesehen hat. Diese Matrix würde aus Zehntausenden von Spalten und Millionen von Zeilen bestehen! Da jedoch die meisten Benutzer nur einen Bruchteil der Filme anschauen, würde die überwiegende Mehrheit der Elemente den Wert null besitzen.

Dünn besetzte Matrizen hingegen speichern nur Elemente ungleich null und nehmen an, dass alle anderen Werte null sind, was zu beträchtlichen Einsparungen an Rechenaufwand führt. In unserer Lösung haben wir ein NumPy-Array mit zwei Werten ungleich null erzeugt und es dann in eine dünn besetzte Matrix konvertiert. Wenn wir die dünn besetzte Matrix anzeigen, ist zu erkennen, dass nur die Werte ungleich null gespeichert werden:

# Dünn besetzte Matrix anzeigen

print(matrix_sparse)

(1, 1) 1

(2, 0) 3

Es gibt verschiedene Arten von dünn besetzten Matrizen, in CSR-Matrizen1 stellen (1, 1) und (2, 0) jedoch die (nullindizierten) Indizes der Nicht-Null-Werte 1 bzw. 3 dar. Zum Beispiel befindet sich das Element 1 in der zweiten Zeile und der zweiten Spalte. Der Vorteil dünn besetzter Matrizen zeigt sich vor allem dann, wenn wir eine wesentlich größere Matrix mit viel mehr null-Elementen erzeugen und dann diese größere Matrix mit unserer ursprünglichen dünn besetzten Matrix vergleichen:

# Größere Matrix erzeugen

matrix_large = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],

[3, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

# CSR-Matrix erzeugen

matrix_large_sparse = sparse.csr_matrix(matrix_large)

# Ursprüngliche dünn besetzte Matrix anzeigen

print(matrix_sparse)

(1, 1) 1

(2, 0) 3

# Die größere dünn besetzte Matrix anzeigen

print(matrix_large_sparse)

(1, 1) 1

(2, 0) 3

Obwohl wir viel mehr null-Elemente in die größere Matrix eingefügt haben, ist ihre Darstellung als dünn besetzte Matrix genau die gleiche wie unsere ursprüngliche dünn besetzte Matrix. Das heißt, dass sich die Größe der dünn besetzten Matrix durch die hinzugefügten null-Elemente nicht geändert hat.

Wie bereits erwähnt, gibt es viele verschiedene Typen von dünn besetzten Matrizen, zum Beispiel CSC-Matrizen (komprimierte Spaltenspeicherung), Liste von Listen und Wörterbuch mit Schlüsseln. Es ginge über den Rahmen dieses Buchs hinaus, die verschiedenen Arten und die Konsequenzen ihrer Anwendung zu erläutern, zumindest aber sei erwähnt, dass es zwar keinen »besten« dünn besetzten Matrixtyp gibt, trotzdem aber wesentliche Unterschiede zwischen ihnen bestehen und wir uns darüber im Klaren sein sollten, wenn wir einen Typ anstelle eines anderen auswählen.

Siehe auch

1.4Elemente auswählen


Problem

In einem Vektor oder einer Matrix sind ein oder mehrere Elemente auszuwählen.

Lösung

Mit Arrays von NumPy lässt sich das leicht bewerkstelligen:

# Bibliothek laden

import numpy as np

# Zeilenvektor erzeugen

vector = np.array([1, 2, 3, 4, 5, 6])

# Matrix erzeugen

matrix = np.array([[1, 2, 3],

[4, 5, 6],

[7, 8, 9]])

# Das dritte Element des Vektors auswählen

vector[2]

3

# Die zweite Zeile und zweite Spalte auswählen

matrix[1,1]

5

Diskussion

Wie die meisten Dinge in Python sind auch NumPy-Arrays nullindiziert, d.h., der Index des ersten Elements ist 0 und nicht 1. Das Paket NumPy bietet eine breite Palette an Methoden, mit denen sich Elemente oder Gruppen von Elementen in Arrays auswählen lassen (d.h. Indizieren und Slicen):

# Alle Elemente eines Vektors auswählen

vector[:]

array([1, 2, 3, 4, 5, 6])

# Alles bis einschließlich des dritten Elements...

Blick ins Buch

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

Demeter-Gartenrundbrief

Demeter-Gartenrundbrief

Einzige Gartenzeitung mit Anleitungen und Erfahrungsberichten zum biologisch-dynamischen Anbau im Hausgarten (Demeter-Anbau). Mit regelmäßigem Arbeitskalender, Aussaat-/Pflanzzeiten, Neuigkeiten ...

die horen

die horen

Zeitschrift für Literatur, Kunst und Kritik."...weil sie mit großer Aufmerksamkeit die internationale Literatur beobachtet und vorstellt; weil sie in der deutschen Literatur nicht nur das Neueste ...

dima

dima

Bau und Einsatz von Werkzeugmaschinen für spangebende und spanlose sowie abtragende und umformende Fertigungsverfahren. dima - die maschine - bietet als Fachzeitschrift die Kommunikationsplattform ...

e-commerce magazin

e-commerce magazin

e-commerce magazin Die Redaktion des e-commerce magazin versteht sich als Mittler zwischen Anbietern und Markt und berichtet unabhängig, kompetent und kritisch über ...

building & automation

building & automation

Das Fachmagazin building & automation bietet dem Elektrohandwerker und Elektroplaner eine umfassende Übersicht über alle Produktneuheiten aus der Gebäudeautomation, der Installationstechnik, dem ...

elektrobörse handel

elektrobörse handel

elektrobörse handel gibt einen facettenreichen Überblick über den Elektrogerätemarkt: Produktneuheiten und -trends, Branchennachrichten, Interviews, Messeberichte uvm.. In den monatlichen ...

Euphorion

Euphorion

EUPHORION wurde 1894 gegründet und widmet sich als „Zeitschrift für Literaturgeschichte“ dem gesamten Fachgebiet der deutschen Philologie. Mindestens ein Heft pro Jahrgang ist für die ...