An efficient aggregation based symbolic representation
Project description
fABBA
An efficient aggregation based symbolic representation for temporal data
fABBA is a fast and accurate symbolic representation methods, which allows for data compression and mining. By replacing the k-means clustering used in ABBA with a sorting-based aggregation technique, fABBA thereby avoid repeated within-cluster-sum-of-squares computations, and the computational complexity is significantly reduced. Also, in contrast to the ABBA, fABBA does not require the number of time series symbols to be specified in advance while achieves competing performance against ABBA and other symbolic methods.
Install
To install the current release
pip install fABBA
Apply series compression
>>> import numpy as np
>>> from fABBA.symbolic_representation import fabba_model
>>> np.random.seed(1)
>>> N = 100
>>> ts = np.random.rand(N)
>>> fabba = fabba_model(tol=0.1, alpha=0.5, sorting='lexi', scl=1, verbose=1, max_len=np.inf, string_form=True)
>>> print(fabba)
fABBA({'_alpha': 0.5, '_sorting': '2-norm', '_tol': 0.1, '_scl': 1, '_verbose': 1, '_max_len': inf, '_string_form': True, '_n_jobs': 1})
>>> string = fabba.fit_transform(ts)
>>> print(string)
&"+"!'$#(",!")*$")%!"$-!%&#!#$#(#$."&!%!#/%!#!*0'!1!
>>> inverse_ts = fabba.inverse_transform(symbolic_tsf, ts[0]) # reconstructed time series
Apply adaptively polygonal chian approximation
>>> from fABBA.chainApproximation import compress
>>> from fABBA.chainApproximation import inverse_compress
>>> np.random.seed(1)
>>> N = 100
>>> ts = np.random.rand(N)
>>> pieces = compress(ts, tol=0.1)
>>> inverse_ts = inverse_compress(pieces, ts[0])
Apply aggregated digitization
>>> from fABBA.digitization import digitize
>>> from fABBA.digitization import inverse_digitize
>>> string, parameters = digitize(pieces, alpha=0.1, sorting='2-norm', scl=1) # pieces from aforementioned compression
>>> print(''.join(string))
,"-#!.%&/#0'"12(#34$&%5!67)$*(+8*9:";!<'+=>!)$?@A!B!
>>> inverse_pieces = inverse_digitize(string, parameters)
>>> inverse_ts = inverse_compress(inverse_pieces, ts[0])
Image compression
>>> from fABBA.load_datasets import load_images
>>> from fABBA.symbolic_representation import image_compress
>>> from fABBA.symbolic_representation import image_decompress
>>> from fABBA.symbolic_representation import fabba_model
>>> from cv2 import resize
>>> img_samples = load_images(shape=(100,100)) # load fABBA image test samples
>>> img = resize(img_samples[0], (100, 100)) # select the first image for test
>>> fabba = fabba_model(tol=0.1, alpha=0.01, sorting='2-norm', scl=1, verbose=1, max_len=np.inf, string_form=True)
>>> strings = image_compress(fabba, img)
>>> inverse_img = image_decompress(fabba, strings)
Authors
Stefan Guettel stefan.guettel@manchester.ac.uk
Xinye Chen xinye.chen@manchester.ac.uk
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fABBA-0.0.8-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9ea517994310693be2c52612f4a803157ec8b4bee1904fd184313ce16ab291a |
|
MD5 | 09f2e8663fcf715821bfcdf52ec1ce1e |
|
BLAKE2b-256 | ee83fdb42c7e8c80d6f51cc70ad94338e335e70fa6ae5d818d7de92723aff3d8 |