Andmeteadus

Pythoni vektorid, maatriksid ja massiivid koos NumPy-ga

Pythoni vektorid, maatriksid ja massiivid koos NumPy-ga
Selles õppetükis vaatame mõningaid näpunäiteid vektorite, maatriksite ja massiividega mängimiseks, kasutades PyPoni teeki NumPy. See õppetund on väga hea lähtepunkt, kui alustate andmeteadusega ja vajate sissejuhatavat matemaatilist ülevaadet nendest komponentidest ja sellest, kuidas saaksime nendega koodis NumPy abil mängida.

NumPy teek võimaldab meil teha mitmesuguseid toiminguid, mida tuleb teha masinõppes ja andmeteaduses sageli kasutatavatel andmestruktuuridel, nagu vektorid, maatriksid ja massiivid. Näitame ainult kõige levinumaid operatsioone NumPy-ga, mida kasutatakse paljudes masinõppe torujuhtmetes. Lõpuks pidage meeles, et NumPy on lihtsalt viis toimingute sooritamiseks, nii et selle tunni põhirõhk on meie näidatud matemaatilistel toimingutel, mitte NumPy paketil endal. Alustame.

Mis on vektor?

Google on Google'i järgi suurus, millel on nii suund kui ka suurus, eriti kui määratakse ühe ruumipunkti asukoht teise suhtes.

Vektorid on masinõppes väga olulised, kuna nad ei kirjelda mitte ainult funktsioonide suurust, vaid ka nende suunda. NumPys saab luua vektori järgmise koodilõikuga:

impordi numpy kui np
rea_vektor = np.massiiv ([1,2,3])
print (rea_vektor)

Ülalolevas koodijupis lõime reavektori. Samuti võime luua veeruvektori järgmiselt:

impordi numpy kui np
col_vector = np.massiiv ([[1], [2], [3]])
print (col_vector)

Maatriksi tegemine

Maatriksit võib lihtsalt mõista kui kahemõõtmelist massiivi. NumPy abil saame teha maatriksi, tehes mitmemõõtmelise massiivi:

maatriks = np.massiiv ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print (maatriks)

Kuigi maatriks on täpselt sarnane mitmemõõtmelise massiiviga, maatriksandmete struktuur ei ole soovitatav kahel põhjusel:

  1. Massiiv on NumPy paketi standard
  2. Enamik NumPy-ga tehtud toimingutest tagastab massiivid, mitte maatriksi

Hõreda maatriksi kasutamine

Tuletame meelde, et hõre maatriks on see, milles enamik üksusi on null. Nüüd on andmetöötluses ja masinõppes levinud stsenaarium maatriksite töötlemine, milles enamik elemente on null. Mõelgem näiteks maatriksile, mille read kirjeldavad kõiki Youtube'i videoid ja veerud esindavad iga registreeritud kasutajat. Iga väärtus tähistab, kas kasutaja on videot vaadanud või mitte. Muidugi on enamus selle maatriksi väärtustest null. The eelis hõreda maatriksiga on see, et see ei salvesta nullväärtusi. Selle tulemuseks on tohutu arvutuslik eelis ja ka salvestuse optimeerimine.

Loome siin sädemaatriksi:

alates scipy import hõre
algne_maatriks = np.massiiv ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
hõre_maatriks = hõre.csr_matrix (algne_maatriks)
print (hõre_maatriks)

Koodi toimimise mõistmiseks vaatame siin väljundit:

Ülaltoodud koodis kasutasime a loomiseks NumPy funktsiooni Kokkusurutud hõre rida maatriks, kus nullist erinevad elemendid on esitatud nullipõhiste indeksite abil. Hõredat maatriksit on mitmesuguseid, näiteks:

Me ei hakka siin sukelduma teistesse hõredatesse maatriksitesse, kuid teame, et nende iga kasutamine on spetsiifiline ja kedagi ei saa nimetada parimaks.

Operatsioonide rakendamine kõigile vektorielementidele

See on tavaline stsenaarium, kui peame rakendama ühist toimingut mitme vektorelemendi jaoks. Seda saab teha lambda määratlemisega ja seejärel selle vektoriseerimisega. Vaatame sama koodilõiku:

maatriks = np.massiiv ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vektoriseeritud_mul_5 = np.vektoriseerima (mul_5)
vektoriseeritud_mul_5 (maatriks)

Koodi toimimise mõistmiseks vaatame väljundit siin:

Ülaltoodud koodijupis kasutasime NumPy teegi osa vektoriseerivat funktsiooni, et muuta lihtne lambda definitsioon funktsiooniks, mis suudab töödelda vektori kõiki elemente. Oluline on märkida, et vektoriseerimine on lihtsalt silmus elementide kohal ja see ei mõjuta programmi toimimist. NumPy lubab ka ringhääling, mis tähendab, et ülaltoodud keeruka koodi asemel oleksime võinud lihtsalt teha:

maatriks * 5

Ja tulemus oleks olnud täpselt sama. Tahtsin kõigepealt näidata keerukat osa, muidu oleksite sektsiooni vahele jätnud!

Keskmine, dispersioon ja standardhälve

NumPy abil on vektorite kirjeldava statistikaga seotud toiminguid lihtne teha. Vektori keskmise saab arvutada järgmiselt:

np.keskmine (maatriks)

Vektori dispersiooni saab arvutada järgmiselt:

np.var (maatriks)

Vektori standardhälbe saab arvutada järgmiselt:

np.standard (maatriks)

Ülaltoodud käskude väljund antud maatriksil on toodud siin:

Maatriksi ülevõtmine

Ülekandmine on väga levinud toiming, millest kuulete alati, kui teid ümbritsevad maatriksid. Ülekandmine on lihtsalt viis maatriksi veeru- ja reaväärtuste vahetamiseks. Pange tähele, et a vektorit ei saa üle kanda kui vektor on lihtsalt väärtuste kogum, ilma et need väärtused oleks kategoriseeritud ridadesse ja veergudesse. Pange tähele, et reavektori teisendamine veeruvektoriks ei ole üleviimine (põhineb lineaarse algebra definitsioonidel, mis jääb selle õppetunni raamest välja).

Praegu leiame rahu lihtsalt maatriksi ülevõtmisega. NumPy abil on maatriksi üleviimiseks juurdepääs väga lihtne:

maatriks.T

Ülaltoodud käsu väljund antud maatriksil on siin:

Sama toimingu saab teha reavektoril, et teisendada see veeruvektoriks.

Maatriksi lamestamine

Maatriksi saame teisendada ühemõõtmeliseks massiiviks, kui soovime selle elemente töödelda lineaarselt. Seda saab teha järgmise koodilõiguga:

maatriks.tasane ()

Ülaltoodud käsu väljund antud maatriksil on siin:

Pange tähele, et lamestatud maatriks on ühemõõtmeline massiiv, lihtsalt lineaarne.

Omaväärtuste ja omavektorite arvutamine

Masinõppepakettides kasutatakse erivektoreid väga sageli. Niisiis, kui lineaarne teisendusfunktsioon esitatakse maatriksina, on X, vektorid on vektorid, mis muutuvad ainult vektori mõõtkavas, kuid mitte suuna. Võime öelda, et:

Xv = yv

Siin on X ruutmaatriks ja γ sisaldab omaväärtusi. Samuti sisaldab v põhivektoreid. NumPy abil on omaväärtusi ja omavektoreid lihtne arvutada. Siin on koodilõik, kus me demonstreerime sama:

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

Ülaltoodud käsu väljund antud maatriksil on siin:

Vektorite punkttooted

Vektorite punkttooted on viis vektorite korrutamiseks. See räägib teile kui palju vektoritest on samas suunas, erinevalt ristproduktist, mis ütleb teile vastupidist, kui vähe vektorid on samas suunas (nn ortogonaalsed). Saame arvutada kahe vektori punkttoote vastavalt koodilõigule siin:

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

Ülaltoodud käsu väljund antud massiividel on siin:

Maatriksite liitmine, lahutamine ja korrutamine

Mitme maatriksi liitmine ja lahutamine on maatriksites üsna lihtne toiming. Seda saab teha kahel viisil. Vaatame nende toimingute tegemiseks koodilõiku. Selle lihtsuse tagamiseks kasutame sama maatriksit kaks korda:

np.lisa (maatriks, maatriks)

Järgmisena saab lahutada kaks maatriksit järgmiselt:

np.lahuta (maatriks, maatriks)

Ülaltoodud käsu väljund antud maatriksil on siin:

Ootuspäraselt liidetakse / lahutatakse kõik maatriksi elemendid vastava elemendiga. Maatriksi korrutamine sarnaneb punkttoote leidmisega, nagu me varem tegime:

np.punkt (maatriks, maatriks)

Ülaltoodud kood leiab kahe maatriksi tõelise korrutamisväärtuse, mis on antud järgmiselt:

maatriks * maatriks

Ülaltoodud käsu väljund antud maatriksil on siin:

Järeldus

Selles tunnis läbisime palju matemaatilisi toiminguid, mis on seotud levinud vektorite, maatriksite ja massiividega. Andmetöötlus, kirjeldav statistika ja andmeteadus. See oli kiire õppetund, mis hõlmas ainult kõige erinevamate mõistete kõige levinumaid ja olulisemaid osi, kuid need toimingud peaksid andma väga hea ülevaate selle kohta, mida kõiki neid andmestruktuure käsitledes saab teha.

Palun jagage oma tagasisidet õppetunni kohta Twitteris @linuxhint ja @sbmaggarwal (see olen mina!).

X-Mouse Button Control abil saate hiire nupud erinevates tarkvarades erinevalt ümber teha
Võib-olla vajate tööriista, mis võiks muuta teie hiire juhtimissüsteemi iga kasutatava rakendusega. Sel juhul võite proovida rakendust nimega X hiiren...
Microsoft Sculpt Touch juhtmeta hiirte ülevaade
Lugesin hiljuti Microsoft Sculpt Touch juhtmevaba hiir ja otsustas selle osta. Pärast mõnda aega kasutamist otsustasin jagada sellega oma kogemusi. Se...
Rakenduse AppyMouse ekraanipaneel ja hiirekursor Windowsi tahvelarvutitele
Tahvelarvutite kasutajad tunnevad hiirekursorit sageli puudust, eriti kui neil on kombeks sülearvuteid kasutada. Puutetundliku ekraaniga nutitelefonid...