J'applique sklearn.decomposition.TruncatedSVD à de très grandes matrices. Si la matrice est au-dessus d'une certaine taille (disons 350k par 25k), svd.fit (x) manque de RAM.Peut sklearn.decomposition.TruncatedSVD être appliqué à une matrice en pièces?
J'applique svd aux matrices d'entités, où chaque ligne représente un ensemble d'entités extraites d'une seule image. Pour contourner les problèmes de mémoire, est-il sûr d'appliquer svd à des parties de la matrice (puis de concaténer)?
Le résultat sera-t-il le même? i.e. .:
from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=128)
part_1 = svd.fit_transform(features[0:100000, :])
part_2 = svd.fit_transform(features[100000:, :])
svd_features = np.concatenate((part_1, part_2), axis=0)
.. équivalent à (?):
from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=128)
svd_features = svd.fit_transform(svd_features)
Sinon, est-il une solution pour la réduction des dim très grandes matrices?
Merci, y a-t-il une solution de contournement? –
@ChrisParry Vous pouvez vérifier s'il y a quelque chose de pertinent ici: http://stackoverflow.com/questions/20450051/performing-pca-on-a-large-dataset –
Merci, j'ai essayé l'algo "arpack", mais je pense que "randomisé" peut fonctionner dans la limite de la mémoire. –