Articles

Python: vectori, matrice și matrice cu NumPy

În această lecție, ne vom uita la câteva sfaturi și trucuri îngrijite pentru a juca cu vectori, matrice și matrice folosind biblioteca NumPy în Python. Această lecție este un punct de plecare foarte bun dacă începeți în știința datelor și aveți nevoie de o prezentare matematică introductivă a acestor componente și cum putem juca cu ele folosind NumPy în cod.

NumPy library ne permite să efectuăm diverse operații care trebuie efectuate pe structuri de date utilizate adesea în învățarea automată și știința datelor, cum ar fi vectori, matrice și matrice. Vom arăta doar cele mai frecvente operațiuni cu NumPy, care sunt utilizate într-o mulțime de conducte de învățare automată. În cele din urmă, vă rugăm să rețineți că NumPy este doar o modalitate de a efectua operațiile, deci operațiile matematice pe care le arătăm sunt principalul obiectiv al acestei lecții și nu Pachetul NumPy în sine. Să începem.

ce este un Vector?

potrivit Google, un Vector este o cantitate care are direcție, precum și magnitudine, mai ales ca determinarea poziției unui punct în spațiu în raport cu altul.

vectorii sunt foarte importanți în învățarea automată, deoarece nu descriu doar magnitudinea, ci și direcția caracteristicilor. Putem crea un vector în NumPy cu următorul fragment de cod:

import numpy ca NP
row_vector = NP.array ()
print (row_vector)

în fragmentul de cod de mai sus, am creat un vector rând. De asemenea, putem crea un vector de coloană ca:

import numpy ca NP
col_vector = NP.array (,,])
print (col_vector)

realizarea unei matrice

o matrice poate fi înțeleasă pur și simplu ca o matrice bidimensională. Putem face o matrice cu NumPy făcând o matrice multidimensională:

matrix = NP.array (,,])
print (matrix)

deși matrice este exact similar cu matrice multi-dimensional, structura de date matrice nu este recomandată din două motive:

  1. matricea este standard atunci când vine vorba de pachetul NumPy
  2. majoritatea operațiilor cu matrice NumPy returnează și nu o matrice

folosind o matrice rară

pentru a reaminti, o matrice rară este cea în care majoritatea elementelor sunt zero. Acum, un scenariu comun în procesarea datelor și învățarea automată este procesarea matricelor în care majoritatea elementelor sunt zero. De exemplu, luați în considerare o matrice ale cărei rânduri descriu fiecare videoclip de pe Youtube, iar coloanele reprezintă fiecare utilizator înregistrat. Fiecare valoare reprezintă dacă utilizatorul a vizionat un videoclip sau nu. Desigur, majoritatea valorilor din această matrice va fi zero. Avantajul cu matrice rare este că nu stochează valorile care sunt zero. Acest lucru are ca rezultat un avantaj computațional imens și optimizarea stocării.

să creăm o matrice spark aici:

pentru a înțelege cum funcționează Codul, ne vom uita la ieșire aici:

în codul de mai sus, am folosit o funcție NumPy pentru a crea o matrice de rând comprimată în care elementele diferite de zero sunt reprezentate folosind indexurile bazate pe zero. Există diferite tipuri de matrice rare, cum ar fi:

  • comprimat coloana rare
  • Lista de liste
  • Dicționar de chei

nu vom fi scufundări în alte matrice rare aici, dar știu că fiecare dintre lor este utilizarea este specifică și nimeni nu poate fi numit ca ‘cel mai bun’.

aplicarea operațiilor la toate elementele vectoriale

este un scenariu comun atunci când trebuie să aplicăm o operație comună la mai multe elemente vectoriale. Acest lucru se poate face prin definirea unui lambda și apoi vectorizarea la fel. Să vedem un fragment de cod pentru același lucru:

matrix = NP.array (,
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5(matrix)

pentru a înțelege cum funcționează Codul, ne vom uita la ieșire aici:

în fragmentul de cod de mai sus, am folosit funcția vectorize care face parte din biblioteca NumPy, pentru a transforma o definiție simplă lambda într-o funcție care poate procesa fiecare element al vectorului. Este important să rețineți că vectorizarea este doar o buclă peste elemente și nu are niciun efect asupra performanței programului. NumPy permite, de asemenea, difuzarea, ceea ce înseamnă că în loc de codul complex de mai sus, am fi putut face pur și simplu:

matrice * 5

iar rezultatul ar fi fost exact același. Am vrut să arăt mai întâi partea complexă, altfel ai fi sărit peste secțiune!

medie, varianță și deviație Standard

cu NumPy, este ușor de efectuat operații legate de statistici descriptive pe vectori. Media unui vector poate fi calculată ca:

np.media (matrice)

varianța unui vector poate fi calculată ca:

np.var (matrice)

deviația Standard a unui vector poate fi calculată ca:

np.STD (matrix)

ieșirea comenzilor de mai sus pe matricea dată este dată aici:

transpunerea unei matrice

transpunerea este o operație foarte comună despre care veți auzi ori de câte ori sunteți înconjurați de matrice. Transpunerea este doar o modalitate de a schimba valorile columnare și rând ale unei matrice. Vă rugăm să rețineți că un vector nu poate fi transpus ca un vector este doar o colecție de valori fără ca aceste valori să fie clasificate în rânduri și coloane. Vă rugăm să rețineți că conversia unui vector rând într-un vector coloană nu se transpune (pe baza definițiilor algebrei liniare, care se află în afara domeniului de aplicare al acestei lecții).

pentru moment, vom găsi pacea doar prin transpunerea unei matrice. Este foarte simplu să accesați transpunerea unei matrice cu NumPy:

matrice.T

ieșirea comenzii de mai sus pe matricea dată este dată aici:

aceeași operație poate fi efectuată pe un vector rând pentru a-l converti într-un vector coloană.

aplatizarea unei matrice

putem converti o matrice într-o matrice unidimensională dacă dorim să procesăm elementele sale într-un mod liniar. Acest lucru se poate face cu următorul fragment de cod:

matrice.flatten ()

ieșirea comenzii de mai sus pe matricea dată este dată aici:

rețineți că matricea aplatizată este o matrice unidimensională, pur și simplu liniară la modă.

calcularea valorilor proprii și a vectorilor proprii

vectorii proprii sunt foarte frecvent utilizați în pachetele de învățare automată. Deci, atunci când o funcție de transformare liniară este prezentată ca o matrice, atunci X, vectorii proprii sunt vectorii care se schimbă doar în scara vectorului, dar nu și în direcția acestuia. Putem spune că:

Xv = Yv

aici, X este matricea pătrată, iar inktualul conține valorile proprii. De asemenea, v conține vectorii proprii. Cu NumPy, este ușor de calculat valorile proprii și vectorii proprii. Iată fragmentul de cod în care demonstrăm același lucru:

evaluari, evectori = np.linalg.eig (matrice)

ieșirea comenzii de mai sus pe matricea dată este dată aici:

produse Dot ale vectorilor

produse Dot ale vectorilor este o modalitate de înmulțire a 2 vectori. Acesta vă spune despre cât de mult dintre vectori sunt în aceeași direcție, spre deosebire de produsul încrucișat care vă spune contrariul, cât de puțin vectorii sunt în aceeași direcție (numiți ortogonali). Putem calcula produsul dot a doi vectori așa cum este dat în fragmentul de cod aici:

a = np.array ()
b = np.array ()
np.punct(A, b)

ieșirea comenzii de mai sus pe matricele date este dată aici:

adăugarea, scăderea și înmulțirea matricelor

Adăugarea și scăderea mai multor matrice este o operație destul de simplă în matrice. Există două moduri în care se poate face acest lucru. Să ne uităm la fragmentul de cod pentru a efectua aceste operații. Pentru a menține acest lucru simplu, vom folosi aceeași matrice de două ori:

np.adăugați (matrice, matrice)

apoi, două matrice pot fi scăzute ca:

np.scade (matrice, matrice)

ieșirea comenzii de mai sus pe matricea dată este dată aici:

după cum era de așteptat, fiecare dintre elementele din matrice este adăugat/scăzut cu elementul corespunzător. Înmulțirea unei matrice este similară cu găsirea produsului dot așa cum am făcut mai devreme:

np.punct (matrice, matrice)

codul de mai sus va găsi adevărata valoare de multiplicare a două matrice, dat ca:

matrix * matrix

ieșirea comenzii de mai sus pe matricea dată este dată aici:

concluzie

în această lecție, am trecut printr-o mulțime de operații matematice legate de vectori, matrice și matrice care sunt utilizate în mod obișnuit de prelucrare a datelor, statistici descriptive și știința datelor. Aceasta a fost o lecție rapidă care acoperă doar cele mai comune și cele mai importante secțiuni ale varietății largi de concepte, dar aceste operațiuni ar trebui să ofere o idee foarte bună despre ce pot fi efectuate toate operațiunile în timp ce se ocupă de aceste structuri de date.

vă rugăm să împărtășiți feedback-ul dvs. în mod liber despre lecția pe Twitter cu @linuxhint și @sbmaggarwal (asta sunt eu!).