Sto utilizzando SVD troncato dal pacchetto scikit-learn
.Ottieni U, Sigma, V * matrice da SVD troncato in scikit-learn
Nella definizione di SVD, una matrice originale Un è approxmated come prodotto Un diagonale ≈ UΣV * dove U e V hanno colonne ortonormali e Σ è non negativo .
ho bisogno di ottenere il U, Σ e V * matrici.
Guardando il codice sorgente here ho scoperto che V * viene memorizzato in self.components_
campo dopo aver chiamato fit_transform
.
E 'possibile ottenere U e Σ matrici?
Il mio codice:
import sklearn.decomposition as skd
import numpy as np
matrix = np.random.random((20,20))
trsvd = skd.TruncatedSVD(n_components=15)
transformed = trsvd.fit_transform(matrix)
VT = trsvd.components_
Questo è vero, ma per il metodo numpy.linalg.svd regolare si puo' t passare il numero di componenti come parametro in modo da estrarre la parte superiore K da soli. Piccolo inconveniente –