Matrix
Le mie conoscenze matematiche dal primo anno di analisi e algebra lineare si sono in gran parte perse. Le rinfresco qui insieme alla notazione numpy.
Annotation
scalar calculation
In numpy, + e - funzionano direttamente.
scalar product
Hadamard Product: prodotto elemento per elemento di vettori della stessa forma. X · Y
X * YNorm
 Distanza dall’origine al vettore. L1 norm = somma dei valori assoluti delle variazioni L2 norm = distanza euclidea
Angolo tra vettori
 Usando il teorema del coseno, si puo calcolare l’angolo tra due vettori.
def angle(x, y): v = np.inner(x, y) / (l2_norm(x) * l2_norm(y)) theta = np.arccos(v) return thetamultiplication
XY
X @ YTramite la moltiplicazione matriciale, una matrice puo essere intesa come un operatore nello spazio vettoriale. Perche la moltiplicazione matriciale puo mandare un vettore in uno spazio di dimensione diversa. Si puo usare per estrazione di pattern e compressione dati.
inner product


inner in numpy
np.inner calcola il prodotto interno tra vettori. Per esprimere il prodotto interno dei vettori in forma matriciale, si usa tipicamente la trasposta. 
np.inner(X, Y)Matrice inversa
np.linalg.inv(X)Pseudo-inversa, matrice di Moore-Penrose
- A differenza dell’inversa regolare, il numero di righe e colonne non deve coincidere.
- Svolge comunque un ruolo simile all’inversa.  n = righe, m = colonne
np.linalg.pinv(X)Risoluzione di sistemi di equazioni

Regressione lineare

Considerando la distribuzione dei dati, fare una regressione lineare come sistema di equazioni non e possibile. Quindi, trovare una soluzione che minimizzi la norma L2 di y e l’approccio generale.
# using sklearn for linear regressionfrom sklearn.linear_model import LinearRegressionmodel = LinearRegression()model.fit(X, y)y_test = model.predict(x_test)
# Moore-Penrose inverse matrixX_ = np.array([np.append(x, [1]) for x in X]) # aggiunta intercetta ybeta = np.linalg.pinv(X_) @ yy_test = np.append(x_test) @ betasklearn stima automaticamente l’intercetta y nella regressione lineare. Quando si fa regressione lineare tramite l’inversa di Moore-Penrose, bisogna aggiungere manualmente l’intercetta y per costruire X.