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 nprea_vektor = np.massiiv ([1,2,3])
print (rea_vektor)
Ülalolevas koodijupis lõime reavektori. Samuti võime luua veeruvektori järgmiselt:
impordi numpy kui npcol_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:
- Massiiv on NumPy paketi standard
- 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õrealgne_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:
- Kokkusurutud hõre veerg
- Nimekirjade loend
- Võtmete sõnastik
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 * 5Ja 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 = yvSiin 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!).