Machine Learning Kochbuch (eBook)
368 Seiten
O'Reilly Verlag
978-3-96010-307-3 (ISBN)
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.
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.
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
- Vectors, Math Is Fun (http://bit.ly/2FB5q1v)
- Euclidean vector, Wikipedia (http://bit.ly/2FtnRoL, https://de.wikipedia.org/wiki/Vektor)
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
- Matrix, Wikipedia (http://bit.ly/2Ftnevp)
- Matrix, Wolfram MathWorld (http://bit.ly/2Fut7IJ)
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
- Sparse matrices, SciPy documentation (http://bit.ly/2HReBZR)
- 101 Ways to Store a Sparse Matrix (http://bit.ly/2HS43cI)
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...
Erscheint lt. Verlag | 22.3.2019 |
---|---|
Übersetzer | Frank Langenau |
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
Schlagworte | AI • Artificial Intelligence • Keras • KI • K-nächste Nachbarn • Künstliche Intelligenz • Neuronale Netze • Scikit Learn • Support Vector Machines |
ISBN-10 | 3-96010-307-7 / 3960103077 |
ISBN-13 | 978-3-96010-307-3 / 9783960103073 |
Haben Sie eine Frage zum Produkt? |
Größe: 3,8 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich