Articles

Python: vettori, matrici e matrici con NumPy

In questa lezione, vedremo alcuni suggerimenti e trucchi per giocare con vettori, matrici e matrici usando la libreria NumPy in Python. Questa lezione è un ottimo punto di partenza se stai iniziando nella scienza dei dati e hai bisogno di una panoramica matematica introduttiva di questi componenti e di come possiamo giocare con loro usando NumPy nel codice.

La libreria NumPy ci consente di eseguire varie operazioni che devono essere eseguite su strutture dati spesso utilizzate nell’apprendimento automatico e nella scienza dei dati come vettori, matrici e array. Mostreremo solo le operazioni più comuni con NumPy che vengono utilizzate in molte pipeline di apprendimento automatico. Infine, si noti che NumPy è solo un modo per eseguire le operazioni, quindi le operazioni matematiche che mostriamo sono l’obiettivo principale di questa lezione e non il pacchetto NumPy stesso. Cominciamo.

Che cos’è un vettore?

Secondo Google, un vettore è una quantità con direzione e magnitudine, specialmente per determinare la posizione di un punto nello spazio rispetto a un altro.

I vettori sono molto importanti nell’apprendimento automatico in quanto non descrivono solo la grandezza ma anche la direzione delle caratteristiche. Possiamo creare un vettore in NumPy con il seguente frammento di codice:

importa numpy come np
row_vector = np.array ()
print (row_vector)

Nel frammento di codice sopra, abbiamo creato un vettore di riga. Possiamo anche creare un vettore di colonna come:

importa numpy come np
col_vector = np.array (,,])
print(col_vector)

Creare una matrice

Una matrice può essere semplicemente intesa come una matrice bidimensionale. Possiamo creare una matrice con NumPy creando un array multidimensionale:

matrix = np.array(, , ])
print(matrix)

Sebbene matrix sia esattamente simile all’array multidimensionale, la struttura dei dati della matrice non è raccomandata a causa di due motivi:

  1. L’array è lo standard quando si tratta del pacchetto NumPy
  2. La maggior parte delle operazioni con NumPy restituisce array e non una matrice

Usando una matrice sparsa

Per ricordare, una matrice sparsa è quella in cui la maggior parte degli elementi sono zero. Ora, uno scenario comune nell’elaborazione dei dati e nell’apprendimento automatico è l’elaborazione di matrici in cui la maggior parte degli elementi sono zero. Ad esempio, si consideri una matrice le cui righe descrivono ogni video su Youtube e le colonne rappresentano ogni utente registrato. Ogni valore rappresenta se l’utente ha guardato un video o meno. Naturalmente, la maggior parte dei valori in questa matrice sarà zero. Il vantaggio con la matrice sparsa è che non memorizza i valori che sono zero. Ciò si traduce in un enorme vantaggio computazionale e ottimizzazione dello storage pure.

Creiamo una matrice spark qui:

Per capire come funziona il codice, vedremo l’output qui:

Nel codice precedente, abbiamo usato la funzione di NumPy per creare una matrice di righe sparse compressa in cui elementi diversi da zero sono rappresentati usando gli indici basati su zero. Esistono vari tipi di matrice sparsa, come:

  • Compressed sparse column
  • List of lists
  • Dictionary of keys

Non ci immergeremo in altre matrici sparse qui, ma sappiamo che ognuna delle loro funzioni è specifica e nessuno può essere definito come “migliore”.

Applicare operazioni a tutti gli elementi vettoriali

È uno scenario comune quando è necessario applicare un’operazione comune a più elementi vettoriali. Questo può essere fatto definendo un lambda e quindi vettorizzando lo stesso. Vediamo alcuni frammenti di codice per lo stesso:

matrix = np.array (,
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5(matrice)

Per capire come funziona il codice, possiamo vedere il risultato qui:

Nel precedente frammento di codice, abbiamo utilizzato vectorize funzione che fa parte della NumPy biblioteca, per trasformare un semplice lambda definizione di una funzione in grado di elaborare ogni elemento del vettore. È importante notare che vectorize è solo un ciclo sugli elementi e non ha alcun effetto sulle prestazioni del programma. NumPy permette anche la trasmissione, il che significa che invece del codice complesso sopra, avremmo potuto semplicemente fare:

matrix * 5

E il risultato sarebbe stato esattamente lo stesso. Volevo mostrare prima la parte complessa, altrimenti avresti saltato la sezione!

Media, varianza e Deviazione standard

Con NumPy, è facile eseguire operazioni relative alle statistiche descrittive sui vettori. La media di un vettore può essere calcolata come:

np.media (matrice)

La varianza di un vettore può essere calcolata come:

np.var (matrix)

La deviazione standard di un vettore può essere calcolata come:

np.std (matrix)

L’output dei comandi sopra riportati sulla matrice data è dato qui:

Trasporre una matrice

La trasposizione è un’operazione molto comune di cui sentirai parlare ogni volta che sarai circondato da matrici. La trasposizione è solo un modo per scambiare i valori colonnari e di riga di una matrice. Si noti che un vettore non può essere trasposto come vettore è solo una raccolta di valori senza che tali valori vengano categorizzati in righe e colonne. Si noti che la conversione di un vettore di riga in un vettore di colonna non è trasposizione (in base alle definizioni di algebra lineare, che è al di fuori dello scopo di questa lezione).

Per ora, troveremo la pace semplicemente trasponendo una matrice. È molto semplice accedere alla trasposizione di una matrice con NumPy:

matrix.T

L’output del comando precedente sulla matrice data è dato qui:

La stessa operazione può essere eseguita su un vettore di riga per convertirlo in un vettore di colonna.

Appiattimento di una matrice

Possiamo convertire una matrice in una matrice unidimensionale se vogliamo elaborare i suoi elementi in modo lineare. Questo può essere fatto con il seguente frammento di codice:

matrix.flatten()

L’output del comando precedente sulla matrice data è dato qui:

Si noti che la matrice flatten è una matrice unidimensionale, semplicemente lineare in modo.

Calcolare autovalori e autovettori

Gli autovettori sono molto comunemente usati nei pacchetti di apprendimento automatico. Quindi, quando una funzione di trasformazione lineare viene presentata come una matrice, allora X, gli autovettori sono i vettori che cambiano solo in scala del vettore ma non nella sua direzione. Possiamo dire che:

Xv = yv

Qui, X è la matrice quadrata e γ contiene gli Autovalori. Inoltre, v contiene gli autovettori. Con NumPy, è facile calcolare autovalori e autovettori. Ecco il frammento di codice in cui dimostriamo lo stesso:

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

L’output del comando precedente sulla matrice data è dato qui:

Prodotti dot di vettori

Prodotti dot di vettori è un modo di moltiplicare 2 vettori. Ti dice su quanto dei vettori sono nella stessa direzione, al contrario del prodotto incrociato che ti dice il contrario, quanto poco i vettori sono nella stessa direzione (chiamati ortogonali). Possiamo calcolare il prodotto punto di due vettori come indicato nel frammento di codice qui:

a = np.array ()
b = np.array ()
np.dot(a, b)

L’output del comando precedente sugli array dati è dato qui:

Aggiungere, sottrarre e moltiplicare le matrici

Aggiungere e sottrarre più matrici è un’operazione abbastanza semplice nelle matrici. Ci sono due modi in cui questo può essere fatto. Diamo un’occhiata al frammento di codice per eseguire queste operazioni. Allo scopo di mantenere questo semplice, useremo la stessa matrice due volte:

np.add (matrix, matrix)

Successivamente, due matrici possono essere sottratte come:

np.sottrai (matrix, matrix)

L’output del comando precedente sulla matrice data è dato qui:

Come previsto, ciascuno degli elementi nella matrice viene aggiunto / sottratto con l’elemento corrispondente. Moltiplicare una matrice è simile a trovare il prodotto dot come abbiamo fatto in precedenza:

np.dot(matrix, matrix)

Il codice sopra troverà il vero valore di moltiplicazione di due matrici, dato come:

matrix matrix

L’output del comando precedente il dato matrice è dato qui:

Conclusione

In questa lezione, siamo andati attraverso un sacco di operazioni matematiche relative ai Vettori, Matrici e Matrici che sono comunemente utilizzate per l’elaborazione Dati, la statistica descrittiva e la scienza di dati. Questa è stata una breve lezione che copre solo le sezioni più comuni e più importanti dell’ampia varietà di concetti, ma queste operazioni dovrebbero dare una buona idea di ciò che tutte le operazioni possono essere eseguite mentre si tratta di queste strutture dati.

Si prega di condividere il tuo feedback liberamente sulla lezione su Twitter con @ linuxhint e @ sbmaggarwal (che sono io!).