Znanost o podacima

Python vektori, matrice i nizovi s NumPy

Python vektori, matrice i nizovi s NumPy
U ovoj ćemo lekciji pogledati neke lijepe savjete i trikove za igru ​​s vektorima, matricama i nizovima pomoću NumPy biblioteke u Pythonu. Ova je lekcija vrlo dobra polazna točka ako započinjete s Data Scienceom i trebate uvodni matematički pregled ovih komponenata i kako se možemo igrati s njima koristeći NumPy u kodu.

NumPy knjižnica omogućuje nam izvođenje različitih operacija koje je potrebno obaviti na podatkovnim strukturama koje se često koriste u strojnom učenju i znanosti o podacima, poput vektora, matrica i nizova. Prikazati ćemo samo najčešće operacije s NumPy-om koje se koriste u većini cjevovoda za strojno učenje. Na kraju, imajte na umu da je NumPy samo način izvođenja operacija, pa su matematičke operacije koje prikazujemo glavni fokus ove lekcije, a ne sam NumPy paket. Započnimo.

Što je vektor?

Prema Googleu, Vector je veličina koja ima smjer i veličinu, posebno kao određivanje položaja jedne točke u prostoru u odnosu na drugu.

Vektori su vrlo važni u strojnom učenju jer ne opisuju samo veličinu već i smjer značajki. Možemo stvoriti vektor u NumPyu sa sljedećim isječkom koda:

uvoz numpy kao np
redak_vektor = np.niz ([1,2,3])
ispis (vector_vector)

U gornjem isječku koda stvorili smo vektor retka. Također možemo stvoriti vektor stupca kao:

uvoz numpy kao np
col_vector = np.niz ([[1], [2], [3]])
ispis (col_vector)

Izrada matrice

Matrica se jednostavno može shvatiti kao dvodimenzionalni niz. Možemo napraviti matricu s NumPyom izrađivanjem višedimenzionalnog niza:

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

Iako je matrica potpuno slična višedimenzionalnom nizu, ne preporučuje se matrična struktura podataka iz dva razloga:

  1. Niz je standard kada je u pitanju paket NumPy
  2. Većina operacija s NumPy vraća nizove, a ne matricu

Korištenjem rijetke matrice

Da podsjetimo, rijetka je matrica u kojoj je većina stavki nula. Sada je uobičajeni scenarij u obradi podataka i strojnom učenju obrada matrica u kojima je većina elemenata nula. Na primjer, razmotrite matricu čiji redovi opisuju svaki videozapis na Youtubeu, a stupci predstavljaju svakog registriranog korisnika. Svaka vrijednost predstavlja je li korisnik gledao videozapis ili nije. Naravno, većina vrijednosti u ovoj matrici bit će nula. The prednost s rijetkom matricom jest da ne pohranjuje vrijednosti koje su nula. To rezultira velikom računalnom prednošću i optimizacijom pohrane.

Stvorimo ovdje matricu iskrišta:

od scipy uvoza rijetko
izvorna_matrica = np.niz ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
rijetka_matrica = rijetka.csr_matrix (original_matrix)
ispis (rijetka_matrica)

Da bismo razumjeli kako kod funkcionira, pogledati ćemo izlaz ovdje:

U gornjem kodu koristili smo funkciju NumPy za stvaranje a Stlačeni rijetki red matrica gdje su elementi koji nisu nula predstavljeni pomoću indeksa temeljenih na nuli. Postoje razne vrste rijetke matrice, poput:

Ovdje nećemo zaranjati u druge rijetke matrice, ali znamo da je svaka njihova upotreba specifična i nikoga ne možemo nazvati „najboljim“.

Primjena operacija na sve elemente vektora

Uobičajeni je scenarij kada trebamo primijeniti zajedničku operaciju na više vektorskih elemenata. To se može učiniti definiranjem lambde i zatim vektoriziranjem iste. Pogledajmo isječak koda za isto:

matrica = np.niz ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vektorizirani_mul_5 = np.vektorizirati (mul_5)
vektorizirani_mul_5 (matrica)

Da bismo razumjeli kako kod funkcionira, pogledati ćemo izlaz ovdje:

U gornjem isječku koda koristili smo funkciju vektorizacije koja je dio biblioteke NumPy, kako bismo transformirali jednostavnu lambda definiciju u funkciju koja može obraditi svaki element vektora. Važno je napomenuti da je vektorizacija samo petlja preko elemenata i nema utjecaja na izvedbu programa. NumPy također omogućuje emitiranje, što znači da smo umjesto gornjeg složenog koda mogli jednostavno učiniti:

matrica * 5

A rezultat bi bio potpuno isti. Prvo sam želio pokazati složeni dio, inače biste preskočili odjeljak!

Prosjek, varijanca i standardno odstupanje

Pomoću NumPy-a lako je izvoditi operacije povezane s opisnom statistikom vektora. Srednja vrijednost vektora može se izračunati kao:

np.srednja vrijednost (matrica)

Varijansa vektora može se izračunati kao:

np.var (matrica)

Standardno odstupanje vektora može se izračunati kao:

np.std (matrica)

Izlaz gore navedenih naredbi na datoj matrici dat je ovdje:

Transponiranje matrice

Transponiranje je vrlo česta operacija o kojoj ćete čuti kad god ste okruženi matricama. Transponiranje je samo način zamjene vrijednosti stupca i reda matrice. Imajte na umu da a vektor se ne može transponirati kao što je vektor samo skup vrijednosti bez da su te vrijednosti kategorizirane u retke i stupce. Imajte na umu da pretvaranje vektora retka u vektor stupca nije transponiranje (na temelju definicija linearne algebre, što je izvan dosega ove lekcije).

Za sada ćemo mir pronaći samo transponiranjem matrice. Vrlo je jednostavno pristupiti transponiranju matrice s NumPy:

matrica.T

Izlaz gornje naredbe na datoj matrici dat je ovdje:

Ista se operacija može izvesti na vektoru retka da bi se pretvorila u vektor stupca.

Izravnavanje matrice

Matricu možemo pretvoriti u jednodimenzionalni niz ako želimo linearno obraditi njene elemente. To se može učiniti pomoću sljedećeg isječka koda:

matrica.izravnati ()

Izlaz gornje naredbe na datoj matrici dat je ovdje:

Imajte na umu da je izravnana matrica jednodimenzionalni niz, jednostavno linearne mode.

Izračunavanje vlastitih vrijednosti i vlastitih vektora

Vlastiti vektori se vrlo često koriste u paketima za strojno učenje. Dakle, kada je funkcija linearne transformacije predstavljena kao matrica, tada su X, vlastiti vektori vektori koji se mijenjaju samo u mjerilu vektora, ali ne i smjeru. Možemo reći da:

Xv = γv

Ovdje je X kvadratna matrica, a γ sadrži vlastite vrijednosti. Također, v sadrži vlastite vektore. Pomoću NumPy lako je izračunati vlastite vrijednosti i vlastite vektore. Evo isječka koda gdje pokazujemo isto:

procjenjuje, evektori = np.linalg.eig (matrica)

Izlaz gornje naredbe na datoj matrici dat je ovdje:

Točkasti proizvodi vektora

Točkasti proizvodi vektora način je množenja 2 vektora. Govori vam o koliki je vektor u istom smjeru, za razliku od križnog umnoška koji vam govori suprotno, koliko su vektori u istom smjeru (nazvani pravokutni). Točkasti umnožak dva vektora možemo izračunati kako je dano ovdje u isječku koda:

a = np.niz ([3, 5, 6])
b = np.niz ([23, 15, 1])
np.točka (a, b)

Izlaz gornje naredbe na danim nizovima dat je ovdje:

Zbrajanje, oduzimanje i množenje matrica

Zbrajanje i oduzimanje višestrukih matrica prilično je jednostavna operacija u matricama. Postoje dva načina na koja se to može učiniti. Pogledajmo isječak koda za izvođenje ovih operacija. U svrhu jednostavnosti, koristit ćemo istu matricu dva puta:

np.dodaj (matrica, matrica)

Dalje se dvije matrice mogu oduzeti kao:

np.oduzimati (matrica, matrica)

Izlaz gornje naredbe na datoj matrici dat je ovdje:

Kao što se i očekivalo, svaki od elemenata u matrici dodaje se / oduzima s odgovarajućim elementom. Množenje matrice slično je pronalaženju točkanog proizvoda kao što smo to činili ranije:

np.točka (matrica, matrica)

Gornji kod pronaći će stvarnu vrijednost množenja dviju matrica, datu kao:

matrica * matrica

Izlaz gornje naredbe na datoj matrici dat je ovdje:

Zaključak

U ovoj smo lekciji prošli kroz puno matematičkih operacija povezanih s Vektorima, Matricama i Nizovima koji se često koriste Obrada podataka, deskriptivna statistika i znanost o podacima. Ovo je bila kratka lekcija koja je pokrivala samo najčešće i najvažnije odjeljke najrazličitijih koncepata, ali ove bi operacije trebale dati vrlo dobru predodžbu o tome koje se sve operacije mogu izvoditi tijekom rada s tim strukturama podataka.

Molimo podijelite svoje povratne informacije o lekciji na Twitteru s @linuxhint i @sbmaggarwal (to sam ja!).

Vodič za Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider dvanaesti je dodatak seriji Tomb Raider - franšizi u akcijsko-avanturističkoj igri koju je stvorio Eidos Montreal. I kritiča...
Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...
Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...