Basis Lineaire Algebra met NumPy
Lineaire algebra is een fundamentele tak van de wiskunde die een cruciale rol speelt in verschillende gebieden, waaronder machine learning, deep learning en data-analyse.
Vectoren en Matrices
In lineaire algebra is een vector een geordende reeks waarden. 1D NumPy-arrays kunnen efficiënt vectoren vertegenwoordigen. Een matrix is een tweedimensionale array van getallen, die kan worden weergegeven door een 2D-array in NumPy.
We hebben al vector- en matrixoptelling en -aftrekking behandeld, evenals scalaire vermenigvuldiging, in het hoofdstuk "Basis Wiskundige Bewerkingen". Hier zullen we ons richten op andere bewerkingen.
Transpositie
Transpositie is een bewerking die een matrix over zijn diagonaal omdraait. Met andere woorden, het zet de rijen van de matrix om in kolommen en de kolommen in rijen.
Je kunt een matrix transponeren met behulp van het .T
attribuut van een NumPy array:
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
Dotproduct
Het dotproduct is misschien wel de meest gebruikte lineaire algebra operatie in machine- en deep learning. Het dotproduct van twee vectoren (die een gelijk aantal elementen moeten hebben) is de som van hun elementgewijze producten. Het resultaat is een scalaire:
Matrixvermenigvuldiging
Matrixvermenigvuldiging is alleen gedefinieerd als het aantal kolommen in de eerste matrix gelijk is aan het aantal rijen in de tweede matrix. De resulterende matrix zal hetzelfde aantal rijen hebben als de eerste matrix en hetzelfde aantal kolommen als de tweede matrix.
Zoals je kunt zien, is elk element van de resulterende matrix het dotproduct van twee vectoren. Het rijnummer van het element komt overeen met het nummer van de rijvector in de eerste matrix, en het kolomnummer komt overeen met het nummer van de kolomvector in de tweede matrix.
Het aantal kolommen in de eerste matrix moet gelijk zijn aan het aantal rijen in de tweede matrix, omdat het dotproduct vereist dat de twee vectoren hetzelfde aantal elementen hebben.
Dotproduct en Matrixvermenigvuldiging in NumPy
NumPy biedt de dot()
functie voor zowel het dotproduct als matrixvermenigvuldiging. Deze functie neemt twee arrays als zijn argumenten.
Je kunt echter ook de @
operator tussen twee arrays gebruiken om dezelfde resultaten te bereiken.
import numpy as np vector_1 = np.array([1, 2, 3]) vector_2 = np.array([4, 5, 6]) # Dot product using the dot() function print(np.dot(vector_1, vector_2)) # Dot product using the @ operator print(vector_1 @ vector_2) matrix_1 = np.array([[1, 2, 3], [4, 5, 6]]) matrix_2 = np.array([[7, 10], [8, 11], [9, 12]]) # Matrix multiplication using the dot() function print(np.dot(matrix_1, matrix_2)) # Matrix multiplication using the @ operator print(matrix_1 @ matrix_2)
Als het rechter argument in matrixvermenigvuldiging een vector (1D-array) is, behandelt NumPy het als een matrix waarbij de laatste dimensie 1 is. Bijvoorbeeld, bij het vermenigvuldigen van een 6x4
matrix met een vector met 4
elementen, wordt de vector beschouwd als een 4x1
matrix.
Als het linker argument in matrixvermenigvuldiging een vector is, behandelt NumPy het als een matrix waarbij de eerste dimensie 1 is. Bijvoorbeeld, bij het vermenigvuldigen van een vector met 4
elementen met een 4x6
matrix, wordt de vector behandeld als een 1x4
matrix.
De onderstaande afbeelding toont de structuur van de exam_scores
en coefficients
arrays die in de taak worden gebruikt:
Swipe to start coding
Je werkt met de exam_scores
array, die gesimuleerde examencijfers van drie studenten bevat (elke rij vertegenwoordigt een student) over drie vakken (elke kolom vertegenwoordigt een vak).
-
Vermenigvuldig de scores van elk vakexamen met de respectieve coëfficiënt.
-
Tel de resulterende scores voor elke student op om hun eindscore te berekenen.
-
Bereken het inwendig product tussen
exam_scores
encoefficients
.
Dit geeft je de eindscores voor alle studenten op basis van de gewogen bijdragen van hun vak scores.
Oplossing
Bedankt voor je feedback!