Método SVD Numpy

Método SVD Numpy

La descomposición del valor singular es uno de los conceptos más importantes en álgebra lineal. Comprender la descomposición del valor singular (SVD) implica familiaridad con conceptos relacionados, como matrices, tipos de matriz y transformaciones de matriz. Debido a los vínculos entre la descomposición del valor singular de una matriz y otros temas algebraicos lineales, aprender la idea se ha vuelto más desafiante. En este artículo, descubrirá la definición de descomposición del valor singular y ejemplos detallados de la descomposición de matriz 2*2 y 3*3. El enfoque SVD se explicará a fondo en esta publicación. Puede encontrar todo el material necesario aquí, comenzando con la introducción y pasando a numerosos ejemplos.

¿Qué es la descomposición del valor singular??

Cuando una matriz se tiene en cuenta en tres matrices diferentes, se dice que se descompone en valores singulares. Este concepto se conoce como SVD, que representa la descomposición del valor singular. Como resultado, cuando la matriz "one" se tiene en cuenta en el producto de tres matrices, la descomposición del valor singular de la matriz "one" puede escribirse como un = UDVT. En este caso, las columnas U y V son ortonormales, mientras que la matriz D es diagonal, que tiene entradas positivas reales.

Sintaxis del método SVD



La sintaxis del método SVD tiene algunos parámetros.

Ahora, tiene una comprensión básica del método SVD y su sintaxis. Discutamos algunos ejemplos de cómo usar la función.

Ejemplo 1

En el primer ejemplo de este artículo, le proporcionaremos el código de muestra que aplica el método SVD. Veamos el código línea por línea.

En la siguiente captura de pantalla, puede ver que hemos importado la biblioteca Numpy que está disponible en Python. Se hace con un simple código de "importar numpy", y generalmente escribimos esto en la primera línea del código. Después de eso, creamos la matriz llamada "arr_data" usando el numpy.método de matriz. La matriz contiene [1, 2, 3, 4, 5], [11, 22, 33, 11, 23], [6, 8, 10, 2, 4] y [5, 7, 3, 5, 3 ] valores.

Después de eso, utilizamos dos declaraciones de impresión para mostrar la matriz original. En la siguiente línea del código, hemos usado el Numpy.Linla.Método SVD en la matriz creada anterior. Aquí, hemos establecido el parámetro Full_matrices en "Falso". En la última sección, se utilizan otras dos declaraciones impresas (). Una declaración de impresión para mostrar el "Factor de la matriz creada por SVD:" y la segunda declaración de impresión para mostrar el resultado en la pantalla de salida.

importar numpy
arr_data = numpy.Array ([[1, 2, 3, 4, 5], [11, 22, 33, 11, 23],
[6, 8, 10, 2, 4], [5, 7, 3, 5, 3]],
dtype = numpy.flotante32)
Imprimir ("Aquí está la matriz original:")
imprimir (arr_data)
U, S, V = Numpy.linalg.SVD (arr_data, full_matrices = falso)
print ("\ nfactor de la matriz creada por SVD:")
print ("\ nu =", u, "\ n \ ns =", s, "\ n \ nv =", v)



Se adjunta la pantalla de resultados, en la que puede ver la matriz original y el factor de esa matriz utilizando el método SVD.

Ejemplo 2

Aquí está el segundo ejemplo de este artículo en el que se aplica el mismo concepto pero en una matriz diferente que contiene diferentes valores. En la segunda línea del código, puede ver que hemos creado una matriz llamada "arr_val" con el numpy.método de matriz. La matriz contiene [7, 1, 2], [3, 7, 3] y [2, 4, 7] valores. Después de eso, se muestra la matriz original, por lo que puede ver fácilmente la diferencia entre la matriz original y el resultado generado. El numpy.linalg.El método SVD se aplica después en la matriz especificada, y se muestra el resultado.

Importar numpy
arr_val = numpy.Array ([[7, 1, 2], [3, 7, 3],
[2, 4, 7]], dtype = numpy.flotante32)
Imprimir ("Aquí está la matriz original:")
imprimir (arr_val)
U, S, V = Numpy.linalg.SVD (arr_val, full_matrices = falso)
print ("\ nfactor de la matriz creada por el método SVD:")
print ("\ nu =", u, "\ n \ ns =", s, "\ n \ nv =", v)



Aquí está la salida en la que puede ver la matriz original y el factor de esa matriz calculada por el método SVD.

Ejemplo 3

Aquí, una matriz diferente se almacena en "ARR_3rd", Y sus valores son [12, 3], [4, 7]. El resto del código de este programa es casi el mismo que el anterior. Puede comparar la salida generada por este código y la salida dada por los ejemplos anteriores. La salida difiere dependiendo de la matriz de entrada proporcionada con la forma y el tamaño.

Importar numpy
arr_3rd = numpy.Array ([[12, 3], [4, 7]], dtype = numpy.flotante32)
Imprimir ("Aquí está la matriz original:")
imprimir (arr_3rd)
U, S, V = Numpy.linalg.SVD (arr_3rd, full_matrices = falso)
print ("\ nfactor de la matriz creada por el método SVD:")
print ("\ nu =", u, "\ n \ ns =", s, "\ n \ nv =", v)



Aquí está el siguiente resultado:

Ejemplo 4

Este es el último ejemplo de este artículo, y aquí, estamos usando dos matrices 2D separadas. Veamos el código de línea por línea en la siguiente captura de pantalla.

Aquí, comenzamos con la importación de Numpy y Numpy.módulos Linalg que proporcionan toda la funcionalidad requerida para álgebra lineal. Después de eso, se crean dos matrices 2D con el Numpy.aleatorio.Método RANDN. Estas matrices se almacenan en variables "First_arr" y "Seconc_arr". Después de eso, se usa una declaración de impresión para mostrar las matrices originales. La línea de codificación para eso es "Imprimir (" Aquí están las matrices originales: \ n ", First_arr)" y "Imprimir (" Aquí están las matrices originales: \ n ", Second_arr)".

Ahora, hemos usado el GNL.Método SVD en la matriz dada y establecer la opción Full_Matrices en "Verdadero". En la última sección, se utilizan cuatro declaraciones de impresión más. La primera declaración de impresión mostrará el texto "Aquí puede ver la forma de todos los valores devueltos:", y el resto de las declaraciones de impresión mostrarán la forma de los valores devueltos por la función ejecutada. Vea la captura de pantalla completa del código a continuación:

importar numpy
importar numpy.linalg como GNG
First_arr = Numpy.aleatorio.Randn (2, 5) + 1J*Numpy.aleatorio.Randn (2, 5)
Second_arr = B = Numpy.aleatorio.Randn (2, 5, 7, 3) + 1J*Numpy.aleatorio.Randn (2, 5, 7, 3)
Imprimir ("Aquí están las matrices originales: \ n", First_arr)
Imprimir ("Aquí están las matrices originales: \ n", Second_arr)
u, s, vh = lng.SVD (first_arr, full_matrices = true)
Imprima ("Aquí puedes ver la forma de todos los valores devueltos: \ n")
imprimir ("u =", u.forma)
imprimir ("s =", s.forma)
imprimir ("vh =", vh.forma)



Las siguientes capturas de pantalla de salida completas del código anterior se adjuntan para su referencia:



Conclusión

SVD se utiliza ampliamente para resolver problemas en física, estadísticas, aprendizaje automático y otros campos. Hemos cubierto la definición y la sintaxis del método SVD en este breve ensayo. Además, se utilizan varias instancias de las descomposiciones de matriz 2*2 y 3*3 para ilustrar el punto principal de la publicación. Puede usar esta página como recurso para aprender los fundamentos del enfoque SVD y por qué se emplea con tanta frecuencia hoy en día.