AI-United » Allgemein » Ein wesentlicher Leitfaden für Numpy für maschinelles Lernen in Python

Ein wesentlicher Leitfaden für Numpy für maschinelles Lernen in Python

Die unverzichtbare Bibliothek für maschinelles Lernen!

Ein wesentlicher Leitfaden für Numpy für maschinelles Lernen in Python


Gründe, warum dies für Sie nützlich ist?

Die meisten von uns neigen dazu (wir meinen diejenigen, die bereits geschafft haben, die ML-Algorithmen zu implementieren), verschiedene Bibliotheksfunktionen zu vergessen, und schreiben schließlich Code für schon existierende Funktionen unter Verwendung der reinen Logik. Meistens bedeutet dies eine Zeit- und Energieverschwendung. In solchen Fällen ist es erforderlich, dass Sie sich über die Nuancen der effektiv verwendeten Bibliothek klarwerden. Als eine der wichtigsten Bibliotheken für maschinelles Lernen erfordert Numpy das Schreiben eines separaten Artikels.  

Für wen ist dieser Artikel geschrieben?

Wenn Sie schon festgestellt haben, dass das Verständnis von Numpy ein Ausgangspunkt für die Datenvorverarbeitung und die anschließende Implementierung von ML-Algorithmen ist, dann schließen Sie sich denjenigen an, die in allernächster Zukunft maschinelles Lernen erlernen möchten oder gerade erst begonnen haben und mehr praktische Erfahrung beim Lernen von Numpy für ML sammeln möchten.

Dieser Artikel ist hauptsächlich als eine schnelle Auffrischung für Numpy für diejenigen Leser gedacht, die bereits gewisse Erfahrungen der Arbeit mit der Bibliothek gesammelt haben und jetzt eine schnelle kurze Zusammenfassung brauchen. 

Sie wollen nicht mehr warten? Dann fangen wir an!

Als erstes geben wir eine klare Definition des Begriffes Numpy. Dies ist eine Programmbibliothek für die Programmiersprache Python, die eine einfache Handhabung von großen mehrdimensionalen Arrays und Matrizen ermöglicht. Außerdem bietet sie eine große Sammlung effizient implementierter Funktionen für das Arbeiten mit diesen Arrays an.

Die weitere Besonderheit von Numpy besteht darin, dass sie als Speicherbasis des maschinellen Lernens dient. Das Ziel dieses Artikels ist es aber, nur die am häufigsten verwendeten Numpy-Funktionen zu betrachten.

1) Erstellen eines Vektors

Nachfolgend wird Numpy zum Erstellen eines 1-D-Array verwendet, das dann als Vektor bezeichnet wird.

#Load Library	
import numpy as np

#Create a vector as a Row
vector_row = np.array([1,2,3])

#Create vector as a Column
vector_column = np.array([[1],[2],[3]])

2) Erstellen einer Matrix 

Eine 2-D-Array wird in Numpy erstellt, die Matrix genannt wird. Es besteht aus 2 Zeilen und 3 Spalten.

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6]])
print(matrix)

3) Erstellen einer dünnbesetzten Matrix

Die Daten mit sehr wenigen Nicht-Null-Werten sollten möglichst effektiver dargestellt werden.

Eine häufige Situation beim maschinellen Lernen ist das Vorhandensein einer sehr großen Datenmenge, in der die meisten Elemente Nullen sind. Betrachten wir als Beispiel folgende Matrix: In Spalten befinden sich alle Produkte bei Amazon und in Zeilen wird angegeben, ob ein bestimmter Benutzer diesen Artikel früher schon gekauft hat oder nicht.  Es ist sehr leicht zu vermuten, dass es viele Waren geben wird, die bis jetzt noch nicht einmal gekauft wurden, und dementsprechend eine große Mehrheit der Produkte gleich Null sein wird.

Da dünnbesetzte Matrizen nur Nicht-Null-Einträge speichern und voraussetzen, dass alle anderen Werte Null sind, wird es bei der Berechnung bedeutsam eingespart. 

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[0,0],[0,1],[3,0]])
print(matrix)

#Create Compressed Sparse Row(CSR) matrix
matrix_sparse = sparse.csr_matrix(matrix)
print(matrix_sparse)

4) Auswahl der Elemente 

Um ein oder mehrere Elemente in einem Vektor oder einer Matrix auszuwählen, werden folgende Schritte gemacht: 

#Load Library
import numpy as np

#Create a vector as a Row
vector_row = np.array([ 1,2,3,4,5,6 ])

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Select 3rd element of Vector
print(vector_row[2])

#Select 2nd row 2nd column
print(matrix[1,1])

#Select all elements of a vector
print(vector_row[:])

#Select everything up to and including the 3rd element
print(vector_row[:3])

#Select the everything after the 3rd element
print(vector_row[3:])

#Select the last element
print(vector[-1])

#Select the first 2 rows and all the columns of the matrix
print(matrix[:2,:])

#Select all rows and the 2nd column of the matrix
print(matrix[:,1:2])

5) Beschreiben einer Matrix

Wenn man über die Formgröße und Abmessungen einer Matrix erfahren will, gibt man folgendes an:

import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])

#View the Number of Rows and Columns
print(matrix.shape)

#View the number of elements (rows*columns)
print(matrix.size)

#View the number of Dimensions(2 in this case)
print(matrix.ndim)

6) Anwenden der Funktion auf Elemente 

Eine Funktion wird auf mehrere Elemente in einem Array angewendet.

Mithilfe einer Vectorize-Klasse von Numpy wird eine Funktion in eine Funktion umwandelt, die auf mehrere Elemente in einem Array oder in einem Arrayteil angewendet werden kann.

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Create a function that adds 100 to something
add_100 =lambda i: i+100

#Convert it into a vectorized function
vectorized_add_100= np.vectorize(add_100)

#Apply function to all elements in matrix
print(vectorized_add_100(matrix))

7) Finden der maximalen und minimalen Werte

Nachfolgend ist ein Beispiel angeführt, wie die Max- und Min-Funktionen von Numpy verwendet werden:

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Return the max element
print(np.max(matrix))

#Return the min element
print(np.min(matrix))

#To find the max element in each column
print(np.max(matrix,axis=0))

#To find the max element in each row
print(np.max(matrix,axis=1))

8) Berechnung des Durchschnitts, der Varianz und Standardabweichung

Sollten beschreibende Statistiken für ein Array berechnet werden, wird folgendes gemacht:

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Mean
print(np.mean(matrix))

#Standard Dev.
print(np.std(matrix))

#Variance
print(np.var(matrix))

9) Umformen eines Arrays

Wird ein Array umgeformt (d. h. wird die Anzahl der Zeilen und Spalten geändert), indem die Elemente unverändert bleiben, ist folgendes zu machen:

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Reshape
print(matrix.reshape(9,1))

#Here -1 says as many columns as needed and 1 row
print(matrix.reshape(1,-1))

#If we provide only 1 value Reshape would return a 1-d array of that length
print(marix.reshape(9))

#We can also use the Flatten method to convert a matrix to 1-d array
print(matrix.flatten())

10) Transponieren eines Vektors oder einer Matrix

Das Transponieren dient zum Austausch der Zeilen und Spalten einer Matrix.

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Transpose the matrix
print(matrix.T)

11) Finden der Determinante und des Ranges einer Matrix 

Unter einem Rang einer Matrix ist die Anzahl der Abmessungen des Vektorraums gemeint, die entweder von seinen Zeilen oder Spalten umfasst werden.

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Calculate the Determinant
print(np.linalg.det(matrix))

#Calculate the Rank
print(np.linalg.matrix_rank(matrix))

12) Erhalten einer Matrixdiagonale

Das nachfolgende Beispiel zeigt, wie die diagonalen Elemente einer Matrix extrahiert werden:

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Print the Principal diagonal
print(matrix.diagonal())

#Print the diagonal one above the Principal diagonal
print(matrix.diagonal(offset=1))

#Print the diagonal one below Principal diagonal
print(matrix.diagonal(offset=-1))

13) Berechnung der Spur einer Matrix

Als Spur einer Matrix wird die Summe der Hauptdiagonalelemente dieser Matrix bezeichnet.

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Print the Trace
print(matrix.trace())

14) Finden der Eigenwerte und Eigenvektoren 

Wie bekannt sind die Eigenvektoren in Bibliotheken des maschinellen Lernens weit verbreitet. Unter Berücksichtigung der durch die Matrix A dargestellten linearen Transformation ist ein Eigenvektor ein Vektor, dessen Richtung bei Anwendung dieser Transformation nicht verändert wird. Ein Eigenvektor wird also nur skaliert. Der Skalierungsfaktor wird dann als Eigenwert bezeichnet. Formeller kann man dies so darstellen: 

Av=Kv

wo A für eine quadratische Matrix steht, K aus Eigenwerten und v aus Eigenvektoren besteht.

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

# Calculate the Eigenvalues and Eigenvectors of that Matrix
eigenvalues ,eigenvectors=np.linalg.eig(matrix)
print(eigenvalues)
print(eigenvectors)

15) Berechnung der Punktprodukte

#Load Library
import numpy as np

#Create vector-1
vector_1 = np.array([ 1,2,3 ])

#Create vector-2
vector_1 = np.array([ 4,5,6 ])

#Calculate Dot Product
print(np.dot(vector_1,vector_2))

#Alternatively you can use @ to calculate dot products
print(vector_1 @ vector_2)

16) Addieren, Subtrahieren und Multiplizieren von Matrizen

#Load Library
import numpy as np

#Create Matrix-1
matrix_1 = np.array([[1,2,3],[4,5,6],[7,8,9]])

#Create Matrix-2
matrix_2 = np.array([[7,8,9],[4,5,6],[1,2,3]])

#Add the 2 Matrices
print(np.add(matrix_1,matrix_2))

#Subtraction
print(np.subtract(matrix_1,matrix_2))

#Multiplication(Element wise, not Dot Product)
print(matrix_1*matrix_2)

17) Invertieren einer Matrix 

Dies ist notwendig, wenn die Inverse einer Quadratmatrix berechnet werden soll:

#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Calculate its inverse
print(np.linalg.inv(matrix))

18) Erzeugen der Zufallswerte 

Numpy verfügt über eine Vielzahl von Tools zur Erzeugung von Zufallszahlen.

Darüber hinaus macht es manchmal Sinn, die gleichen Zufallszahlen zurückzugeben, wenn man vorhersagbare, reproduzierbare Ergebnisse erhalten will. Dies wird gemacht, indem der „Startwert“ (eine ganze Zahl) des Pseudozufallsgenerators eingestellt wird. Zufällige Prozesse mit demselben Startwert führen immer zum gleichen Ergebnis.

#Load Library
import numpy as np

#Set seed
np.random.seed(1)

#Generate 3 random integers b/w 1 and 10
print(np.random.randint(0,11,3))

#Draw 3 numbers from a normal distribution with mean 1.0 and std 2.0
print(np.random.normal(1.0,2.0,3))

Auf diese Weise sind fast alle Standardfunktionen in Numpy beschrieben, die notwendig sind, um mit dem Erlernen des maschinellen Lernens mit Python anzufangen. Für andere sollte dies eine gute Auffrischung der bereits vorhandenen Kenntnisse in diesem Bereich sein.

Möchten Sie mehr über die Programmbibliothek Numpy und ihre Funktionen erfahren, so können Sie sich an das Team von AI-United.de per Mail oder Q&A wenden.

Quelle

AI-United-Redaktion

Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.