Data Science

Pythonové vektory, matice a polia s NumPy

Pythonové vektory, matice a polia s NumPy
V tejto lekcii sa pozrieme na niekoľko prehľadných tipov a trikov, ako hrať s vektormi, maticami a poliami pomocou knižnice NumPy v Pythone. Táto lekcia je veľmi dobrým východiskovým bodom, ak začínate s Data Science a potrebujete úvodný matematický prehľad o týchto komponentoch a o tom, ako sa s nimi môžeme hrať pomocou kódu NumPy v kóde.

Knižnica NumPy nám umožňuje vykonávať rôzne operácie, ktoré je potrebné vykonať na dátových štruktúrach často používaných v Machine Learning a Data Science, ako sú vektory, matice a polia. Ukážeme iba najbežnejšie operácie s NumPy, ktoré sa používajú v mnohých potrubiach strojového učenia. Na záver upozorňujeme, že NumPy je iba spôsob vykonávania operácií, takže matematické operácie, ktoré ukazujeme, sú hlavným zameraním tejto lekcie a nie samotným balíkom NumPy. Začnime.

Čo je Vektor?

Podľa spoločnosti Google je vektor veličina majúca smer aj veľkosť, najmä na určovanie polohy jedného bodu v priestore voči druhému.

Vektory sú v strojovom učení veľmi dôležité, pretože nepopisujú iba veľkosť, ale aj smer funkcií. Vektor môžeme vytvoriť v NumPy pomocou nasledujúceho útržku kódu:

importovať numpy ako np
riadok_vektor = np.pole ([1,2,3])
print (riadok_vektor)

Vo vyššie uvedenom útržku kódu sme vytvorili vektor riadka. Môžeme tiež vytvoriť vektor stĺpca ako:

importovať numpy ako np
col_vector = np.pole ([[1], [2], [3]])
print (col_vector)

Tvorba Matice

Maticu môžeme jednoducho chápať ako dvojrozmerné pole. Maticu môžeme vytvoriť pomocou NumPy vytvorením viacrozmerného poľa:

matica = np.pole ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
tlač (matica)

Aj keď matica je presne podobná viacrozmernému poľu, maticová dátová štruktúra sa neodporúča z dvoch dôvodov:

  1. Pole je štandardom, pokiaľ ide o balík NumPy
  2. Väčšina operácií s NumPy vracia polia a nie maticu

Pomocou riedkej matice

Pripomíname, že riedka matica je matica, v ktorej je väčšina položiek nulová. Bežným scenárom v oblasti spracovania údajov a strojového učenia je teraz spracovanie matíc, v ktorých je väčšina prvkov nulová. Zvážte napríklad maticu, ktorej riadky popisujú každé video na Youtube a stĺpce predstavujú každého registrovaného používateľa. Každá hodnota predstavuje, či si používateľ pozrel video alebo nie. Väčšina hodnôt v tejto matici bude samozrejme nulová. The výhoda s riedkou maticou je to, že neuchováva nulové hodnoty. To má za následok obrovskú výpočtovú výhodu a tiež optimalizáciu úložiska.

Vytvoríme tu maticu iskier:

zo scipy import riedky
original_matrix = np.pole ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
sparse_matrix = riedky.csr_matrix (original_matrix)
print (sparse_matrix)

Aby sme pochopili, ako kód funguje, pozrieme sa na výstup tu:

Vo vyššie uvedenom kóde sme pomocou funkcie NumPy vytvorili a Stlačený riedky riadok matica, kde sú nenulové prvky reprezentované pomocou indexov založených na nule. Existujú rôzne druhy riedkej matice, napríklad:

Nebudeme sa tu potápať v iných riedkych maticiach, ale vedzte, že každá z ich možností použitia je špecifická a nikoho nemožno označiť ako „najlepší“.

Uplatňovanie operácií na všetky prvky Vector

Je to bežný scenár, keď potrebujeme aplikovať spoločnú operáciu na viac vektorových prvkov. To sa dá dosiahnuť definovaním lambdy a jej následnou vektorizáciou. Pozrime sa na nejaký úryvok kódu pre to isté:

matica = np.pole ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vektorizovať (mul_5)
vectorized_mul_5 (matica)

Aby sme pochopili, ako kód funguje, pozrieme sa na výstup tu:

Vo vyššie uvedenom útržku kódu sme použili funkciu vektorizácie, ktorá je súčasťou knižnice NumPy, na transformáciu jednoduchej definície lambda na funkciu, ktorá dokáže spracovať každý prvok vektora. Je dôležité si uvedomiť, že vektorizácia je iba slučka nad prvkami a nemá to žiadny vplyv na výkonnosť programu. NumPy tiež umožňuje vysielanie, čo znamená, že namiesto vyššie uvedeného komplexného kódu sme mohli jednoducho urobiť:

matica * 5

A výsledok by bol úplne rovnaký. Najprv som chcel ukázať zložitú časť, inak by ste sekciu preskočili!

Stredná hodnota, odchýlka a štandardná odchýlka

S NumPy je ľahké vykonávať operácie spojené s popisnými štatistikami vektorov. Priemer vektora sa dá vypočítať ako:

np.priemer (matica)

Rozptyl vektora možno vypočítať ako:

np.var (matica)

Štandardná odchýlka vektora sa môže vypočítať ako:

np.std (matica)

Tu je uvedený výstup vyššie uvedených príkazov na danú maticu:

Transpozícia matice

Transpozícia je veľmi častá operácia, o ktorej budete počuť, kedykoľvek budete obklopení maticami. Transpozícia je iba spôsob výmeny stĺpcových a riadkových hodnôt matice. Upozorňujeme, že a vektor nemožno transponovať ako vektor je iba súborom hodnôt bez toho, aby boli tieto hodnoty kategorizované do riadkov a stĺpcov. Upozorňujeme, že prevod riadkového vektora na vektor stĺpca sa netransponuje (na základe definícií lineárnej algebry, ktoré sú mimo rozsah tejto lekcie).

Mier zatiaľ nájdeme iba transponovaním matice. Je veľmi jednoduchý prístup k transpozícii matice pomocou NumPy:

matrica.T

Tu je uvedený výstup vyššie uvedeného príkazu na danej matici:

Rovnakú operáciu je možné vykonať na vektore riadkov na jeho prevedenie na vektor stĺpca.

Sploštenie matice

Maticu môžeme previesť do jednorozmerného poľa, ak chceme jej prvky spracovať lineárne. Môžete to urobiť pomocou nasledujúceho útržku kódu:

matrica.vyrovnať ()

Tu je uvedený výstup vyššie uvedeného príkazu na danej matici:

Upozorňujeme, že plochá matica je jednorozmerné pole, ktoré je jednoducho lineárne.

Výpočet vlastných čísel a vlastných vektorov

Vlastné vektory sa veľmi často používajú v balíkoch Machine Learning. Takže keď je funkcia lineárnej transformácie prezentovaná ako matica, potom X, vlastné vektory sú vektory, ktoré sa menia iba v mierke vektora, ale nie v jeho smere. Môžeme povedať, že:

Xv = γv

Tu je X štvorcová matica a γ obsahuje vlastné čísla. V obsahuje aj vlastné vektory. S NumPy je ľahké vypočítať vlastné hodnoty a vlastné vektory. Tu je útržok kódu, kde demonštrujeme to isté:

vyhodnocuje, evektori = np.linalg.eig (matica)

Tu je uvedený výstup vyššie uvedeného príkazu na danej matici:

Bodové výrobky vektorov

Dot Products of Vectors je spôsob znásobenia 2 vektorov. Hovorí vám o koľko vektorov je v rovnakom smere, na rozdiel od krížového súčinu, ktorý vám hovorí opak, ako málo sú vektory v rovnakom smere (tzv. ortogonálne). Bodový súčin dvoch vektorov, ako je uvedený v útržku kódu, môžeme vypočítať tu:

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

Tu je uvedený výstup vyššie uvedeného príkazu na daných poliach:

Sčítanie, odčítanie a násobenie matíc

Sčítanie a odčítanie viacerých matíc je v maticiach celkom jednoduchá operácia. Je to možné dvoma spôsobmi. Pozrime sa na útržok kódu na vykonanie týchto operácií. Z dôvodu zachovania tejto jednoduchosti použijeme dvakrát tú istú maticu:

np.pridať (matica, matica)

Ďalej možno odčítať dve matice ako:

np.odčítať (matica, matica)

Tu je uvedený výstup vyššie uvedeného príkazu na danej matici:

Podľa očakávania je každý z prvkov v matici pridaný / odčítaný so zodpovedajúcim prvkom. Násobenie matice je podobné ako pri hľadaní produktu s bodkami ako predtým:

np.bodka (matica, matica)

Vyššie uvedený kód nájde skutočnú hodnotu násobenia dvoch matíc, ktorá sa uvádza ako:

matrica * matica

Tu je uvedený výstup vyššie uvedeného príkazu na danej matici:

Záver

V tejto lekcii sme prešli mnohými matematickými operáciami týkajúcimi sa vektorov, matíc a polí, ktoré sa bežne používajú Spracovanie údajov, popisná štatistika a veda o údajoch. Toto bola rýchla lekcia, ktorá sa týkala iba najbežnejších a najdôležitejších častí širokej škály konceptov, ale tieto operácie by mali poskytnúť veľmi dobrú predstavu o tom, čo všetko je možné pri riešení týchto dátových štruktúr vykonať.

Prosím, bezplatne zdieľajte svoju spätnú väzbu k lekcii na Twitteri s @linuxhint a @sbmaggarwal (to som ja!).

Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...
Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...
Hry HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
Mnoho vývojárov a vydavateľov hier prichádza s remastrom starých hier v rozlíšení HD, aby predĺžili životnosť franšízy. Prosím fanúšikov, ktorí požadu...