Datavetenskap

Pythonvektorer, matriser och matriser med NumPy

Pythonvektorer, matriser och matriser med NumPy
I den här lektionen kommer vi att titta på några snygga tips och tricks för att spela med vektorer, matriser och matriser med hjälp av NumPy-biblioteket i Python. Den här lektionen är en mycket bra utgångspunkt om du börjar med datavetenskap och behöver lite matematisk översikt över dessa komponenter och hur vi kan spela med dem genom att använda NumPy i kod.

NumPy-biblioteket tillåter oss att utföra olika operationer som måste göras på datastrukturer som ofta används i maskininlärning och datavetenskap som vektorer, matriser och matriser. Vi visar endast de vanligaste operationerna med NumPy som används i många maskininlärningsrör. Slutligen notera att NumPy bara är ett sätt att utföra operationerna, så de matematiska operationerna vi visar är huvudfokus för denna lektion och inte själva NumPy-paketet. Låt oss börja.

Vad är en vektor?

Enligt Google är en vektor en kvantitet med både riktning och storlek, särskilt när man bestämmer positionen för en punkt i rymden i förhållande till en annan.

Vektorer är mycket viktiga i maskininlärning eftersom de inte bara beskriver storleken utan också riktningen för funktionerna. Vi kan skapa en vektor i NumPy med följande kodavsnitt:

importera numpy som np
row_vector = np.array ([1,2,3])
skriv ut (rad_vektor)

I kodavsnittet ovan skapade vi en radvektor. Vi kan också skapa en kolumnvektor som:

importera numpy som np
col_vector = np.array ([[1], [2], [3]])
skriva ut (kol_vektor)

Att göra en matris

En matris kan helt enkelt förstås som en tvådimensionell grupp. Vi kan skapa en matris med NumPy genom att skapa en flerdimensionell matris:

matris = np.array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
tryck (matris)

Även om matris exakt liknar flerdimensionell matris, matrisdatastrukturen rekommenderas inte på grund av två skäl:

  1. Array är standarden när det gäller NumPy-paketet
  2. De flesta av operationerna med NumPy returnerar matriser och inte en matris

Använda en sparsam matris

För att påminna är en gles matris den där de flesta föremålen är noll. Nu är ett vanligt scenario inom databehandling och maskininlärning bearbetning av matriser där de flesta elementen är noll. Tänk till exempel på en matris vars rader beskriver varje video på Youtube och kolumner representerar varje registrerad användare. Varje värde representerar om användaren har tittat på en video eller inte. Naturligtvis kommer majoriteten av värdena i denna matris att vara noll. De fördel med gles matris är att den inte lagrar värdena som är noll. Detta resulterar i en enorm beräkningsfördel och lagringsoptimering också.

Låt oss skapa en gnistmatris här:

från scipy import gles
original_matris = np.array ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
sparse_matrix = gles.csr_matrix (original_matrix)
skriv ut (sparse_matrix)

För att förstå hur koden fungerar kommer vi att titta på utdata här:

I koden ovan använde vi en NumPys funktion för att skapa en Komprimerad gles rad matris där element som inte är noll representeras med hjälp av de nollbaserade indexen. Det finns olika typer av gles matris, som:

Vi kommer inte att dyka in i andra glesa matriser här men vet att var och en av dem är specifik och ingen kan kallas 'bäst'.

Tillämpa operationer på alla vektorelement

Det är ett vanligt scenario när vi behöver tillämpa en gemensam operation på flera vektorelement. Detta kan göras genom att definiera en lambda och sedan vektorisera densamma. Låt oss se några kodavsnitt för samma:

matris = np.array ([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vektorisera (mul_5)
vectorized_mul_5 (matris)

För att förstå hur koden fungerar kommer vi att titta på utdata här:

I kodavsnittet ovan använde vi vektoriseringsfunktionen som ingår i NumPy-biblioteket för att omvandla en enkel lambdadefinition till en funktion som kan bearbeta varje element i vektorn. Det är viktigt att notera att vectorize är bara en slinga över elementen och det har ingen inverkan på programmets prestanda. NumPy tillåter också sändning, vilket innebär att vi istället för ovanstående komplexa kod helt enkelt kunde ha gjort:

matris * 5

Och resultatet skulle ha varit exakt detsamma. Jag ville först visa den komplexa delen, annars hade du hoppat över avsnittet!

Genomsnitt, avvikelse och standardavvikelse

Med NumPy är det enkelt att utföra operationer relaterade till beskrivande statistik på vektorer. Medelvärdet för en vektor kan beräknas som:

np.medelvärde (matris)

Varians hos en vektor kan beräknas som:

np.var (matris)

Standardvektor för en vektor kan beräknas som:

np.std (matris)

Resultatet av ovanstående kommandon på den givna matrisen ges här:

Transponering av en matris

Transponering är en mycket vanlig operation som du kommer att höra om när du är omgiven av matriser. Transponering är bara ett sätt att byta kolumner och radvärden i en matris. Observera att a vektorn kan inte transponeras som en vektor är bara en samling värden utan att dessa värden kategoriseras i rader och kolumner. Observera att konvertering av en radvektor till en kolumnvektor inte transponeras (baserat på definitionerna av linjär algebra, vilket ligger utanför ramen för denna lektion).

För nu kommer vi att hitta fred bara genom att transponera en matris. Det är väldigt enkelt att komma åt transponeringen av en matris med NumPy:

matris.T

Utgången från kommandot ovan på den givna matrisen ges här:

Samma operation kan utföras på en radvektor för att konvertera den till en kolumnvektor.

Platta en matris

Vi kan konvertera en matris till en endimensionell matris om vi vill bearbeta dess element på ett linjärt sätt. Detta kan göras med följande kodavsnitt:

matris.platta()

Utgången från kommandot ovan på den givna matrisen ges här:

Observera att plattmatrisen är en endimensionell matris, helt enkelt linjärt.

Beräkning av Eigenvärden och Eigenvektorer

Eigenvektorer används mycket ofta i maskininlärningspaket. Så, när en linjär transformationsfunktion presenteras som en matris, då är X, Eigenvektorer de vektorer som endast förändras i vektorn men inte dess riktning. Vi kan säga så:

Xv = γv

Här är X kvadratmatrisen och γ innehåller Eigenvalues. Dessutom innehåller v Eigenvektorerna. Med NumPy är det enkelt att beräkna Eigenvalues ​​och Eigenvectors. Här är kodavsnittet där vi visar samma:

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

Utgången från kommandot ovan på den givna matrisen ges här:

Punktprodukter av vektorer

Dot Products of Vectors är ett sätt att multiplicera två vektorer. Det berättar om hur mycket av vektorerna är i samma riktning, i motsats till tvärprodukten som säger motsatsen, hur lite vektorerna är i samma riktning (kallas ortogonal). Vi kan beräkna punktprodukten för två vektorer som anges i kodavsnittet här:

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

Resultatet av ovanstående kommando på de angivna matriserna ges här:

Lägga till, subtrahera och multiplicera matriser

Att lägga till och subtrahera flera matriser är ganska enkel operation i matriser. Det finns två sätt på vilket detta kan göras. Låt oss titta på kodavsnittet för att utföra dessa åtgärder. För att hålla det så enkelt kommer vi att använda samma matris två gånger:

np.lägg till (matris, matris)

Därefter kan två matriser subtraheras som:

np.subtrahera (matris, matris)

Utgången från kommandot ovan på den givna matrisen ges här:

Som förväntat adderas / subtraheras vart och ett av elementen i matrisen med motsvarande element. Att multiplicera en matris liknar att hitta punktprodukten som vi gjorde tidigare:

np.punkt (matris, matris)

Ovanstående kod kommer att hitta det sanna multipliceringsvärdet för två matriser, ges som:

matris * matris

Utgången från kommandot ovan på den givna matrisen ges här:

Slutsats

I den här lektionen gick vi igenom många matematiska operationer relaterade till vektorer, matriser och matriser som ofta används Databehandling, beskrivande statistik och datavetenskap. Detta var en snabb lektion som bara täckte de vanligaste och viktigaste avsnitten i de många olika begreppen, men dessa operationer bör ge en mycket bra uppfattning om vad alla operationer kan utföras när man hanterar dessa datastrukturer.

Dela din feedback fritt om lektionen på Twitter med @linuxhint och @sbmaggarwal (det är jag!).

Mus Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Om du upptäcker att muspekaren hoppar eller rör sig på egen hand, automatiskt, slumpmässigt när du skriver in Windows-bärbar dator eller dator, kan nå...
Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...