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 npredak_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 npcol_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:
- Niz je standard kada je u pitanju paket NumPy
- 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 rijetkoizvorna_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:
- Stlačeni rijetki stupac
- Popis popisa
- Rječnik ključeva
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 * 5A 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.TIzlaz 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 = γvOvdje 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!).