Datavitenskap

Python-vektorer, matriser og matriser med NumPy

Python-vektorer, matriser og matriser med NumPy
I denne leksjonen vil vi se på noen fine tips og triks for å leke med vektorer, matriser og matriser ved hjelp av NumPy-biblioteket i Python. Denne leksjonen er et veldig bra utgangspunkt hvis du kommer i gang med datavitenskap og trenger litt innledende matematisk oversikt over disse komponentene og hvordan vi kan leke med dem ved hjelp av NumPy i kode.

NumPy-biblioteket lar oss utføre forskjellige operasjoner som må gjøres på datastrukturer som ofte brukes i maskinlæring og datavitenskap, som vektorer, matriser og matriser. Vi viser bare de vanligste operasjonene med NumPy som brukes i mange Machine Learning-rørledninger. Til slutt, vær oppmerksom på at NumPy bare er en måte å utføre operasjonene på, så de matematiske operasjonene vi viser er hovedfokuset i denne leksjonen, og ikke selve NumPy-pakken. La oss komme i gang.

Hva er en vektor?

Ifølge Google er en vektor en mengde som har retning og størrelse, spesielt når det gjelder å bestemme posisjonen til ett punkt i rommet i forhold til et annet.

Vektorer er veldig viktige i maskinlæring da de ikke bare beskriver størrelsen, men også retningen til funksjonene. Vi kan lage en vektor i NumPy med følgende kodebit:

importer nummen som np
radvektor = np.matrise ([1,2,3])
skriv ut (radvektor)

I kodebiten ovenfor opprettet vi en radvektor. Vi kan også lage en kolonnevektor som:

importer nummen som np
col_vector = np.matrise ([[1], [2], [3]])
skriv ut (col_vector)

Å lage en matrise

En matrise kan enkelt forstås som et todimensjonalt array. Vi kan lage en matrise med NumPy ved å lage en flerdimensjonal matrise:

matrise = np.matrise ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
skrive ut (matrise)

Selv om matrise er nøyaktig lik flerdimensjonal matrise, matrisedatastrukturen anbefales ikke på grunn av to grunner:

  1. Matrisen er standarden når det gjelder NumPy-pakken
  2. De fleste av operasjonene med NumPy returnerer matriser og ikke en matrise

Bruke en sparsom matrise

For å minne om, er en sparsom matrise den hvor de fleste elementene er null. Nå er et vanlig scenario i databehandling og maskinlæring å behandle matriser der de fleste elementene er null. Tenk for eksempel på en matrise hvis rader beskriver hver video på Youtube og kolonner representerer hver registrert bruker. Hver verdi representerer om brukeren har sett en video eller ikke. Selvfølgelig vil flertallet av verdiene i denne matrisen være null. De fordel med sparsom matrise er at den ikke lagrer verdiene som er null. Dette resulterer i en enorm beregningsfordel og lagringsoptimalisering også.

La oss lage en gnistmatrise her:

fra scipy import sparsom
original_matrix = np.matrise ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
sparse_matrix = sparsom.csr_matrix (original_matrix)
skriv ut (sparse_matrix)

For å forstå hvordan koden fungerer, vil vi se på utdataene her:

I koden ovenfor brukte vi en NumPy-funksjon til å lage en Komprimert sparsom rad matrise der ikke-null-elementer er representert ved hjelp av de nullbaserte indeksene. Det finnes forskjellige typer sparsom matrise, som:

Vi vil ikke dykke ned i andre sparsomme matriser her, men vet at hver av deres bruk er spesifikk, og ingen kan betegnes som 'best'.

Bruke operasjoner på alle vektorelementer

Det er et vanlig scenario når vi trenger å bruke en felles operasjon på flere vektorelementer. Dette kan gjøres ved å definere en lambda og deretter vektorisere den samme. La oss se noe kodebit for det samme:

matrise = np.array ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vektoriser (mul_5)
vectorized_mul_5 (matrise)

For å forstå hvordan koden fungerer, vil vi se på utdataene her:

I kodebiten ovenfor brukte vi vektoriseringsfunksjon som er en del av NumPy-biblioteket, for å transformere en enkel lambdadefinisjon til en funksjon som kan behandle hvert eneste element i vektoren. Det er viktig å merke seg at vectorize er bare en løkke over elementene og det har ingen innvirkning på gjennomføringen av programmet. NumPy tillater også kringkasting, som betyr at i stedet for den ovennevnte komplekse koden, kunne vi ganske enkelt ha gjort:

matrise * 5

Og resultatet ville blitt nøyaktig det samme. Jeg ønsket å vise den komplekse delen først, ellers hadde du hoppet over seksjonen!

Gjennomsnitt, avvik og standardavvik

Med NumPy er det enkelt å utføre operasjoner relatert til beskrivende statistikk på vektorer. Gjennomsnittet for en vektor kan beregnes som:

np.gjennomsnitt (matrise)

Variansen til en vektor kan beregnes som:

np.var (matrise)

Standardavvik for en vektor kan beregnes som:

np.std (matrise)

Resultatet av de ovennevnte kommandoene på den gitte matrisen er gitt her:

Transponering av en matrise

Transponering er en veldig vanlig operasjon som du vil høre om når du er omgitt av matriser. Transponering er bare en måte å bytte søyle- og radverdier til en matrise. Vær oppmerksom på at a vektor kan ikke transponeres som en vektor er bare en samling verdier uten at disse verdiene blir kategorisert i rader og kolonner. Vær oppmerksom på at konvertering av en radvektor til en kolonnevektor ikke er transponering (basert på definisjonene av lineær algebra, som er utenfor omfanget av denne leksjonen).

Foreløpig vil vi finne fred bare ved å transponere en matrise. Det er veldig enkelt å få tilgang til transponering av en matrise med NumPy:

matrise.T

Resultatet av kommandoen ovenfor på den gitte matrisen er gitt her:

Samme operasjon kan utføres på en radvektor for å konvertere den til en kolonnevektor.

Flating a Matrix

Vi kan konvertere en matrise til en endimensjonal matrise hvis vi ønsker å behandle elementene på en lineær måte. Dette kan gjøres med følgende kodebit:

matrise.flate ()

Resultatet av kommandoen ovenfor på den gitte matrisen er gitt her:

Merk at flatmatrisen er en endimensjonal matrise, rett og slett lineær.

Beregning av Eigenverdier og Eigenvektorer

Eigenvektorer brukes veldig ofte i maskinlæringspakker. Så når en lineær transformasjonsfunksjon presenteres som en matrise, så er X, Eigenvektorene vektorene som bare endrer seg i vektens skala, men ikke dens retning. Vi kan si det:

Xv = γv

Her er X den firkantede matrisen, og γ inneholder Eigenverdiene. Også inneholder v Eigenvektorene. Med NumPy er det enkelt å beregne Eigenvalues ​​og Eigenvectors. Her er kodebiten der vi viser det samme:

evaluer, evektorer = np.linalg.eig (matrise)

Resultatet av kommandoen ovenfor på den gitte matrisen er gitt her:

Dot Products of Vectors

Dot Products of Vectors er en måte å multiplisere 2 vektorer på. Den forteller deg om hvor mye av vektorene er i samme retning, i motsetning til kryssproduktet som forteller deg det motsatte, hvor lite vektorene er i samme retning (kalt ortogonalt). Vi kan beregne prikkproduktet til to vektorer som gitt i kodebiten her:

a = np.matrise ([3, 5, 6])
b = np.matrise ([23, 15, 1])
np.prikk (a, b)

Resultatet av kommandoen ovenfor på gitte matriser er gitt her:

Legge til, trekke fra og multiplisere matriser

Å legge til og trekke fra flere matriser er ganske grei å operere i matriser. Det er to måter dette kan gjøres på. La oss se på kodebiten for å utføre disse operasjonene. For å holde dette enkelt vil vi bruke den samme matrisen to ganger:

np.legg til (matrise, matrise)

Deretter kan to matrikser trekkes fra som:

np.trekke fra (matrise, matrise)

Resultatet av kommandoen ovenfor på den gitte matrisen er gitt her:

Som forventet blir hvert av elementene i matrisen lagt til / trukket med det tilsvarende elementet. Å multiplisere en matrise ligner på å finne prikkproduktet som vi gjorde tidligere:

np.prikk (matrise, matrise)

Ovennevnte kode vil finne den sanne multiplikasjonsverdien av to matriser, gitt som:

matrise * matrise

Resultatet av kommandoen ovenfor på den gitte matrisen er gitt her:

Konklusjon

I denne leksjonen gikk vi gjennom mange matematiske operasjoner relatert til vektorer, matriser og matriser som ofte brukes Databehandling, beskrivende statistikk og datavitenskap. Dette var en rask leksjon som bare dekket de vanligste og viktigste delene av det brede spekteret av konsepter, men disse operasjonene skulle gi en veldig god ide om hva alle operasjoner kan utføres mens du arbeider med disse datastrukturene.

Vennligst del din tilbakemelding fritt om leksjonen på Twitter med @linuxhint og @sbmaggarwal (det er meg!).

Beste kommandolinjespill for Linux
Kommandolinjen er ikke bare din største allierte når du bruker Linux, den kan også være kilden til underholdning fordi du kan bruke den til å spille m...
Beste Gamepad Mapping Apps for Linux
Hvis du liker å spille spill på Linux med en gamepad i stedet for et vanlig tastatur- og musinngangssystem, er det noen nyttige apper for deg. Mange P...
Nyttige verktøy for Linux-spillere
Hvis du liker å spille spill på Linux, er sjansen stor for at du har brukt apper og verktøy som Wine, Lutris og OBS Studio for å forbedre spilloppleve...