Disfruta de nuestro contenido y eventos por un a√Īo a un precio especial

Antes: $179

Currency
$149/a√Īo
¡Suscríbete!

ūüĒ• Te quedan ūüĒ•

1D
7H
39M
27S

Podemos y debemos pensar a las matrices como transformaciones lineales

2/18
Recursos
Transcripción

Aportes 21

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Por si no entendieron . Lo que el profe quiso transmitir es que las matrices aplicadas a vectores se les puede ver como una transformacion lineal a ese vector . En este caso la transformacion es una rotacion en el sentido antihorario .

Explicación para los que se inclinan más por el fundamento matemático:
Sea AxB=C
El producto interno entre Anxm y Boxp d√≥nde n,o son las filas y m,p son las columnas, para que AxB pueda existir c√≥mo producto, se debe cumplir que n=o, y las dimensiones de la matriz resultante ¬© ser√° siempre nxp, entonces, si vas probando a l√°piz y papel con dimensiones que a ti se te ocurran (pares dimensionales que cumplan con la condicion de producto interno) te vas a dar cuenta que todas las operaciones tranforman, o bien a la primera matriz o a la segunda, la √ļnica excepci√≥n a esta regla, es que ambas matrices sean cuadradas, lo cu√°l nos deja la siguiente conclusi√≥n
Las matrices son intrínsecamente transformaciones lineales en dónde el espacio es transformado con ciertas excepciones

Sería genial ver a este profe en todos los cursos de machine learning.

Básicamente lo que hace el profe Sebastian es mostrarnos el resultado de la ecuación de un sistema de ecuaciones lineal con dos incógnitas A*x = b como se ve en la imagen. Donde A es la matriz [[-1,3], [2,-2]], x es el vector columna [[2],[1]] (graficado en azul) y b es el vector columna [[1], [2]] obtenido como respuesta (graficado en naranja).

El tiene que aplicar la funci√≥n flatten() porque la funci√≥n que √©l cre√≥ graficarVectores() no acepta vectores columna o matrices ‚Äúnormales‚ÄĚ.

Para los que estan haciendo la prectica en Windows debe ir %run ‚Äúfunciones_auxiliares\graficarVectores.ipynb‚ÄĚ

Para los que están trabajando con Google Colab, el método que uso para trabajar con archivos en carpetas internas es el siguiente:

Importar drive en el espacio de trabajo y vincular con su cuenta de google:

from google.colab import drive
drive.mount('/content/drive')

Aquí para vincular les pedirá un código de acceso que obtendrán del link que se les mostrará al momento de ejecutar el código. Con esto ya están listos para importar el archivo:

%run 'ubicacion archivo drive'

En mi caso para la función graficarVectores, lo encuentro así:

%run '/content/drive/My Drive/Mau/cursos/√Ālgebra Lineal Aplicada para Machine Learning/funciones_auxiliares/graficarVectores.ipynb'

Y listo, ya pueden trabajar con su función.

Matrices

  • Podemos ver a las matrices como transformaciones lineales del espacio sobre el que se aplican, es decir deforman los puntos del espacio sobre el que se aplican, traslad√°ndolos, alarg√°ndolos o rot√°ndolos.

Nota:
.flatten() ‚Üí convierte el vector o matriz en un vector fila

Notebook de la función para graficar:

# Recibir√° los vectores, los colores y el nivel de trasparencia con el cual trabajaremos 

def graficarVectores(vecs, cols, alpha = 1):
    
    # Agregamos el eje vertical. Este se cruzar√° en x = 0, el color ser√° gris y el orden de z ser√° 0 
    plt.axvline(x = 0, color = "grey", zorder = 0)
    # Agregamos el eje horizontal. Este se cruzar√° en y = 0, el color ser√° gris y el orden de z ser√° 0 
    plt.axhline(y = 0, color = "grey", zorder = 0)
    
    # Ahora ara cada uno de los vectores en el par√°metro 
    for i in range(len(vecs)):
        # Tomaremos que la x es la concatenación de esos valores como 0 0 que es lo que estamos tomando como punto de origen 
        # Después de agregar el 0 0 le concatenamos el vector i 
        x = np.concatenate([[0,0], vecs[i]])
        # Vamos a graficar y agregamos todas las coordenadas
        plt.quiver([x[0]],
                   [x[1]],
                   [x[2]],
                   [x[3]],
                   # Los √°ngulos estar√°n expresados en xy y la escuela de unidad ser√° xy 
                   angles = 'xy', scale_units = 'xy',
                   # La escala con la que graficaremos ser√° 1 
                   scale = 1,
                   color = cols[i],
                   alpha = alpha
                  )

Introducción:


A las matrices las podemos pensar como transformaciones lineales que cuando las aplicamos a un espacio o a un vector generan una transformación. La transformación en el caso de un vector podría ser cuando se estira, se achica o incluso cuando generamos una rotación.

Hola, si quieren correr el código desde Google colaboratory…

Para ubicarse en la carpeta donde esta el archivo ‚Äė01 - Matrices y transformaciones lineales.ipynb‚Äô qu en mi caso esta en ‚ÄėMy Drive/Platzi/Algebra Lineal aplicada para ML‚Äô, deben usar:

from google.colab import drive
drive.mount('/content/drive/')
%cd '/content/drive/My Drive/Platzi/Algebra Lineal aplicada para ML'

Y posteriormente suponiendo que la carpeta ‚Äėfunciones_auxiliares‚Äô este en la misma ubicaci√≥n, utilizan:

%run "./funciones_auxiliares/graficarVectores.ipynb"

Una **transformación lineal ** es básicamente una función, solo que toma como parámetro de entrada a un vector y devuelve como salida a otro vector.

Se dice que una matriz representa una transformación lineal, porque si multiplicas a una matriz por un vector, obtienes como resultado otro vector.

Código visto en clase:

# Importamos las bibliotecas

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

# Definimos una matriz 

A = np.array([[-1,3], [2,-2]])
print(A)

# Generamos un vector

vector = np.array([[2],[1]])
print(vector)

# Miramos la ruta en donde estamos
import os

os.getcwd()

# # Importamos nuestra función para graficar. 
%run ".\\Funciones auxiliares\graficarVectores.ipynb"

# Mostramos que es lo que tenemos como vector 
print(vector)

# Esta función nos devolverá como una fila nuestro vector que estaba definido como una columna   
print(vector.flatten())

# Imprimimos la matriz normal 
print(A)

# Ahora vemos como la función flatten nos muestra toda la matriz como una sola fila
print(A.flatten())

# Graficamos vectores con nuestra función y le daremos como parámetro el vector flatten.  
graficarVectores([vector.flatten()], cols = 'blue')

plt.xlim(-0.5, 3)
plt.ylim(-0.5, 2)


# Definimos nuestro vector transformado
vector_transformado = A.dot(vector)
print(vector_transformado)

# Graficamos vectores con nuestra función, de daremos como parámetro el vector flatten y el vector transformado 

graficarVectores([vector.flatten(), vector_transformado.flatten()],
                cols = ['blue', 'orange'])
plt.xlim(-0.5, 2.5)
plt.ylim(-0.5, 2.5)

# Obtenemos el determínate de una nuestra trasformación 
print(np.linalg.det(A))

# Obtenemos las normas de los vectores. 
print(np.linalg.norm(vector))
print(np.linalg.norm(vector_transformado))






Hola, estoy usando Google Colab, tengo el mismo código del vídeo, pero no puedo graficar nada, alguien me puede ayudar? Este es el archivo:

https://colab.research.google.com/drive/1WYz5wln5xVu7vxrvE6DO9C_q5wXTuAEi

La función graficarVectores que sale en el video, le falta una parte: color = cols[i]
def graficarVectores(vecs, cols, alpha = 1):

plt.axvline(x = 0, color = "grey", zorder = 0)
plt.axhline(y = 0, color = "grey", zorder = 0)

for i in range(len(vecs)):
    x = np.concatenate([[0,0], vecs[i]])
    plt.quiver([x[0]],
               [x[1]],
               [x[2]],
               [x[3]],
               angles = 'xy', scale_units = 'xy',
               scale = 1,
               color = cols[i],
               alpha = alpha
              )

Así es como quedaría al final para que se ejecute correctamente.

para entender mejor todas las implicaciones de esto les recomiendo este video

tambi√©n este en espa√Īol solo hay que buscarlo

Recomiendo el canal de youtube 3blue1brown. Tiene videos muy buenos como este para el cambio de base (parte de lo que vimos en esta clase).

Este conjunto de videos me ayudo a tomar ritmo de lo que el profesor explica!
https://www.youtube.com/watch?v=kjBOesZCoqc&ab_channel=3Blue1Brown

No se si sea porque yo trabajo en Ubuntu, pero me marcaba error al tratar de importar la funci√≥n ‚ÄėgraficarVector‚Äô como lo hace el profe, as√≠ que yo lo pude hacer con la l√≠nea:

%run ‚Äė./Funciones_auxiliares/my_functions.ipynb‚Äô

Suponeiendo que ‚Äėmy_functions.ipynb‚Äô esta en la carpeta ‚ÄėFunciones_auxiliares‚Äô

Yo utilice este código en mac para que tomara la carpeta de funciones, espero y le sirva.
%run ‚Äú‚Ķ//funciones_auxiliares/graficarVectores.ipynb‚ÄĚ