Datu zinātne

Python vektori, matricas un masīvi ar NumPy

Python vektori, matricas un masīvi ar NumPy
Šajā nodarbībā mēs aplūkosim dažus veiklus padomus un ieteikumus, kā spēlēt ar vektoriem, matricām un masīviem, izmantojot NumPy bibliotēku Python. Šī nodarbība ir ļoti labs sākumpunkts, ja sākat lietot Data Science un jums ir nepieciešams neliels ievads matemātisks pārskats par šiem komponentiem un to, kā mēs varam spēlēt ar viņiem, izmantojot NumPy kodā.

NumPy bibliotēka ļauj mums veikt dažādas darbības, kas jāveic ar mašīnmācībā un datu zinātnē bieži izmantotām datu struktūrām, piemēram, vektoriem, matricām un masīviem. Mēs parādīsim tikai visizplatītākās operācijas ar NumPy, kuras tiek izmantotas daudzos Machine Learning cauruļvados. Visbeidzot, lūdzu, ņemiet vērā, ka NumPy ir tikai veids, kā veikt operācijas, tāpēc šīs stundas galvenā uzmanība tiek pievērsta mūsu parādītajām matemātiskajām operācijām, nevis pati NumPy pakete. Sāksim.

Kas ir vektors?

Pēc Google domām, vektors ir lielums, kam ir gan virziens, gan lielums, it īpaši, lai noteiktu viena punkta punktu telpā attiecībā pret citu.

Mašīnmācībā vektori ir ļoti svarīgi, jo tie ne tikai apraksta funkciju lielumu, bet arī to virzienu. NumPy mēs varam izveidot vektoru ar šādu koda fragmentu:

importēt numpy kā np
rindas_vektors = np.masīvs ([1,2,3])
drukāt (rindas_vektors)

Iepriekš minētajā koda fragmentā mēs izveidojām rindas vektoru. Mēs varam izveidot arī kolonnu vektoru kā:

importēt numpy kā np
kol_vektors = np.masīvs ([[1], [2], [3]])
drukāt (kol_vektors)

Matricas veidošana

Matricu var vienkārši saprast kā divdimensiju masīvu. Mēs varam izveidot matricu ar NumPy, izveidojot daudzdimensionālu masīvu:

matrica = np.masīvs ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
druka (matrica)

Kaut arī matrica ir tieši līdzīga daudzdimensiju masīvam, matricas datu struktūra nav ieteicama divu iemeslu dēļ:

  1. Masīvs ir standarts, kad runa ir par NumPy pakotni
  2. Lielākā daļa operāciju ar NumPy atgriež masīvus, nevis matricu

Izmantojot retu matricu

Lai atgādinātu, reta matrica ir tā, kurā lielākā daļa vienumu ir nulle. Tagad izplatīts datu apstrādes un mašīnmācīšanās scenārijs ir tādu matricu apstrāde, kurās lielākā daļa elementu ir nulle. Piemēram, ņemiet vērā matricu, kuras rindas raksturo katru Youtube videoklipu, un kolonnas atspoguļo katru reģistrēto lietotāju. Katra vērtība norāda, vai lietotājs ir skatījies videoklipu. Protams, lielākā daļa vērtību šajā matricā būs nulle. The priekšrocība ar retu matricu ir tas, ka tajā netiek glabātas nulles vērtības. Tā rezultātā ir milzīgas skaitļošanas priekšrocības un arī krātuves optimizācija.

Izveidosim dzirksteles matricu šeit:

no scipy importa reti
sākotnējā_matrica = np.masīvs ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
reti_matrica = reti.csr_matrix (oriģināla_matrica)
drukāt (sparse_matrix)

Lai saprastu, kā kods darbojas, mēs aplūkosim izvadi šeit:

Iepriekš minētajā kodā mēs izmantojām NumPy funkciju, lai izveidotu a Saspiesta reta rinda matrica, kurā elementi, kas nav nulle, tiek attēloti, izmantojot nulles indeksus. Ir dažāda veida retas matricas, piemēram:

Mēs šeit neiesimies citās retās matricās, bet zinām, ka katra no tām ir specifiska un nevienu nevar nosaukt par “labāko”.

Darbību piemērošana visiem vektora elementiem

Tas ir izplatīts scenārijs, kad mums jāpiemēro kopēja darbība vairākiem vektora elementiem. To var izdarīt, definējot lambda un pēc tam to pašu vektorizējot. Apskatīsim dažus koda fragmentus tam pašam:

matrica = np.masīvs ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vektorizēt (mul_5)
vectorized_mul_5 (matrica)

Lai saprastu, kā kods darbojas, mēs aplūkosim izvadi šeit:

Iepriekš minētajā koda fragmentā mēs izmantojām vektorizēšanas funkciju, kas ir daļa no NumPy bibliotēkas, lai vienkāršu lambda definīciju pārveidotu par funkciju, kas var apstrādāt katru vektora elementu. Ir svarīgi atzīmēt, ka vektorizācija ir tikai cilpa pār elementiem un tas neietekmē programmas darbību. NumPy arī atļauj apraide, tas nozīmē, ka iepriekš minētā sarežģītā koda vietā mēs vienkārši varējām izdarīt:

matrica * 5

Un rezultāts būtu bijis tieši tāds pats. Es gribēju vispirms parādīt sarežģīto daļu, pretējā gadījumā jūs būtu izlaidis sadaļu!

Vidējā, dispersija un standartnovirze

Izmantojot NumPy, ir viegli veikt darbības, kas saistītas ar aprakstošu statistiku par vektoriem. Vektora vidējo lielumu var aprēķināt šādi:

np.vidējais (matrica)

Vektora dispersiju var aprēķināt šādi:

np.var (matrica)

Vektora standartnovirzi var aprēķināt šādi:

np.std (matrica)

Iepriekš norādīto komandu izeja uz doto matricu ir dota šeit:

Matricas transponēšana

Transponēšana ir ļoti izplatīta darbība, par kuru jūs dzirdēsiet ikreiz, kad jūs ieskauj matricas. Transponēšana ir tikai veids, kā apmainīt matricas kolonnu un rindu vērtības. Lūdzu, ņemiet vērā, ka a vektoru nevar transponēt kā vektors ir tikai vērtību kopums, bez šīm vērtībām kategorizējot rindās un kolonnās. Lūdzu, ņemiet vērā, ka rindas vektora pārveidošana par kolonnu vektoru netiek transponēta (pamatojoties uz lineārās algebras definīcijām, kas ir ārpus šīs nodarbības darbības jomas).

Pagaidām mēs atradīsim mieru, tikai transponējot matricu. Ar NumPy piekļūt matricas transponēšanai ir ļoti vienkārši:

matrica.T

Iepriekš norādītās komandas izvade uz dotās matricas ir dota šeit:

To pašu darbību var veikt ar rindas vektoru, lai to pārveidotu par kolonnu vektoru.

Matricas saplacināšana

Mēs varam pārveidot matricu par viendimensiju masīvu, ja vēlamies tās elementus apstrādāt lineāri. To var izdarīt ar šādu koda fragmentu:

matrica.saplacināt ()

Iepriekš norādītās komandas izvads uz dotās matricas ir norādīts šeit:

Ņemiet vērā, ka saplacinātā matrica ir viendimensionāls masīvs, kas vienkārši ir lineārs.

Īpašvērtību un īpašvektoru aprēķināšana

Mašīnmācības paketēs ļoti bieži tiek izmantoti īpašvektori. Tātad, ja lineārā transformācijas funkcija tiek parādīta kā matrica, tad X, Eigenvektori ir vektori, kas mainās tikai vektora mērogā, bet ne tā virzienā. Mēs varam teikt, ka:

Xv = γv

Šeit X ir kvadrātveida matrica, un γ satur īpašvērtības. Arī v satur Eigenvektorus. Izmantojot NumPy, ir viegli aprēķināt raksturīgās vērtības un īpašus vektorus. Šeit ir koda fragments, kurā mēs demonstrējam to pašu:

evalues, evectors = np.linalg.eig (matrica)

Iepriekš norādītās komandas izvads uz dotās matricas ir norādīts šeit:

Punktu vektoru produkti

Vektoru punktu produkti ir veids, kā reizināt 2 vektorus. Tas jums stāsta par cik daudz vektoru atrodas vienā virzienā, atšķirībā no šķērsprodukta, kas jums saka pretējo, cik maz vektoru atrodas vienā virzienā (saukti par ortogonāliem). Divu vektoru punktu reizinājumu varam aprēķināt, kā norādīts šeit koda fragmentā:

a = np.masīvs ([3, 5, 6])
b = np.masīvs ([23, 15, 1])
np.punkts (a, b)

Iepriekš minētās komandas izvads uz dotajiem masīviem ir norādīts šeit:

Matricu saskaitīšana, atņemšana un reizināšana

Vairāku matricu saskaitīšana un atņemšana ir diezgan vienkārša darbība matricās. Ir divi veidi, kā to var izdarīt. Apskatīsim koda fragmentu, lai veiktu šīs darbības. Lai saglabātu šo vienkāršību, mēs vienu un to pašu matricu izmantosim divas reizes:

np.pievienot (matrica, matrica)

Pēc tam divas matricas var atņemt kā:

np.atņemt (matrica, matrica)

Iepriekš norādītās komandas izvads uz dotās matricas ir norādīts šeit:

Kā gaidīts, katrs no matricas elementiem tiek saskaitīts / atņemts ar atbilstošo elementu. Matricas reizināšana ir līdzīga punktveida produkta atrašanai, kā mēs to darījām iepriekš:

np.punkts (matrica, matrica)

Iepriekš minētais kods atradīs divu matricu patieso reizināšanas vērtību, kas dota kā:

matrica * matrica

Iepriekš norādītās komandas izvade uz dotās matricas ir dota šeit:

Secinājums

Šajā nodarbībā mēs izgājām cauri daudzām matemātiskām operācijām, kas saistītas ar vektoriem, matricām un masīviem, kurus parasti izmanto. Datu apstrāde, aprakstoša statistika un datu zinātne. Šī bija ātra nodarbība, kas aptvēra tikai visdažādākās un vissvarīgākās sadaļas visdažādākajos jēdzienos, taču šīm operācijām vajadzētu dot ļoti labu priekšstatu par to, kādas darbības var veikt, strādājot ar šīm datu struktūrām.

Lūdzu, brīvi dalieties savās atsauksmēs par nodarbību Twitter vietnē @linuxhint un @sbmaggarwal (tas esmu es!).

Kā mainīt peles rādītāja un kursora izmēru, krāsu un shēmu operētājsistēmā Windows 10
Peles rādītājs un kursors operētājsistēmā Windows 10 ir ļoti svarīgi operētājsistēmas aspekti. To var teikt arī par citām operētājsistēmām, tāpēc pati...
Bezmaksas un atvērtā koda spēļu dzinēji Linux spēļu izstrādei
Šis raksts aptvers bezmaksas un atvērtā koda spēļu motoru sarakstu, kurus var izmantot, lai izstrādātu 2D un 3D spēles Linux. Šādu spēļu dzinēju ir da...
Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...