Peruslineaarialgebra NumPy kanssa
Lineaarialgebra on matematiikan perusala, joka on keskeisessä roolissa monilla aloilla, kuten koneoppimisessa, syväoppimisessa ja data-analyysissä.
Vektorit ja Matriisit
Lineaarialgebrassa vektori on järjestetty joukko arvoja. 1D NumPy-taulukot voivat tehokkaasti edustaa vektoreita. Matriisi on kaksiulotteinen lukutaulukko, joka voidaan esittää 2D-taulukkona NumPyssa.
Olemme jo käsitelleet vektorin ja matriisin yhteen- ja vähennyslaskua sekä skalaarikertolaskua "Perusmatemaattiset operaatiot" -luvussa. Tässä keskitymme muihin operaatioihin.
Transponointi
Transponointi on operaatio, joka kääntää matriisin sen diagonaalin yli. Toisin sanoen, se muuntaa matriisin rivit sarakkeiksi ja sarakkeet riveiksi.
Voit transponoida matriisin käyttämällä NumPy-taulukon .T
-attribuuttia:
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
Pistetulo
Pistetulo on ehkä yleisimmin käytetty lineaarialgebran operaatio kone- ja syväoppimisessa. Kahden vektorin (joilla on oltava yhtä monta alkiota) pistetulo on niiden alkiokohtaisten tulojen summa. Tuloksena on skalaariluku:
Matriisien kertolasku
Matriisien kertolasku on määritelty vain, jos ensimmäisen matriisin sarakkeiden lukumäärä on yhtä suuri kuin toisen matriisin rivien lukumäärä. Tuloksena oleva matriisi sisältää yhtä monta riviä kuin ensimmäinen matriisi ja yhtä monta saraketta kuin toinen matriisi.
Kuten näet, jokainen tuloksena olevan matriisin elementti on kahden vektorin pistetulo. Elementin rivinumero vastaa ensimmäisen matriisin rivivektorin numeroa, ja sarakenumero vastaa toisen matriisin sarakevektorin numeroa.
Ensimmäisen matriisin sarakkeiden lukumäärän on oltava sama kuin toisen matriisin rivien lukumäärä, koska pistetulo vaatii, että kahdella vektorilla on sama määrä elementtejä.
Pistetulo ja matriisikertolasku NumPy:ssä
NumPy tarjoaa dot()
-funktion sekä pistetulolle että matriisikertolaskulle. Tämä funktio ottaa kaksi taulukkoa argumentteinaan.
Voit kuitenkin myös käyttää @
operaattoria kahden taulukon välillä saavuttaaksesi samat tulokset.
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)
Jos matriisikertolaskun oikea argumentti on vektori (1D-taulukko), NumPy käsittelee sitä matriisina, jossa viimeinen ulottuvuus on 1. Esimerkiksi, kun kerrotaan 6x4
matriisi vektorilla, jossa on 4
elementtiä, vektoria pidetään 4x1
matriisina.
Jos matriisikertolaskun vasen argumentti on vektori, NumPy käsittelee sitä matriisina, jossa ensimmäinen ulottuvuus on 1. Esimerkiksi, kun kerrotaan vektori, jossa on 4
elementtiä, 4x6
matriisilla, vektoria käsitellään 1x4
matriisina.
Alla oleva kuva näyttää tehtävässä käytettyjen exam_scores
ja coefficients
taulukoiden rakenteen:
Swipe to start coding
Työskentelet exam_scores
-taulukon kanssa, joka sisältää kolmen opiskelijan simuloidut koetulokset (jokainen rivi edustaa opiskelijaa) kolmessa aineessa (jokainen sarake edustaa ainetta).
-
Kerro jokaisen aineen koetulokset vastaavalla kertoimella.
-
Lisää saadut tulokset jokaiselle opiskelijalle laskeaksesi heidän lopullisen pistemääränsä.
-
Laske pistetulo
exam_scores
jacoefficients
välillä.
Tämä antaa sinulle lopulliset pisteet kaikille opiskelijoille heidän ainepisteidensä painotettujen osuuksien perusteella.
Ratkaisu
Kiitos palautteestasi!