Python: vektorit, matriisit ja ryhmät, joissa on numpy
tällä oppitunnilla tarkastelemme joitakin siistejä vinkkejä ja temppuja, joilla vektoreilla, matriiseilla ja matriiseilla voi leikkiä Pythonin numpy-kirjastoa käyttäen. Tämä oppitunti on erittäin hyvä lähtökohta, jos olet aloittamassa Datatiedettä ja tarvitset joitakin alustavia matemaattisia yleiskatsauksia näistä komponenteista ja siitä, miten voimme pelata niillä käyttäen numpy in code.
NumPy-kirjasto mahdollistaa erilaisten operaatioiden suorittamisen Koneoppimisessa ja Datatieteessä usein käytetyille tietorakenteille, kuten vektoreille, matriiseille ja matriiseille. Näytämme vain yleisimmät numpy-toiminnot, joita käytetään paljon koneoppimisen putkistoissa. Lopuksi, huomaa, että NumPy on vain tapa suorittaa operaatioita, joten, matemaattiset operaatiot näytämme ovat pääpaino tämän oppitunnin eikä NumPy paketti itse. Aloitetaan.
- mikä on vektori?
- matriisin tekeminen
- käyttäen Harvamatriisia
- operaatioiden soveltaminen kaikkiin Vektorielementteihin
- keskiarvo, varianssi ja keskihajonta
- matriisin Transposointi
- litistämällä matriisin
- Eigenvalujen ja Eigenvektorien laskeminen
- vektorien Pistetuotteet
- yhteen -, vähennys-ja Kertomatriisien lisääminen ja vähentäminen
- johtopäätös
mikä on vektori?
Googlen mukaan vektori on suure, jolla on sekä suunta että suuruus, erityisesti määritettäessä jonkin pisteen asemaa avaruudessa toiseen nähden.
vektorit ovat hyvin tärkeitä Koneoppimisessa, sillä ne eivät kuvaa vain suuruutta vaan myös ominaisuuksien suuntaa. Voimme luoda NumPy-vektorin seuraavalla koodinpätkällä:
row_vector = np.array ()
print (row_vector)
yllä olevassa koodinpätkässä loimme rivivektorin. Voidaan luoda myös sarakevektori seuraavasti:
col_vector = np.matriisi (,,])
print (col_vector)
matriisin tekeminen
matriisi voidaan yksinkertaisesti ymmärtää kaksiulotteiseksi matriisiksi. Voimme tehdä matriisin Numpyn avulla tekemällä moniulotteisen matriisin:
print (matrix)
vaikka matriisi on täsmälleen samanlainen kuin moniulotteinen array, matriisin tietorakennetta ei suositella kahdesta syystä:
- matriisi on numpy-paketin suhteen standardi
- useimmat operaatiot, joissa numpy palauttaa matriisit eikä matriisi
käyttäen Harvamatriisia
muistuttaakseen, että harvamatriisi on se, jossa suurin osa alkioista on nolla. Nyt yleinen skenaario tietojenkäsittelyssä ja koneoppimisessa on matriisien käsittely, jossa suurin osa elementeistä on nolla. Ajatellaanpa esimerkiksi matriisia, jonka rivit kuvaavat jokaista YouTubessa olevaa videota ja sarakkeet edustavat jokaista rekisteröitynyttä käyttäjää. Jokainen arvo kuvaa sitä, onko käyttäjä katsonut videota vai ei. Tietenkin suurin osa tämän matriisin arvoista on nolla. Etuna harva matriisi on, että se ei säilytä arvoja, jotka ovat nolla. Tämä johtaa valtava laskennallinen etu ja varastointi optimointi samoin.
luodaanpa kipinämatriisi tähän:
ymmärtääksemme miten koodi toimii, katsomme tulostetta tästä:
yllä olevassa koodissa käytettiin Numpyn funktiota luomaan pakattua harvakseltaan rivimatriisia, jossa nollapohjaisten indeksien avulla esitetään ei-nollapohjaisia alkioita. On olemassa erilaisia harva matriisi, kuten:
- tiivistetty harvakarstainen palsta
- luetteloiden luettelo
- avainten sanakirja
emme sukeltele tässä muihin harvakarvaisiin matriiseihin, mutta tiedämme, että jokainen niiden käyttö on spesifistä, eikä ketään voi kutsua ”parhaaksi”.
operaatioiden soveltaminen kaikkiin Vektorielementteihin
on yhteinen skenaario, kun on sovellettava yhteistä operaatiota useisiin vektorielementteihin. Tämä voidaan tehdä määrittelemällä lambda ja sitten vektorisoimalla sama. Katsotaan vähän samaa koodinpätkää:
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5(matriisi)
ymmärtääksemme, miten koodi toimii, katsomme tulostetta täältä:
yllä olevassa koodinpätkässä käytimme numpy-kirjastoon kuuluvaa vectorize-funktiota muuttaaksemme yksinkertaisen lambda-määritelmän funktioksi, joka voi prosessoida jokainen vektorin Elementti. On tärkeää huomata, että vectorize on vain silmukka elementtien päälle eikä sillä ole vaikutusta ohjelman suorituskykyyn. NumPy mahdollistaa myös lähetykset, eli edellä mainitun kompleksikoodin sijaan olisi voitu yksinkertaisesti tehdä:
ja tulos olisi ollut täsmälleen sama. Halusin näyttää ensin monimutkaisen osan, muuten olisit jättänyt osion väliin!
keskiarvo, varianssi ja keskihajonta
Numpylla on helppo suorittaa vektorien kuvaileviin tilastoihin liittyviä operaatioita. Vektorin keskiarvo voidaan laskea seuraavasti:
vektorin varianssi voidaan laskea seuraavasti:
vektorin keskihajonta voidaan laskea seuraavasti:
edellä mainittujen käskyjen ulostulo annettuun matriisiin on annettu tässä:
matriisin Transposointi
Transposointi on hyvin yleinen operaatio, josta kuulee aina kun on matriisien ympäröimä. Transponointi on vain tapa vaihtaa matriisin columnar-ja riviarvoja. Huomaa, että vektoria ei voida transposoida vektorina, koska se on vain kokoelma arvoja ilman, että nämä arvot luokitellaan riveihin ja sarakkeisiin. Huomaa, että rivivektorin muuntaminen sarakevektoriksi ei ole transposoivaa (perustuu lineaarialgebran määritelmiin, joka ei kuulu tämän oppitunnin piiriin).
toistaiseksi löydämme rauhan vain transponoimalla matriisin. Matriisin transponointi numpy: n kanssa on hyvin yksinkertaista:
edellä mainitun komennon ulostulo annetulle matriisille annetaan tässä:
sama operaatio voidaan suorittaa rivivektorille sen muuntamiseksi sarakevektoriksi.
litistämällä matriisin
voimme muuntaa matriisin yksiulotteiseksi matriisiksi, jos haluamme käsitellä sen alkuaineita lineaarisesti. Tämä voidaan tehdä seuraavalla koodinpätkällä:
edellä mainitun komennon ulostulo annetulle matriisille annetaan tässä:
huomaa, että flattenin matriisi on yksiulotteinen joukko, yksinkertaisesti lineaarinen.
Eigenvalujen ja Eigenvektorien laskeminen
Eigenvektoreita käytetään hyvin yleisesti Koneoppimispaketeissa. Kun siis lineaarinen muunnosfunktio esitetään matriisina, niin X, Eigenvektorit ovat vektoreita, jotka muuttuvat vain vektorin asteikolla, mutta eivät sen suuntaa. Voidaan sanoa, että:
tässä X on neliömatriisi ja γ sisältää Eigenvalut. Myös v sisältää Eigenvektorit. Numpy: n avulla on helppo laskea Eigenvalues ja Eigenvektorit. Tässä on koodinpätkä, jossa osoitamme saman:
edellä mainitun komennon lähtö annetulle matriisille annetaan tässä:
vektorien Pistetuotteet
vektorien Pistetuotteet on tapa kertoa 2 vektoria. Se kertoo, kuinka suuri osa vektoreista on samaan suuntaan, toisin kuin ristitulo, joka kertoo päinvastoin, kuinka vähän vektorit ovat samaan suuntaan (kutsutaan ortogonaalisiksi). Voimme laskea kahden vektorin pistetulon, kuten koodinpätkässä on esitetty.:
b = np.array ()
np.piste (A, b)
edellä mainitun komennon ulostulo annetuille matriiseille annetaan tässä:
yhteen -, vähennys-ja Kertomatriisien lisääminen ja vähentäminen
useiden matriisien yhteen-ja vähennyslasku on varsin suoraviivaista toimintaa matriiseissa. Tämä voidaan tehdä kahdella tavalla. Katsotaanpa koodinpätkä suorittaa nämä toiminnot. Jotta tämä pysyisi yksinkertaisena, käytetään samaa matriisia kahdesti:
seuraavaksi kaksi matriisia voidaan vähentää seuraavasti:
edellä mainitun komennon lähtö annetulle matriisille annetaan tässä:
odotetusti jokainen matriisin alkioista lisätään/vähennetään vastaavalla alkiolla. Matriisin kertominen muistuttaa pistetulon löytämistä kuten aiemmin:
yllä oleva koodi löytää kahden matriisin todellisen kertolaskuarvon, joka annetaan:
yllä olevan komennon lähtö annettuun matriisiin on annettu täällä:
johtopäätös
tällä oppitunnilla käytiin läpi paljon matemaattisia operaatioita, jotka liittyvät vektoreihin, matriiseihin ja matriiseihin, joita käytetään yleisesti tietojenkäsittelyssä, kuvailevissa tilastoissa ja datatieteessä. Tämä oli nopea oppitunti, joka kattoi vain yleisimmät ja tärkeimmät osat erilaisista käsitteistä, mutta näiden toimintojen pitäisi antaa erittäin hyvä käsitys siitä, mitä kaikkia toimintoja voidaan suorittaa, kun käsitellään näitä tietorakenteita.
jaa palautetta vapaasti oppitunnista Twitterissä @linuxhint ja @sbmaggarwal (that ’ s me!).