Führen Sie lineare Algebra mit Python durch
Veröffentlicht in · 8 Min. Lektüre · 24. März 2021
--
Etwa 30–40 % des für Data Science und maschinelles Lernen erforderlichen mathematischen Wissens stammen aus der linearen Algebra. Matrixoperationen spielen in der linearen Algebra eine wichtige Rolle. Heute diskutieren wir 10 solcher Matrixoperationen mit Hilfe der leistungsstarken Numpy-Bibliothek. Numpy wird im Allgemeinen verwendet, um numerische Berechnungen in Python durchzuführen. Es verfügt außerdem über spezielle Klassen und Unterpakete für Matrixoperationen. Die Verwendung der Vektorisierung ermöglicht es Numpy, Matrixoperationen effizienter durchzuführen, indem viele for-Schleifen vermieden werden.
Ich werde die Bedeutung, Hintergrundbeschreibung und Codebeispiele für jede in diesem Artikel besprochene Matrixoperation hinzufügen. Im Abschnitt „Wichtige Erkenntnisse“ am Ende dieses Artikels finden Sie einige spezifischere Fakten und eine kurze Zusammenfassung der Matrixoperationen. Lesen Sie daher unbedingt auch diesen Abschnitt.
Ich werde jede Matrixoperation in der folgenden Reihenfolge besprechen. Hier ist die Liste der zehn besten Matrixoperationen, die ich sorgfältig für Sie ausgewählt habe.
- Innenprodukt
- Skalarprodukt
- Transponieren
- Verfolgen
- Rang
- Bestimmend
- Echt umgekehrt
- Pseudo-Invers
- Flatten
- Eigenwerte und Eigenvektoren
Voraussetzungen
Um den vollen Nutzen aus diesem Artikel zu ziehen, sollten Sie die Grundlagen von Numpy und die Methoden zur Array-Erstellung kennen. Wenn Sie nicht über dieses Wissen verfügen, lesen Sie den folgenden Artikel von mir.
- NumPy für Data Science: Teil 1 (NumPy-Grundlagen und Array-Erstellung)
Beginnen wir mit dem ersten, demInnenprodukt.
Innenprodukt
DerInnenproduktNimmt zwei Vektoren gleicher Größe und gibt eine einzelne Zahl (Skalar) zurück. Dies wird berechnet, indem die entsprechenden Elemente in jedem Vektor multipliziert und alle diese Produkte addiert werden. In Numpy werden Vektoren als eindimensionale Numpy-Arrays definiert.
Um das innere Produkt zu erhalten, können wir beides verwendennp.inner()odernp.dot(). Beide liefern die gleichen Ergebnisse. Die Eingaben für diese Funktionen sind zwei Vektoren und sollten die gleiche Größe haben.
Skalarprodukt
DerSkalarproduktist für Matrizen definiert. Es ist die Summe der Produkte der entsprechenden Elemente in den beiden Matrizen. Um das Skalarprodukt zu erhalten, sollte die Anzahl der Spalten in der ersten Matrix gleich der Anzahl der Zeilen in der zweiten Matrix sein.
Es gibt zwei Möglichkeiten, Matrizen in Numpy zu erstellen. Am häufigsten wird Numpy verwendetndarray-Klasse. Hier erstellen wir zweidimensionale Numpy-Arrays (ndarray-Objekte). Die andere Möglichkeit besteht darin, Numpy zu verwendenMatrixklasse. Hier erstellen wir Matrixobjekte.
Das Skalarprodukt von Ndarray- und Matrixobjekten kann mit erhalten werdennp.dot().
Beim Multiplizieren zweier Ndarray-Objekte mit dem*Operator, das Ergebnis ist dasElement-für-Element-Multiplikation. Andererseits, wenn zwei Matrixobjekte mit multipliziert werden*Operator, das Ergebnis ist dasPunktprodukt (Matrixprodukt).was gleichbedeutend mit dem istnp.dot()wie zuvor.
Transponieren
Dertransponiereneiner Matrix wird durch Vertauschen ihrer Zeilen mit ihren Spalten ermittelt. Wir können benutzennp.transpose()Funktion oder NumPyndarray.transpose()Methode bzwndarray.T (eine spezielle Methode, die keine Klammern erfordert), um die Transponierte zu erhalten. Alle liefern die gleiche Ausgabe.
Die Transponierung kann auch auf einen Vektor angewendet werden. Technisch gesehen kann ein eindimensionales Numpy-Array jedoch nicht transponiert werden.
numpy als np importierena = np.array([1, 2, 3])
print("a = ")
drucken(a)
print("\na.T = ")
print(a.T)
Wenn Sie einen Vektor wirklich transponieren möchten, sollte er als zweidimensionales Numpy-Array mit doppelten eckigen Klammern definiert werden.
numpy als np importierena = np.array([[1, 2, 3]])
print("a = ")
drucken(a)
print("\na.T = ")
print(a.T)
Verfolgen
Derverfolgenist die Summe der Diagonalelemente in einer quadratischen Matrix. Es gibt zwei Methoden zur Berechnung der Spur. Wir können einfach das verwendenverfolgen()Methode eines Ndarray-Objekts oder ermitteln Sie zuerst die Diagonalelemente und dann die Summe.
numpy als np importierena = np.array([[2, 2, 1],
[1, 3, 1],
[1, 2, 2]])
print("a = ")
drucken(a)
print("\nTrace:", a.trace())
print("Trace:", sum(a.diagonal()))
Rang
DerRangeiner Matrix sind die Dimensionen des Vektorraums, der von ihren Spalten oder Zeilen aufgespannt (erzeugt) wird. Mit anderen Worten, es kann als die maximale Anzahl linear unabhängiger Spaltenvektoren oder Zeilenvektoren definiert werden.
Der Rang einer Matrix kann mithilfe von ermittelt werdenmatrix_rank()Funktion, die von Numpy kommtLeinsamenPaket.
numpy als np importierena = np.arange(1, 10)
a.shape = (3, 3)
print("a = ")
drucken(a)
rank = np.linalg.matrix_rank(a)
print("\nRang:", Rang)
Bestimmend
Derbestimmendeiner quadratischen Matrix berechnet werdenDie()Funktion, die ebenfalls aus dem Numpy stammtLeinsamenPaket. Wenn die Determinante 0 ist, ist diese Matrix nicht invertierbar. In der Algebra wird sie als singuläre Matrix bezeichnet.
numpy als np importierena = np.array([[2, 2, 1],
[1, 3, 1],
[1, 2, 2]])
print("a = ")
drucken(a)
it = np.linalg.it(a)
print("\nDeterminant:", np.round(det))
Echt umgekehrt
Derwahre Umkehrungeiner quadratischen Matrix kann mit der gefunden werdeninv()Funktion des NumpyLeinsamenPaket. Wenn die Determinante einer quadratischen Matrix nicht 0 ist, hat sie eine echte Umkehrung.
numpy als np importierena = np.array([[2, 2, 1],
[1, 3, 1],
[1, 2, 2]])
print("a = ")
drucken(a)
it = np.linalg.it(a)
print("\nDeterminant:", np.round(det))
inv = np.linalg.inv(a)
print("\nInverse von a = ")
drucken(inv)
Wenn Sie versuchen, die wahre Umkehrung einer singulären Matrix (einer quadratischen Matrix, deren Determinante 0 ist) zu berechnen, erhalten Sie eine Fehlermeldung.
numpy als np importierena = np.array([[2, 8],
[1, 4]])
print("a = ")
drucken(a)
it = np.linalg.it(a)
print("\nDeterminant:", np.round(det))
inv = np.linalg.inv(a)
print("\nInverse von a = ")
drucken(inv)
Pseudo-Invers
Derpseudo (nicht echt) umgekehrtkann sogar für eine singuläre Matrix (eine quadratische Matrix, deren Determinante 0 ist) mit berechnet werdenpinv()Funktion des NumpyLeinsamenPaket.
numpy als np importierena = np.array([[2, 8],
[1, 4]])
print("a = ")
drucken(a)
it = np.linalg.it(a)
print("\nDeterminant:", np.round(det))
pinv = np.linalg.pinv(a)
print("\nPseudo-Inverse von a = ")
drucken(pinv)
Es gibt keinen Unterschied zwischen echter Inversität und Pseudoinversität, wenn eine quadratische Matrix nicht singulär ist (Determinante ist).nicht0).
Flatten
Flattenist eine einfache Methode, um eine Matrix in ein eindimensionales Numpy-Array umzuwandeln. Hierfür können wir die verwendenflatten()Methode eines Ndarray-Objekts.
numpy als np importierena = np.arange(1, 10)
a.shape = (3, 3)
print("a = ")
drucken(a)
print("\nNach dem Reduzieren")
drucken("------------------")
print(a.flatten())
Eigenwerte und Eigenvektoren
LassenABohnen x n-Matrix. Ein Skalarlheißt anEigenwertvonAwenn es einen Vektor ungleich Null gibtXdie folgende Gleichung erfüllen.
Der VektorXheißt dasEigenvektorvonAkorrespondierend zul.
In Numpy können sowohl Eigenwerte als auch Eigenvektoren gleichzeitig berechnet werdeneig()Funktion.
numpy als np importierena = np.array([[2, 2, 1],
[1, 3, 1],
[1, 2, 2]])
print("a = ")
drucken(a)
w, v = np.linalg.eig(a)
print("\nEigenwerte:")
drucken(w)
print("\nEigenvektoren:")
drucken(v)
Die Summe der Eigenwerte (1+5+1=7) ist gleich der Spur (2+3+2=7) derselben Matrix! Das Produkt der Eigenwerte (1x5x1=5) ist gleich der Determinante (5) derselben Matrix!
Eigenwerte und Eigenvektoren sind in der Hauptkomponentenanalyse (PCA) äußerst nützlich. Bei der PCA stellen die Eigenvektoren der Korrelations- oder Kovarianzmatrix die Hauptkomponenten (die Richtungen der maximalen Varianz) dar, und die entsprechenden Eigenwerte stellen das Ausmaß der Variation dar, die durch jede Hauptkomponente erklärt wird. Wenn Sie mehr darüber erfahren möchten, lesen Sie die folgenden von mir verfassten Artikel.
- Hauptkomponentenanalyse (PCA) mit Scikit-learn
- Hauptkomponentenanalyse für Brustkrebsdaten mit R und Python
Dank der Numpy-Bibliothek können Sie Matrixoperationen problemlos mit nur einer oder zwei Codezeilen durchführen. Heute haben wir 10 Matrixoperationen in Numpy durchgeführt. Numpy verfügt über allgemeine Funktionen sowie spezielle Funktionen für die lineare Algebra, zum Beispiel dieLeinsamenDas Paket enthält einige spezielle Funktionen für die lineare Algebra.
In Numpy sind Matrizen und Ndarrays zwei verschiedene Dinge. Der beste Weg, sich mit ihnen vertraut zu machen, besteht darin, selbst mit den Codes zu experimentieren. Es ist immer besser, die Abmessungen von Matrizen und Ndarrays zu überprüfen.
In Scikit-learn-Bibliotheken für maschinelles Lernen funktionieren die meisten der heute besprochenen Matrixoperationen hinter den Kulissen, wenn wir ein Modell erstellen und anpassen. Zum Beispiel, wenn wir Scikit-learn verwendenPCA()Funktion werden die Eigenwerte und Eigenvektoren im Hintergrund berechnet. Scikit-learn und viele andere Bibliotheken wie Pandas, Seaborn und Matplotlib wurden auf Numpy aufgebaut. Numpy ist also eine leistungsstarke Python-Bibliothek.
Wir können auch einige Matrixoperationen kombinieren, um komplexe Berechnungen durchzuführen. Wenn Sie beispielsweise drei Matrizen namens A, B und C in dieser Reihenfolge multiplizieren möchten, können wir verwendennp.dot(np.dot(A, B), C). Die Maße von A, B und C sollten entsprechend angepasst werden.
Danke fürs Lesen!
Dieses Tutorial wurde entworfen und erstellt vonRukshan Pramoditha,der Autor vonData Science 365-Blog.
Lesen Sie meine anderen Artikel unterhttps://rukshanpramoditha.medium.com
24.03.2021