Python: Vektoren, Matrizen und Arrays mit NumPy
In dieser Lektion werden wir uns einige nette Tipps und Tricks ansehen, um mit Vektoren, Matrizen und Arrays mit der NumPy-Bibliothek in Python zu spielen. Diese Lektion ist ein sehr guter Ausgangspunkt, wenn Sie in die Datenwissenschaft einsteigen und einen einführenden mathematischen Überblick über diese Komponenten benötigen und wie wir mit NumPy im Code damit spielen können.Mit der NumPy-Bibliothek können wir verschiedene Operationen ausführen, die an Datenstrukturen ausgeführt werden müssen, die häufig im maschinellen Lernen und in der Datenwissenschaft verwendet werden, wie Vektoren, Matrizen und Arrays. Wir werden nur die häufigsten Operationen mit NumPy zeigen, die in vielen Pipelines für maschinelles Lernen verwendet werden. Schließlich beachten Sie bitte, dass NumPy nur eine Möglichkeit ist, die Operationen auszuführen, daher stehen die mathematischen Operationen, die wir zeigen, im Mittelpunkt dieser Lektion und nicht das NumPy-Paket selbst. Lass uns anfangen.
- Was ist ein Vektor?
- Erstellen einer Matrix
- Verwenden einer spärlichen Matrix
- Anwenden von Operationen auf alle Vektorelemente
- Mittelwert, Varianz und Standardabweichung
- Transponieren einer Matrix
- Abflachen einer Matrix
- Berechnung von Eigenwerten und Eigenvektoren
- Punktprodukte von Vektoren
- Hinzufügen, Subtrahieren und Multiplizieren von Matrizen
- Fazit
Was ist ein Vektor?
Laut Google ist ein Vektor eine Größe, die sowohl Richtung als auch Größe hat, insbesondere als Bestimmung der Position eines Punktes im Raum relativ zu einem anderen.
Vektoren sind beim maschinellen Lernen sehr wichtig, da sie nicht nur die Größe, sondern auch die Richtung der Merkmale beschreiben. Wir können einen Vektor in NumPy mit folgendem Code-Snippet erstellen:
row_vector = np .array()
print(row_vector)
Im obigen Codeausschnitt haben wir einen Zeilenvektor erstellt. Wir können auch einen Spaltenvektor erstellen als:
col_vector = np .array(,,])
print(col_vector)
Erstellen einer Matrix
Eine Matrix kann einfach als zweidimensionales Array verstanden werden. Wir können eine Matrix mit NumPy erstellen, indem wir ein mehrdimensionales Array erstellen:
print(matrix)
Obwohl Matrix dem mehrdimensionalen Array genau ähnlich ist, wird die Matrix-Datenstruktur aus zwei Gründen nicht empfohlen:
- Das Array ist der Standard, wenn es um das NumPy-Paket geht
- Die meisten Operationen mit NumPy geben Arrays und keine Matrix zurück
Verwenden einer spärlichen Matrix
Zur Erinnerung, eine spärliche Matrix ist diejenige, in der die meisten Elemente Null sind. Ein häufiges Szenario in der Datenverarbeitung und im maschinellen Lernen ist die Verarbeitung von Matrizen, in denen die meisten Elemente Null sind. Stellen Sie sich beispielsweise eine Matrix vor, deren Zeilen jedes Video auf Youtube beschreiben und deren Spalten jeden registrierten Benutzer darstellen. Jeder Wert gibt an, ob der Benutzer ein Video angesehen hat oder nicht. Natürlich sind die meisten Werte in dieser Matrix Null. Der Vorteil einer Sparse Matrix besteht darin, dass die Werte, die Null sind, nicht gespeichert werden. Dies führt zu einem enormen rechnerischen Vorteil und einer Speicheroptimierung.
Lassen Sie uns hier eine Spark-Matrix erstellen:
Um zu verstehen, wie der Code funktioniert, werden wir uns die Ausgabe hier ansehen:
Im obigen Code haben wir eine NumPy-Funktion verwendet, um eine komprimierte Sparse-Zeilenmatrix zu erstellen, in der Elemente ungleich Null mithilfe der nullbasierten Indizes dargestellt werden. Es gibt verschiedene Arten von spärlicher Matrix, wie:
- Komprimierte spärliche Spalte
- Liste der Listen
- Wörterbuch der Schlüssel
Wir werden hier nicht in andere spärliche Matrizen eintauchen, wissen aber, dass jede ihrer Verwendungen spezifisch ist und niemand als ‚am besten‘ bezeichnet werden kann.
Anwenden von Operationen auf alle Vektorelemente
Es ist ein häufiges Szenario, wenn wir eine gemeinsame Operation auf mehrere Vektorelemente anwenden müssen. Dies kann durch Definieren eines Lambda und anschließende Vektorisierung erfolgen. Sehen wir uns ein Code-Snippet für dasselbe an:
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5(matrix)
Um zu verstehen, wie der Code funktioniert, werden wir uns die Ausgabe hier ansehen:
Im obigen Code-Snippet haben wir die Funktion vectorize verwendet, die Teil der NumPy-Bibliothek ist, um eine einfache Lambda-Definition in eine Funktion umzuwandeln, die jedes Element der Matrix verarbeiten kann der Vektor. Es ist wichtig zu beachten, dass vectorize nur eine Schleife über die Elemente ist und keinen Einfluss auf die Leistung des Programms hat. NumPy erlaubt auch Broadcasting, was bedeutet, dass wir anstelle des obigen komplexen Codes einfach Folgendes hätten tun können:
Und das Ergebnis wäre genau das gleiche gewesen. Ich wollte zuerst den komplexen Teil zeigen, sonst hättest du den Abschnitt übersprungen!
Mittelwert, Varianz und Standardabweichung
Mit NumPy ist es einfach, Operationen im Zusammenhang mit deskriptiven Statistiken zu Vektoren durchzuführen. Mittelwert eines Vektors kann berechnet werden als:
Varianz eines Vektors kann berechnet werden als:
Die Standardabweichung eines Vektors kann wie folgt berechnet werden:
Die Ausgabe der obigen Befehle auf der gegebenen Matrix wird hier gegeben:
Transponieren einer Matrix
Transponieren ist eine sehr häufige Operation, von der Sie hören werden, wenn Sie von Matrizen umgeben sind. Transponieren ist nur eine Möglichkeit, Spalten- und Zeilenwerte einer Matrix auszutauschen. Bitte beachten Sie, dass ein Vektor nicht transponiert werden kann, da ein Vektor nur eine Sammlung von Werten ist, ohne dass diese Werte in Zeilen und Spalten kategorisiert werden. Bitte beachten Sie, dass das Konvertieren eines Zeilenvektors in einen Spaltenvektor keine Transponierung ist (basierend auf den Definitionen der linearen Algebra, die außerhalb des Umfangs dieser Lektion liegen).
Im Moment werden wir Frieden finden, indem wir einfach eine Matrix transponieren. Es ist sehr einfach, mit NumPy auf die Transponierung einer Matrix zuzugreifen:
Die Ausgabe des obigen Befehls für die angegebene Matrix ist hier angegeben:
Dieselbe Operation kann für einen Zeilenvektor ausgeführt werden, um ihn in einen Spaltenvektor umzuwandeln.
Abflachen einer Matrix
Wir können eine Matrix in ein eindimensionales Array umwandeln, wenn wir ihre Elemente linear verarbeiten möchten. Dies kann mit dem folgenden Code-Snippet erfolgen:
Die Ausgabe des obigen Befehls für die angegebene Matrix ist hier angegeben:
Beachten Sie, dass die Flatten-Matrix ein eindimensionales Array ist, das einfach linear ist.
Berechnung von Eigenwerten und Eigenvektoren
Eigenvektoren werden sehr häufig in Paketen für maschinelles Lernen verwendet. Wenn also eine lineare Transformationsfunktion als Matrix dargestellt wird, sind X, Eigenvektoren die Vektoren, die sich nur im Maßstab des Vektors ändern, nicht jedoch in seiner Richtung. Wir können sagen, dass:
Hier ist X die quadratische Matrix und γ enthält die Eigenwerte. Außerdem enthält v die Eigenvektoren. Mit NumPy ist es einfach, Eigenwerte und Eigenvektoren zu berechnen. Hier ist das Code-Snippet, in dem wir dasselbe demonstrieren:
Die Ausgabe des obigen Befehls auf der gegebenen Matrix ist hier angegeben:
Punktprodukte von Vektoren
Punktprodukte von Vektoren ist eine Möglichkeit, 2 Vektoren zu multiplizieren. Es sagt Ihnen, wie viel der Vektoren in der gleichen Richtung sind, im Gegensatz zu dem Kreuzprodukt, das Ihnen das Gegenteil sagt, wie wenig die Vektoren in der gleichen Richtung sind (orthogonal genannt). Wir können das Punktprodukt zweier Vektoren berechnen, wie im Codeausschnitt hier angegeben:
b = np.array()
np.dot(a, b)
Die Ausgabe des obigen Befehls für die angegebenen Arrays ist hier angegeben:
Hinzufügen, Subtrahieren und Multiplizieren von Matrizen
Das Hinzufügen und Subtrahieren mehrerer Matrizen ist eine recht einfache Operation in Matrizen. Es gibt zwei Möglichkeiten, dies zu tun. Schauen wir uns das Code-Snippet an, um diese Vorgänge auszuführen. Um dies einfach zu halten, verwenden wir dieselbe Matrix zweimal:
Als nächstes können zwei Matrizen subtrahiert werden als:
Die Ausgabe des obigen Befehls für die angegebene Matrix erfolgt hier:
Wie erwartet wird jedes der Elemente in der Matrix mit dem entsprechenden Element addiert / subtrahiert. Das Multiplizieren einer Matrix ähnelt dem Finden des Punktprodukts wie zuvor:
Der obige Code findet den wahren Multiplikationswert von zwei Matrizen, gegeben als:
Die Ausgabe des obigen Befehls auf der gegebenen Matrix ist hier angegeben:
Fazit
In dieser Lektion haben wir viele mathematische Operationen im Zusammenhang mit Vektoren, Matrizen und Arrays durchlaufen, die häufig in der Datenverarbeitung, beschreibenden Statistik und Datenwissenschaft verwendet werden. Dies war eine kurze Lektion, die nur die häufigsten und wichtigsten Abschnitte der Vielzahl von Konzepten abdeckte, aber diese Operationen sollten eine sehr gute Vorstellung davon geben, was alle Operationen im Umgang mit diesen Datenstrukturen ausführen können.
Bitte teilen Sie Ihr Feedback frei über die Lektion auf Twitter mit @linuxhint und @sbmaggarwal (das bin ich!).