Ciência de Dados

Vetores, matrizes e matrizes Python com NumPy

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

A biblioteca NumPy nos permite realizar 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. Mostraremos apenas as operações mais comuns com NumPy, que são usadas em muitos pipelines de aprendizado de máquina. Finalmente, observe que NumPy é apenas uma forma de realizar as operações, portanto, as operações matemáticas que mostramos são o foco principal desta lição e não o pacote NumPy em si. Vamos começar.

O que é um vetor?

De acordo com o Google, um vetor é uma quantidade que tem direção e magnitude, especialmente para 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 eles 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.matriz ([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.matriz ([[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 criando uma matriz multidimensional:

matriz = np.matriz ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
imprimir (matriz)

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

  1. O array é o padrão quando se trata do pacote NumPy
  2. A maioria das operações com NumPy retorna matrizes e não uma matriz

Usando uma matriz esparsa

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

Vamos criar uma matriz de faísca aqui:

de importação scipy esparso
original_matrix = np.matriz ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
sparse_matrix = sparse.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 do NumPy para criar um Linha esparsa comprimida matriz onde elementos diferentes de zero são representados usando os índices baseados em zero. Existem vários tipos de matriz esparsa, como:

Não vamos mergulhar em outras matrizes esparsas aqui, mas sabemos que cada um de seus usos é específico e ninguém pode ser denominado como 'melhor'.

Aplicação de operações a todos os elementos do vetor

É um cenário comum quando precisamos aplicar uma operação comum a vários elementos do vetor. Isso pode ser feito definindo um lambda e, em seguida, vetorizando o mesmo. Vamos ver alguns trechos de código para o mesmo:

matriz = np.variedade([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vetorizar (mul_5)
vectorized_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 vetorizar, que faz parte da biblioteca NumPy, para transformar uma definição lambda simples em uma função que pode processar todos e cada um dos elementos do vetor. É importante notar que vetorizar é apenas um loop sobre os elementos e não tem efeito sobre o 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:

matriz * 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, Variância e Desvio Padrão

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

np.média (matriz)

A variância de um vetor pode ser calculada como:

np.var (matriz)

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

np.std (matriz)

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

Transpondo uma matriz

A transposição é uma operação muito comum da qual você ouvirá falar sempre que estiver rodeado por matrizes. A transposição é apenas uma forma de trocar valores de coluna e linha de uma matriz. 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 converter um vetor linha em vetor coluna não é transposto (com base nas definições de álgebra linear, que está fora do escopo desta lição).

Por enquanto, vamos encontrar 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 fornecida é fornecida aqui:

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

Achatando uma matriz

Podemos converter uma matriz em um array unidimensional se quisermos processar seus elementos de forma linear. Isso pode ser feito com o seguinte snippet de código:

matriz.achatar ()

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

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

Calculando Valores Próprios e Vectores Próprios

Autovetores são muito comumente usados ​​em pacotes de aprendizado de máquina. Então, quando uma função de transformação linear é apresentada como uma matriz, então X, vetores próprios 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 autovalores. Além disso, v contém os vetores próprios. Com NumPy, é fácil calcular valores próprios e vetores próprios. Aqui está o snippet de código onde demonstramos o mesmo:

avaliações, evetores = np.linalg.eig (matriz)

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

Produtos de ponto de vetores

Produtos de ponto de vetores é uma maneira de multiplicar 2 vetores. Te fala sobre quanto dos vetores estão na mesma direção, em oposição ao produto vetorial que diz o oposto, quão pouco os vetores estão na mesma direção (chamado ortogonal). Podemos calcular o produto escalar de dois vetores conforme fornecido no snippet de código aqui:

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

A saída do comando acima nas matrizes fornecidas é fornecida aqui:

Adicionando, subtraindo e multiplicando matrizes

Adicionar e subtrair várias matrizes é uma operação bastante simples em matrizes. Existem duas maneiras de fazer isso. Vejamos o trecho de código para realizar essas operações. Para manter isso simples, usaremos a mesma matriz duas vezes:

np.adicionar (matriz, matriz)

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

np.subtrair (matriz, matriz)

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

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

np.ponto (matriz, matriz)

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

matriz * matriz

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

Conclusão

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

Por favor, compartilhe seus comentários livremente sobre a lição no Twitter com @linuxhint e @sbmaggarwal (sou eu!).

Top jogos do Oculus App Lab
Se você é proprietário de um fone de ouvido Oculus, deve estar informado sobre o carregamento lateral. Sideload é o processo de instalação de conteúdo...
Os 10 melhores jogos para jogar no Ubuntu
A plataforma Windows tem sido uma das plataformas dominantes para jogos devido à grande porcentagem de jogos que estão sendo desenvolvidos hoje para o...
5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...