La biblioteca Numpy nos permite realizar diversas operaciones que deben realizarse en estructuras de datos a menudo utilizadas en el aprendizaje automático y la ciencia de datos como vectores, matrices y matrices. Solo mostraremos las operaciones más comunes con Numpy que se utilizan en muchas tuberías de aprendizaje automático. Finalmente, tenga en cuenta que Numpy es solo una forma de realizar las operaciones, por lo que las operaciones matemáticas que mostramos son el foco principal de esta lección y no el paquete Numpy en sí mismo. Empecemos.
¿Qué es un vector??
Según Google, un vector es una cantidad que tiene dirección y magnitud, especialmente para determinar la posición de un punto en el espacio en relación con otro.
Los vectores son muy importantes en el aprendizaje automático, ya que no solo describen la magnitud sino también la dirección de las características. Podemos crear un vector en Numpy con el siguiente fragmento de código:
importar numpy como np
row_vector = np.Array ([1,2,3])
imprimir (Row_vector)
En el fragmento de código anterior, creamos un vector de fila. También podemos crear un vector de columna como:
importar numpy como np
col_vector = np.Array ([[1], [2], [3]])
imprimir (col_vector)
Haciendo una matriz
Una matriz puede entenderse simplemente como una matriz bidimensional. Podemos hacer una matriz con Numpy haciendo una matriz multidimensional:
matriz = np.Array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Imprimir (matriz)
Aunque la matriz es exactamente similar a la matriz multidimensional, No se recomienda la estructura de datos de la matriz Debido a dos razones:
Usando una matriz escasa
Para recordar, una matriz escasa es la que la mayoría de los elementos son cero. Ahora, un escenario común en el procesamiento de datos y el aprendizaje automático es procesar matrices en las que la mayoría de los elementos son cero. Por ejemplo, considere una matriz cuyas filas describan cada video en YouTube y columnas representa a cada usuario registrado. Cada valor representa si el usuario ha visto un video o no. Por supuesto, la mayoría de los valores en esta matriz serán cero. El ventaja con la matriz escasa es que no almacena los valores que son cero. Esto da como resultado una gran ventaja computacional y optimización de almacenamiento.
Creemos una matriz de chispa aquí:
de scipy importación
original_matrix = np.Array ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
escaso_matrix = escaso.CSR_MATRIX (original_matrix)
Imprimir (SPARSE_MATRIX)
Para comprender cómo funciona el código, veremos la salida aquí:
En el código anterior, utilizamos una función de Numpy para crear un Hilera escasa comprimida matriz donde los elementos distintos de cero se representan utilizando los índices basados en cero. Hay varios tipos de matriz dispersa, como:
No nos sumergiremos en otras matrices dispersas aquí, pero sabemos que cada uno de sus usos es específico y que nadie puede ser denominado "mejor".
Aplicar operaciones a todos los elementos vectoriales
Es un escenario común cuando necesitamos aplicar una operación común a múltiples elementos vectoriales. Esto se puede hacer definiendo una lambda y luego vectorizando lo mismo. Veamos algún fragmento de código para el mismo:
matriz = np.formación([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vectorizado_mul_5 = np.Vectorizar (MUL_5)
vectorizado_mul_5 (matriz)
Para comprender cómo funciona el código, veremos la salida aquí:
En el fragmento de código anterior, utilizamos la función Vectorize que forma parte de la biblioteca Numpy, para transformar una definición de lambda simple en una función que puede procesar todos y cada uno de los elementos del vector. Es importante tener en cuenta que Vectorize es Solo un bucle sobre los elementos y no tiene ningún efecto en el rendimiento del programa. Numpy también permite radiodifusión, lo que significa que en lugar del código complejo anterior, podríamos haber hecho simplemente:
matriz * 5
Y el resultado habría sido exactamente el mismo. Quería mostrar la parte compleja primero, de lo contrario, habrías omitido la sección!
Media, varianza y desviación estándar
Con Numpy, es fácil realizar operaciones relacionadas con estadísticas descriptivas de vectores. La media de un vector se puede calcular como:
notario público.media (matriz)
La varianza de un vector se puede calcular como:
notario público.var (matriz)
La desviación estándar de un vector se puede calcular como:
notario público.STD (matriz)
La salida de los comandos anteriores en la matriz dada se da aquí:
Transposición de una matriz
La transposición es una operación muy común que escuchará cuando esté rodeado de matrices. La transposición es solo una forma de cambiar los valores de columna y fila de una matriz. Tenga en cuenta que un El vector no se puede transponerse Como vector, es solo una colección de valores sin que esos valores se clasifiquen en filas y columnas. Tenga en cuenta que la conversión de un vector de fila a un vector de columna no se transpone (según las definiciones de álgebra lineal, que está fuera del alcance de esta lección).
Por ahora, encontraremos la paz con solo transponer una matriz. Es muy simple acceder a la transposición de una matriz con Numpy:
matriz.T
La salida del comando anterior en la matriz dada se da aquí:
La misma operación se puede realizar en un vector de fila para convertirlo en un vector de columna.
Aplanando una matriz
Podemos convertir una matriz en una matriz unidimensional si deseamos procesar sus elementos de manera lineal. Esto se puede hacer con el siguiente fragmento de código:
matriz.aplanar()
La salida del comando anterior en la matriz dada se da aquí:
Tenga en cuenta que la matriz Flatten es una matriz unidimensional, simplemente lineal en la moda.
Calculando valores propios y vectores propios
Los vectores propios se usan muy comúnmente en paquetes de aprendizaje automático. Entonces, cuando se presenta una función de transformación lineal como una matriz, entonces X, los vectores propios son los vectores que cambian solo en escala del vector pero no en su dirección. Podemos decir eso:
Xv = γv
Aquí, X es la matriz cuadrada y γ contiene los valores propios. Además, V contiene los vectores propios. Con Numpy, es fácil calcular los valores propios y los vectores propios. Aquí está el fragmento de código donde demostramos lo mismo:
Evaluados, evectores = NP.linalg.Eig (matriz)
La salida del comando anterior en la matriz dada se da aquí:
Productos de puntos de los vectores
Productos DOT de vectores es una forma de multiplicar 2 vectores. Te cuenta sobre ¿Cuánto de los vectores están en la misma dirección?, A diferencia del producto cruzado que te dice lo contrario, cuán poco son los vectores en la misma dirección (llamada ortogonal). Podemos calcular el producto DOT de dos vectores como se da en el fragmento de código aquí:
a = np.Array ([3, 5, 6])
B = NP.Array ([23, 15, 1])
notario público.punto (a, b)
La salida del comando anterior en las matrices dadas se da aquí:
Agregar, restar y multiplicar matrices
Sumar y restar múltiples matrices es una operación bastante sencilla en matrices. Hay dos formas en que esto se puede hacer. Veamos el fragmento de código para realizar estas operaciones. Con el fin de mantener esto simple, usaremos la misma matriz dos veces:
notario público.Agregar (matriz, matriz)
A continuación, se pueden restar dos matrices como:
notario público.Restar (matriz, matriz)
La salida del comando anterior en la matriz dada se da aquí:
Como se esperaba, cada uno de los elementos en la matriz se agrega/se restas con el elemento correspondiente. Multiplicar una matriz es similar a encontrar el producto DOT como lo hicimos anteriormente:
notario público.punto (matriz, matriz)
El código anterior encontrará el verdadero valor de multiplicación de dos matrices, dado como:
matriz * matriz
La salida del comando anterior en la matriz dada se da aquí:
En esta lección, pasamos por muchas operaciones matemáticas relacionadas con vectores, matrices y matrices que se utilizan comúnmente procesamiento de datos, estadísticas descriptivas y ciencia de datos. Esta fue una lección rápida que cubría solo las secciones más comunes e importantes de la amplia variedad de conceptos, pero estas operaciones deberían dar una muy buena idea sobre qué se pueden realizar todas las operaciones mientras se trata de estas estructuras de datos.
Comparta sus comentarios libremente sobre la lección en Twitter con @linuxhint y @sbmaggarwal (ese soy yo!).