NumPy Autocorrelation

Vaibhav Vaibhav 20 junho 2021
NumPy Autocorrelation

Na ciência de dados, as variáveis ​​de um conjunto de dados podem estar relacionadas umas às outras de uma forma ou de outra. A relação pode ser diretamente proporcional ou indiretamente proporcional. Uma simples mudança em uma variável pode alterar alguma variável ligeiramente ou talvez, drasticamente. Esse fenômeno é conhecido como correlação.

A autocorrelação se refere a uma correlação entre um conjunto de sinais de tempo com uma versão desatualizada ou antiga de si mesmo. Os dois conjuntos de sinais de tempo têm alguma diferença de tempo entre eles.

Calcular autocorrelação em NumPy

A robusta biblioteca de dados científicos, NumPy, tem uma função embutida, correlate(), que pode ser usada para encontrar uma correlação entre duas sequências 1D. Ele aceita duas matrizes 1D e um tipo de modo.

O tipo de modo pode ser valid, same, e full, e este parâmetro é opcional. O valor padrão para este parâmetro é valid.

Para saber mais sobre esta função, consulte os documentos oficiais

import numpy

myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
myArray = numpy.array(myArray)
result = numpy.correlate(myArray, myArray, mode="full")
result = result[result.size // 2 :]
print(result)

Resultado:

[385 330 276 224 175 130  90  56  29  10]

No código acima, primeiro definimos uma lista de números e depois a convertemos em um array NumPy usando o método array() do NumPy. Em seguida, chamamos nosso método de interesse de correlate() para calcular a autocorrelação de nossos dados. Estamos usando o modo full para os cálculos.

Os resultados são armazenados em uma variável result e então fatiados. A parte do fatiamento é crucial uma vez que o método correlate() retorna um array de tamanho 2 * length de nosso array - 1, e os valores de nosso interesse estão na segunda metade, isto é, [(result.size // 2), result.size).

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.