The k-nearest neighbor permutation entropy [1] extends the fundamental premise of investigating
the relative ordering of time series elements [2] or image pixels [3] inaugurated by
permutation entropy to unstructured datasets. This method builds upon nearest neighbor graphs to establish neighborhood
relations among data points and uses random walks over these graphs to extract ordinal patterns and their distribution,
thereby defining the
If you have used knnpe
in a scientific publication, we would appreciate citations to the following reference:
- L. G. J. M. Voltarelli, A. A. B. Pessa, L. Zunino, R. S. Zola, E. K. Lenzi, M. Perc, H. V. Ribeiro, Characterizing unstructured data with the nearest neighbor permutation entropy, Chaos 34, 053130 (2024). arXiv:2403.13122
@article{voltarelli2024characterizing,
title = {Characterizing unstructured data with the nearest neighbor permutation entropy},
author = {L. G. J. M. Voltarelli, A. A. B. Pessa, L. Zunino, R. S. Zola, E. K. Lenzi, M. Perc, H. V. Ribeiro},
journal = {Chaos},
volume = {34},
pages = {053130},
year = {2024},
doi = {10.1063/5.0209206},
}
knnpe
uses OpenMP and GNU Scientific Library (GSL)
to implement a parallelized numerically efficient random walk function. This function is written in C and it is integrated with our
Python module via the ctypes library. To use this function, you must have OpenMP and GSL installed before installing knnpe
.
In Ubuntu/Debian, you can install these dependencies via apt:
sudo apt install build-essential
sudo apt install libgsl-dev
sudo apt install libomp-dev
If these dependencies are not available, knnpe
will use a native Python function to do the random walks. This function is also parallelized and may work nicely for most applications; still, it is significantly slower than its C counterpart. For large datasets, we strongly recommend using the C version.
If all dependencies are available, knnpe
can be installed via:
pip install git+https://github.com/hvribeiro/knnpe
or
git clone https://github.com/hvribeiro/knnpe.git
cd knnpe
pip install -e .
If all dependencies are not available, you can use the PyPI version via:
pip install knnpe
Implementation of the
The function knn_permutation_entropy of knnpe
calculates
import numpy as np
from knnpe import knn_permutation_entropy
data = np.random.normal(size=(100,3))
knn_permutation_entropy(data)
The last column in data corresponds to
import numpy as np
from knnpe import knn_permutation_entropy
data = np.random.normal(size=(100,4))
knn_permutation_entropy(data)
The function knn_permutation_entropy has the following parameters:
- data : ndarray
- Input array containing unstructured data points, where each row is in the form [x, y, value].
- d : int, optional
- The embedding dimension for the entropy calculation (default is 3).
- tau : int, optional
- The embedding delay for the entropy calculation (default is 1).
- p : float, optional
- Parameter that controls the bias of immediately revisiting a node in the walk (default is 10). It is named {\\lambda} in the article.
- q : float, optional
- Parameter that controls the bias of moving outside the neighborhood of the previous node (default is 0.001). It is named {\\beta} in the article.
- random_walk_steps : int, optional
- The number of steps in each random walk (default is 10).
- num_walks : int, optional
- The number of random walk samples to start from each node (default is 10).
- n_neighbors : int or array-like, optional
- The number of neighbors for constructing the k-nearest neighbor graph (default is 25).
- nthreads : int, optional
- The number of parallel threads for the computation (default is -1, which uses all available cores).
- hide_bar : bool, optional
- If True, the progress bar is not displayed (default is False).
- metrics : bool, optional
- If True, calculates graph density and largest component fraction (default is False).
- complexity : bool, optional
- If True, also calculates the knn permutation complexity.
We provide a notebook
illustrating how to use knnpe
and further information we refer to the knnpe's documentation
Pull requests addressing errors or adding new functionalities are always welcome.
[1] | L. G. J. M. Voltarelli, A. A. B. Pessa, L. Zunino, R. S. Zola, E. K. Lenzi, M. Perc, H. V. Ribeiro. Characterizing unstructured data with the nearest neighbor permutation entropy. Chaos, (Accepted, 2024). |
[2] | C. Bandt, B. Pompe. Permutation entropy: A Natural Complexity Measure for Time Series. Physical Review Letters 88, 174102 (2002). |
[3] | H. V. Ribeiro, L. Zunino, E. K. Lenzi, P. A. Santoro, R. S. Mendes. Complexity-Entropy Causality Plane as a Complexity Measure for Two-Dimensional Patterns. PLOS ONE 7, e40689 (2012). |