Podatkovna znanost

Python vektorji, matrike in nizi z NumPy

Python vektorji, matrike in nizi z NumPy
V tej lekciji si bomo ogledali nekaj lepih nasvetov in trikov za igranje z vektorji, matricami in nizi z uporabo NumPy knjižnice v Pythonu. Ta lekcija je zelo dobro izhodišče, če začnete z Data Science in potrebujete uvodni matematični pregled teh komponent in kako se lahko z njimi igramo z uporabo NumPy v kodi.

Knjižnica NumPy nam omogoča izvajanje različnih operacij, ki jih je treba opraviti na podatkovnih strukturah, ki se pogosto uporabljajo v strojnem učenju in znanosti o podatkih, kot so vektorji, matrike in polja. Prikazali bomo samo najpogostejše operacije z NumPy, ki se uporabljajo v številnih cevovodih strojnega učenja. Na koncu upoštevajte, da je NumPy le način izvajanja operacij, zato so matematične operacije, ki jih prikazujemo, glavni poudarek te lekcije in ne sam paket NumPy. Začnimo.

Kaj je vektor?

Po Googlu je vektor količina, ki ima smer in velikost, zlasti kot določanje položaja ene točke v prostoru glede na drugo.

Vektorji so pri strojnem učenju zelo pomembni, saj ne opisujejo le velikosti, temveč tudi smer lastnosti. V NumPy lahko ustvarimo vektor z naslednjim delčkom kode:

uvozi numpy kot np
vrstica_vektor = np.matrika ([1,2,3])
natisni (vektor_vrste)

V zgornjem delčku kode smo ustvarili vektor vrstice. Ustvarimo lahko tudi vektor stolpca kot:

uvozi numpy kot np
col_vector = np.matrika ([[1], [2], [3]])
tiskanje (col_vector)

Izdelava matrice

Matrico lahko preprosto razumemo kot dvodimenzionalno matriko. Matriko lahko naredimo z NumPy z izdelavo večdimenzionalnega polja:

matrica = np.matrika ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
tisk (matrika)

Čeprav je matrika popolnoma podobna večdimenzionalni matriki, matrična podatkovna struktura ni priporočljiva zaradi dveh razlogov:

  1. Matrika je standard, ko gre za paket NumPy
  2. Večina operacij z NumPy vrne polja in ne matrike

Uporaba redke matrike

Spomnimo, redka matrika je tista, pri kateri je večina elementov nič. Zdaj je pogost scenarij pri obdelavi podatkov in strojnem učenju obdelava matric, v katerih je večina elementov nič. Na primer, razmislite o matriki, katere vrstice opisujejo vsak video na Youtube, stolpci pa predstavljajo vsakega registriranega uporabnika. Vsaka vrednost predstavlja, ali si je uporabnik ogledal video ali ne. Seveda bo večina vrednosti v tej matriki enaka nič. The prednost z redko matrico je, da ne shrani vrednosti, ki so enake nič. To ima za posledico tudi veliko računsko prednost in optimizacijo pomnilnika.

Ustvarimo matrico isker tukaj:

iz scipy uvoza redko
original_matrix = np.matrika ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
sparse_matrix = redko.csr_matrix (original_matrix)
tiskanje (redka_matrica)

Da bi razumeli, kako deluje koda, si bomo ogledali rezultate tukaj:

V zgornji kodi smo uporabili funkcijo NumPy za ustvarjanje datoteke Stisnjena redka vrstica matrika, kjer so z ničelnimi indeksi predstavljeni elementi, ki niso ničelni. Obstajajo različne vrste redke matrike, kot so:

Tu se ne bomo potapljali v druge redke matrike, vendar vemo, da je vsaka njihova uporaba specifična in nikogar ni mogoče označiti za "najboljšega".

Uporaba operacij za vse elemente Vector

Pogost je scenarij, ko moramo uporabiti skupno operacijo za več vektorskih elementov. To lahko storite tako, da določite lambdo in jo nato vektorizirate. Poglejmo nekaj delčka kode za isto:

matrica = np.matrika ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vektoriziran_mul_5 = np.vektoriziraj (mul_5)
vectorized_mul_5 (matrica)

Da bi razumeli, kako deluje koda, si bomo ogledali rezultate tukaj:

V zgornjem delčku kode smo uporabili funkcijo vektoriziranja, ki je del knjižnice NumPy, za pretvorbo preproste lambda definicije v funkcijo, ki lahko obdela vsak element vektorja. Pomembno je omeniti, da je vektorizacija samo zanko nad elementi in ne vpliva na uspešnost programa. NumPy tudi omogoča oddajanje, kar pomeni, da bi lahko namesto zgornje zapletene kode preprosto storili:

matrica * 5

In rezultat bi bil popolnoma enak. Najprej sem želel pokazati zapleten del, sicer bi odsek preskočili!

Srednja vrednost, varianca in standardni odklon

Z NumPy je enostavno izvajati operacije, povezane z opisno statistiko vektorjev. Srednjo vrednost vektorja lahko izračunamo kot:

np.povprečje (matrika)

Varianco vektorja lahko izračunamo kot:

np.var (matrika)

Standardni odmik vektorja lahko izračunamo kot:

np.std (matrika)

Tukaj je podan izhod zgornjih ukazov na dani matriki:

Prenos matrike

Prenos je zelo pogosta operacija, o kateri boste slišali vsakič, ko boste obdani z matricami. Prenos je le način za zamenjavo stolpcev in vrednosti vrstic matrike. Upoštevajte, da a vektorja ni mogoče prenesti saj je vektor le zbirka vrednosti, ne da bi bile te vrednosti razvrščene v vrstice in stolpce. Upoštevajte, da pretvorba vektorja vrstice v vektor stolpca ni prenos (na podlagi definicij linearne algebre, ki je zunaj obsega te lekcije).

Za zdaj bomo mir našli samo s prenosom matrike. Dostop do prenosa matrike z NumPy je zelo preprost:

matriko.T

Tu je podan izhod zgornjega ukaza na dani matriki:

Enako operacijo lahko izvedemo na vektorju vrstice, da jo pretvorimo v vektor stolpca.

Izravnava matrice

Matriko lahko pretvorimo v enodimenzionalno matriko, če želimo njene elemente obdelati linearno. To lahko storite z naslednjim delčkom kode:

matriko.poravnati ()

Tu je podan izhod zgornjega ukaza na dani matriki:

Upoštevajte, da je sploščena matrika enodimenzionalna matrika, preprosto linearna.

Izračunavanje lastnih vrednosti in lastnih vektorjev

Lastni vektorji se zelo pogosto uporabljajo v paketih strojnega učenja. Torej, ko je funkcija linearne transformacije predstavljena kot matrika, so X, lastni vektorji vektorji, ki se spreminjajo le v obsegu vektorja, ne pa tudi v njegovi smeri. Lahko rečemo, da:

Xv = γv

Tu je X kvadratna matrika, γ pa vsebuje lastne vrednosti. V vsebuje tudi lastne vektorje. Z NumPy je enostavno izračunati lastne vrednosti in lastne vektorje. Tu je delček kode, kjer dokazujemo enako:

oceni, evektorji = np.linalg.eig (matrika)

Tu je podan izhod zgornjega ukaza na dani matriki:

Dot Products of Vectors

Dot Products of Vectors je način množenja 2 vektorjev. Pove vam o koliko vektorjev je v isti smeri, v nasprotju z navzkrižnim zmnožkom, ki vam govori nasprotno, kako malo je vektorjev v isti smeri (imenovano pravokotno). Izračunamo lahko pikčasti zmnožek dveh vektorjev, kot je podano tukaj v delčku kode:

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

Tukaj je podan izhod zgornjega ukaza za dane nize:

Seštevanje, odštevanje in množenje matric

Dodajanje in odštevanje več matrik je v matricah povsem enostavno. To lahko storimo na dva načina. Oglejmo si delček kode za izvajanje teh operacij. Da bi bilo to preprosto, bomo dvakrat uporabili isto matrico:

np.dodaj (matrika, matrica)

Nato lahko dve matrici odštejemo kot:

np.odštevanje (matrika, matrica)

Tu je podan izhod zgornjega ukaza na dani matriki:

Po pričakovanju se vsak element v matriki sešteje / odšteje z ustreznim elementom. Množenje matrike je podobno iskanju pikčastega izdelka kot prej:

np.pika (matrika, matrica)

Zgornja koda bo našla resnično vrednost množenja dveh matrik, podana kot:

matrica * matrica

Tu je podan izhod zgornjega ukaza na dani matriki:

Zaključek

V tej lekciji smo opravili veliko matematičnih operacij, povezanih z vektorji, matricami in nizi, ki se pogosto uporabljajo Obdelava podatkov, opisna statistika in znanost o podatkih. To je bila kratka lekcija, ki je zajela le najpogostejše in najpomembnejše odseke najrazličnejših konceptov, vendar bi morale te operacije dati zelo dobro predstavo o tem, katere operacije je mogoče izvesti pri obravnavi teh podatkovnih struktur.

Prosimo, da svoje povratne informacije o lekciji na Twitterju delite z @linuxhint in @sbmaggarwal (to sem jaz!).

Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...
Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...
Kako prikazati prekrivanje zaslonskega menija v celozaslonskih aplikacijah in igrah za Linux
Igranje celozaslonskih iger ali uporaba aplikacij v celozaslonskem načinu brez motenj vam lahko odreže ustrezne sistemske informacije, ki so vidne na ...