Grundlæggende Lineær Algebra med NumPy
Lineær algebra er en grundlæggende gren af matematik, der spiller en afgørende rolle inden for forskellige områder, herunder maskinlæring, dyb læring og dataanalyse.
Vektorer og Matriser
I lineær algebra er en vektor et ordnet sæt af værdier. 1D NumPy arrays kan effektivt repræsentere vektorer. En matrix er et todimensionelt array af tal, som kan repræsenteres af et 2D array i NumPy.
Vi har allerede dækket vektor- og matrixaddition og -subtraktion samt skalar multiplikation i kapitlet "Grundlæggende Matematiske Operationer". Her vil vi fokusere på andre operationer.
Transponering
Transponering er en operation, der vender en matrix over dens diagonal. Med andre ord konverterer den matrixens rækker til kolonner og kolonnerne til rækker.
Du kan transponere en matrix ved at bruge .T
attributten af en 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)
Prikprodukt
Prikproduktet er måske den mest almindeligt anvendte lineære algebraoperation i maskin- og dyb læring. Prikproduktet af to vektorer (som skal have et lige antal elementer) er summen af deres elementvise produkter. Resultatet er en skalar:
Matrixmultiplikation
Matrixmultiplikation er kun defineret, hvis antallet af kolonner i den første matrix er lig med antallet af rækker i den anden matrix. Den resulterende matrix vil have det samme antal rækker som den første matrix og det samme antal kolonner som den anden matrix.
Som du kan se, er hvert element i den resulterende matrix prikproduktet af to vektorer. Rækkenummeret for elementet svarer til nummeret på rækkevektoren i den første matrix, og kolonnenummeret svarer til nummeret på kolonnevektoren i den anden matrix.
Antallet af kolonner i den første matrix skal være lig med antallet af rækker i den anden matrix, da prikproduktet kræver, at de to vektorer har det samme antal elementer.
Prikprodukt og Matrixmultiplikation i NumPy
NumPy tilbyder dot()
funktionen til både prikprodukt og matrixmultiplikation. Denne funktion tager to arrays som sine argumenter.
Du kan dog også bruge @
operatoren mellem to arrays for at opnå de samme resultater.
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)
Hvis det højre argument i matrixmultiplikation er en vektor (1D array), behandler NumPy det som en matrix, hvor den sidste dimension er 1. For eksempel, når man multiplicerer en 6x4
matrix med en vektor med 4
elementer, betragtes vektoren som en 4x1
matrix.
Hvis det venstre argument i matrixmultiplikation er en vektor, behandler NumPy det som en matrix, hvor den første dimension er 1. For eksempel, når man multiplicerer en vektor med 4
elementer med en 4x6
matrix, betragtes vektoren som en 1x4
matrix.
Billedet nedenfor viser strukturen af exam_scores
og coefficients
arrays brugt i opgaven:
Swipe to start coding
Du arbejder med exam_scores
arrayet, som indeholder simulerede eksamensresultater for tre studerende (hver række repræsenterer en studerende) på tværs af tre fag (hver kolonne repræsenterer et fag).
-
Multiplicer resultaterne af hver fag eksamen med den respektive koefficient.
-
Tilføj de resulterende scores for hver studerende for at beregne deres endelige score.
-
Beregn prikproduktet mellem
exam_scores
ogcoefficients
.
Dette vil give dig de endelige scores for alle studerende baseret på de vægtede bidrag fra deres fag scores.
Løsning
Tak for dine kommentarer!