Vetores de python, matrizes e matrizes com Numpy

Vetores de python, matrizes e matrizes com Numpy
Nesta lição, veremos algumas dicas e truques legais para brincar com vetores, matrizes e matrizes usando biblioteca Numpy em Python. Esta lição é um ponto de partida muito bom se você estiver começando a ciência de dados e precisar de alguma visão geral da matemática introdutória desses componentes e como podemos brincar com eles usando o Numpy no código.

A Numpy Library nos permite executar várias operações que precisam ser feitas em estruturas de dados frequentemente usadas em aprendizado de máquina e ciência de dados, como vetores, matrizes e matrizes. Só mostraremos as operações mais comuns com a Numpy, que são usadas em muitos pipelines de aprendizado de máquina. Por fim, observe que Numpy é apenas uma maneira de executar as operações, então, as operações matemáticas que mostramos são o foco principal desta lição e não o próprio pacote Numpy. Vamos começar.

O que é um vetor?

Segundo o Google, um vetor é uma quantidade com direção e magnitude, especialmente como determinar a posição de um ponto no espaço em relação a outro.

Os vetores são muito importantes no aprendizado de máquina, pois não apenas descrevem a magnitude, mas também a direção dos recursos. Podemos criar um vetor em Numpy com o seguinte snippet de código:

importar numpy como np
row_vector = np.Array ([1,2,3])
Imprimir (row_vector)

No trecho de código acima, criamos um vetor de linha. Também podemos criar um vetor de coluna como:

importar numpy como np
col_vector = np.Array ([[1], [2], [3]]))
Imprimir (col_vector)

Fazendo uma matriz

Uma matriz pode ser simplesmente entendida como uma matriz bidimensional. Podemos fazer uma matriz com Numpy fazendo uma matriz multidimensional:

matriz = np.Array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Impressão (Matrix)

Embora a matriz seja exatamente semelhante à matriz multidimensional, A estrutura de dados da matriz não é recomendada devido a dois motivos:

  1. A matriz é o padrão quando se trata do pacote Numpy
  2. A maioria das operações com matrizes de retornos Numpy e não uma matriz

Usando uma matriz esparsa

Para lembrar, uma matriz esparsa é aquela em que a maioria dos itens é zero. Agora, um cenário comum no processamento de dados e no aprendizado de máquina está processando matrizes nas quais a maioria dos elementos é zero. Por exemplo, considere uma matriz cujas linhas descrevem cada vídeo no YouTube e colunas representa cada usuário registrado. Cada valor representa se o usuário assistiu a um vídeo ou não. Obviamente, a maioria dos valores nesta matriz será zero. O vantagem com matriz esparsa é que não armazena os valores que são zero. Isso resulta em uma enorme vantagem computacional e otimização de armazenamento também.

Vamos criar uma matriz Spark aqui:

De Scipy Import Sparse
original_matrix = np.Array ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
Sparse_matrix = esparso.csr_matrix (original_matrix)
Imprimir (Sparse_Matrix)

Para entender como o código funciona, veremos a saída aqui:

No código acima, usamos uma função de Numpy para criar um Linha esparsa compactada Matrix, onde elementos diferentes de zero são representados usando os índices baseados em zero. Existem vários tipos de matriz esparsa, como:

  • Coluna esparsa compactada
  • Lista de listas
  • Dicionário de chaves

Não estaremos mergulhando em outras matrizes esparsas aqui, mas sabemos que cada um deles é usado é específico e ninguém pode ser denominado como 'melhor'.

Aplicando operações a todos os elementos vetoriais

É um cenário comum quando precisamos aplicar uma operação comum a vários elementos vetoriais. Isso pode ser feito definindo um lambda e depois vetorizando o mesmo. Vamos ver algum trecho de código para o mesmo:

matriz = np.variedade([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vetorizado_mul_5 = np.Vectorize (Mul_5)
vetorizado_mul_5 (matriz)

Para entender como o código funciona, veremos a saída aqui:

No trecho de código acima, usamos a função Vectorize, que faz parte da biblioteca Numpy, para transformar uma definição simples de lambda em uma função que pode processar todos os elementos do vetor. É importante observar que o Vectorize é Apenas um loop sobre os elementos E isso não tem efeito no desempenho do programa. Numpy também permite transmissão, O que significa que, em vez do código complexo acima, poderíamos simplesmente ter feito:

Matrix * 5

E o resultado teria sido exatamente o mesmo. Eu queria mostrar a parte complexa primeiro, caso contrário você teria pulado a seção!

Média, variação e desvio padrão

Com Numpy, é fácil executar operações relacionadas a estatísticas descritivas sobre vetores. A média de um vetor pode ser calculada como:

NP.média (matriz)

A variação de um vetor pode ser calculada como:

NP.var (Matrix)

O desvio padrão de um vetor pode ser calculado como:

NP.std (matriz)

A saída dos comandos acima na matriz fornecida é dada aqui:

Transpondo uma matriz

Transposição é uma operação muito comum sobre a qual você ouvirá sempre que estiver cercado por matrizes. Transposição é apenas uma maneira de trocar valores colunares e de linha de uma matriz. Por favor, observe que um vetor não pode ser transposto Como um vetor é apenas uma coleção de valores sem que esses valores sejam categorizados em linhas e colunas. Observe que a conversão de um vetor de linha em um vetor de coluna não está transpondo (com base nas definições de álgebra linear, que está fora do escopo desta lição).

Por enquanto, encontraremos a paz apenas transpondo uma matriz. É muito simples acessar a transposição de uma matriz com Numpy:

matriz.T

A saída do comando acima na matriz especificada é dada aqui:

A mesma operação pode ser realizada em um vetor de linha para convertê -lo em um vetor de coluna.

Achatando uma matriz

Podemos converter uma matriz em uma matriz unidimensional, se desejarmos processar seus elementos de maneira linear. Isso pode ser feito com o seguinte snippet de código:

matriz.achaten ()

A saída do comando acima na matriz especificada é dada aqui:

Observe que a matriz achatada é uma matriz unidimensional, simplesmente linear na moda.

Calculando valores próprios e autovetores

Os vetores próprios são muito usados ​​em pacotes de aprendizado de máquina. Assim, quando uma função de transformação linear é apresentada como uma matriz, os vetores próprios x, os vetores são os vetores que mudam apenas na escala do vetor, mas não em sua direção. Nós podemos dizer que:

Xv = γV

Aqui, x é a matriz quadrada e γ contém os valores próprios. Além disso, V contém os autovetores. Com Numpy, é fácil calcular valores próprios e autovetores. Aqui está o trecho de código onde demonstramos o mesmo:

Avaliações, Evectors = NP.Linalg.Eig (Matrix)

A saída do comando acima na matriz especificada é dada aqui:

Produtos de pontos de vetores

Produtos de pontos de vetores são uma maneira de multiplicar 2 vetores. Diz a você sobre quanto dos vetores estão na mesma direção, Ao contrário do produto cruzado, o que lhe diz o contrário, quão pouco os vetores são na mesma direção (chamado ortogonal). Podemos calcular o produto DOT de dois vetores, conforme indicado no trecho de código aqui:

a = np.Array ([3, 5, 6])
b = np.Array ([23, 15, 1])
NP.ponto (a, b)

A saída do comando acima nas matrizes dadas é dada aqui:

Adicionando, subtraindo e multiplicando matrizes

Adicionar e subtrair matrizes múltiplas é uma operação bastante direta em matrizes. Existem duas maneiras pelas quais isso pode ser feito. Vejamos o snippet de código para executar essas operações. Com o objetivo de manter isso simples, usaremos a mesma matriz duas vezes:

NP.Adicionar (Matrix, Matrix)

Em seguida, duas matrizes podem ser subtraídas como:

NP.Subtrair (Matrix, Matrix)

A saída do comando acima na matriz especificada é dada aqui:

Como esperado, cada um dos elementos na matriz é adicionado/subtraído com o elemento correspondente. Multiplicar uma matriz é semelhante a encontrar o produto DOT, como fizemos anteriormente:

NP.DOT (Matrix, Matrix)

O código acima encontrará o verdadeiro valor de multiplicação de duas matrizes, dadas como:

Matrix * Matrix

A saída do comando acima na matriz especificada é dada aqui:

Conclusão

Nesta lição, passamos por muitas operações matemáticas relacionadas a vetores, matrizes e matrizes que são comumente usados ​​processamento de dados, estatística descritiva e ciência de dados. Esta foi uma lição rápida que abrange apenas as seções mais comuns e mais importantes da ampla variedade de conceitos, mas essas operações devem dar uma boa idéia sobre o que todas as operações podem ser executadas ao lidar com essas estruturas de dados.

Compartilhe seu feedback livremente sobre a lição no Twitter com @linuxhint e @sbmaggarwal (sou eu!).