Essayez la décomposition de valeurs singulières avec Python

Ce que je veux faire: Découvrez la décomposition en valeurs singulières de l'algèbre linéaire

Pour la matrice de colonnes $ m $ ligne $ n $ $ A $

Existe et les prises suivantes

A=U\Sigma \overline{V^T}

Où le surligne est le conjugué complexe et $ ^ T $ est la transposée.

(Exemple) Définition de la matrice

A=\left(
\begin{matrix}
1 & 2 \\
3 & 4 
\end{matrix}
\right)
> import numpy as np
> A = np.array([[1,2],[3,4]])

Pour le moment, le contenu de ck

> A 
array([[1, 2],
       [3, 4]])

Essayez immédiatement SVD

U, s, V = np.linalg.svd(A, full_matrices=True)

Il existe trois valeurs de retour.

Contenu ck

> U
array([[-0.40455358, -0.9145143 ],
       [-0.9145143 ,  0.40455358]])
> s
array([ 5.4649857 ,  0.36596619])
> V
array([[-0.57604844, -0.81741556],
       [ 0.81741556, -0.57604844]])

D'une manière ou d'une autre, on a l'impression que $ s $ s'est effondré, mais la substance n'est que la composante diagonale, c'est-à-dire

> np.diag(s)
array([[ 5.4649857 ,  0.        ],
       [ 0.        ,  0.36596619]])

Est une matrice d'entités.

Vérifiez s'il revient

A=U\Sigma \overline{V^T}

Je vérifierai.

>np.dot(np.dot(U, np.diag(s)),V)
array([[ 1.,  2.],
       [ 3.,  4.]])

Ça fait du bien ♪ ⇒ Ici, puisque la matrice $ V $ est obtenue par la colonne d'exécution, il n'est pas nécessaire d'effectuer une conjugaison complexe, mais il semble que celle qui ne prend pas de translocation soit retournée comme valeur de retour.

Confirmation au cas où

U est une matrice unitaire

> np.dot(U, U.T)
array([[  1.00000000e+00,   2.77555756e-16],
       [  2.77555756e-16,   1.00000000e+00]])

Il est numériquement inévitable qu'une valeur autre que $ 0 $ soit saisie à un endroit qui n'est pas une composante diagonale.

V est aussi une matrice unitaire

> np.dot(V, V.T)
array([[ 1.,  0.],
       [ 0.,  1.]])

Recommended Posts

Essayez la décomposition de valeurs singulières avec Python
Essayez de gratter avec Python.
Essayez de décomposer la matrice daimyo par valeur singulière
Essayez d'exécuter Python avec Try Jupyter
Essayez la reconnaissance faciale avec Python
Décomposition de singularité (SVD), approximation de bas rang (LRA) en Python
Essayez de gratter avec Python + Beautiful Soup
Remplacez la valeur du dictionnaire par Python> update ()
Essayez Python
Essayez la reconnaissance faciale avec python + OpenCV
Essayez la simulation de contrôle de fréquence avec Python
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Essayez de travailler avec des données binaires en Python
Essayez d'utiliser Python avec Google Cloud Functions
Essayez le scraping HTML avec la bibliothèque Python
Essayez d'appeler Python depuis Ruby avec une économie
Essayez de dessiner une carte avec python + cartopy 0.18.0
[Suite] Essayez l'accès au registre PLC avec Python
Essayez d'attribuer ou de changer avec Python: lambda
[Pour les débutants] Essayez le web scraping avec Python
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
Python> essayez: / sauf:
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
nginxparser: essayez d'analyser le fichier de configuration nginx avec Python
Essayez-le avec JupyterLab en Python japonais Word Cloud.
Trouvez la valeur de l'humeur avec python (Rike Koi)
Essayez d'exécuter Google Chrome avec Python et Selenium
Approximation de bas rang des images par décomposition de singularité
Essayez de résoudre le diagramme homme-machine avec Python
Essayez de dessiner une courbe de vie avec python
Essayez de créer un code de "décryptage" en Python
Essayez de générer automatiquement des documents Python avec Sphinx
Essayez de travailler avec Mongo en Python sur Mac
[Python3] [Ubuntu16] [Docker] Essayez la reconnaissance faciale avec OpenFace
Essayez de créer un groupe de dièdre avec Python
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Communication de socket avec Python
Analyse de données avec python 2
[Python] Essayez d'optimiser les paramètres de la systole FX avec une recherche aléatoire
Excel> INTERCEPT ()> Valeur de la section> Erreur Web> Confirmer avec python / _, _ avec tuple
Essayez de résoudre le livre des défis de programmation avec python3