Note
hottbox
is under active development, therefore, if you want to have a look
at the list of provisional changes for the next official release, visit
CHANGELOG on develop branch.
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[x] Copy button in docs puts content into clipboard
[x] Makefile
utilises pipenv
[x] Better structure of Makefile
[x] Compatibility with pandas==1.0.0
. Deprecation of as_matrix()
in favour of values
[x] Compatibility with future versions of numpy
. Deprecation of non-tuple sequence for multidimensional indexing.
[x] CMTF
- An algorithm for Coupled Matrix and Tensor factorization for two Tensors
of order n and 2 with respect to a specified rank
[x] RandomisedCPD
- An algorithm for Randomised Canonical Polyadic Decomposition.
[x] Parafac2
- An algorithm for PARAFAC2 model computed via ALS
[x] TelVI
and TelVAC
- Algorithms under Tensor Ensemble Learning (TEL) framework
[x] Various utils for generations and validation of multi-dimensional arrays
[x] Toggle button into code examples in API documentation. It hides python prompts and output, making copying samples much easier.
[x] New look of our documentation page which is now based on ``guzzle_sphinx_theme` <https://github.com/guzzle/guzzle_sphinx_theme>`_
[x] New structure of documentation, each method or class resides in a separate webpage (thanks to sphinx templating).
[x] Custom Exceptions that are more appropriate for the structure of hottbox
[x] LS-STM (least squares support tensor machine) for classification
[x] Auto deployment of the documentation that reflects source code at the develop
branch
[x] Source files and utils to that make setup of development environment easier
[x] Tools to convert multi-index pandas dataframe into a Tensor
and vise versa.
[x] Quick construction of generic objects of Tensor
, TensorCPD
, TensorTKD
and TensorTT
classes.
[x] Class Mode
for meta information about data modes of for tensor representations. It is stored in _modes
as list.
[x] Class State
that tracks data manipulation operation applied to Tensor
. It is stored in _state
.
[x] Option for creating a Tensor
in the unfolded form.
[x] Methods for (re)setting mode names and the corresponding indices for Tensor
[x] Mode description (and the corresponding methods) for TensorCPD
, TensorTKD
and TensorTT
classes by analogy with the Tensor
class
[x] Parameter keep_meta
to decompose
methods for the cpd and tucker type decompositions. Based on its value, meta information of the modes of tensor
to be decomposed can be extracted and assigned to the TensorCPD
and TensorTKD
respectively.
[x] Direct summation and comparison of Tensor
objects (redefined __add__
, __eq__
)
[x] Direct summation and comparison of TensorCPD
and TensorTKD
object (redefined __add__
, __eq__
)
[x] Defined __str__
and __repr__
for Tensor
, TensorCPD
, TensorTKD
and TensorTT
[x] Defined __repr__
for tensor decomposition algorithms.
[x] Kolda folding and unfolding
[x] Vectorisation method for a Tensor
class
[x] Restrictions on methods fold
, unfold
and mode_n_product
of Tensor
. Whether they can be called is determined by the current state of the Tensor
object.
[x] Each mode of a Tensor
there is characterised by a corresponding Mode
object with meta information
[x] Mode names for the Tensor
constructor should be passed as list instead of OrderedDict. These names are used to create Mode
objects which are stored in a list Tensor._modes
[x] Property reconstruct
of TensorCPD
, TensorTKD
and TensorTT
classes is now a method (should have been in the first place). Also it take optional parameter keep_mata
for extraction of meta information about modes
[x] describe
functionality is now implemented by __str__
. Instead, describe
provides some statistics of the Tensor
by analogy with pandas
[x] Parameter ft_shape
from the TensorTT
constructor
[x] Parameter ft_shape
and the corresponding attribute from the Tensor
constructor.
[x] Parameter mode_description
from constructors for all tensor decomposition algorithms
[x] Attribute _mode_names
from the Tensor
[x] Fix copy methods for TensorCPD
and TensorTKD
due to new attributes
copy
method for the core tensor structures
describe
method that describes an instance of Tensor
class
Mode descriptions for the modes of Tensor
through the use of OrderedDict. Modes can also be renamed
Input validation for constructors for Tensor
, TensorCPD
, TensorTKD
, TensorTT
Input validation for input data for decompose
method for all tensor decomposition algorithms
Setup CI using Travis, AppVeyor and Coveralls
Unit tests using pytest for all available modules
Objects of Tensor
, TensorCPD
, TensorTKD
, TensorTT
classes can only be created from numpy arrays
For all tensor representation all their data values can (should) only be accessed through corresponding properties.
The original shape of the tensor can be defined during object creation of Tensor
class
super_diag_tensor
requires to pass a shape of desired tensor instead of its order
reconstruct
was changing the original core so it was not possible to call it several times in a row
Incorrect size of a produced factor matrix when its computation is skipped in decompose
for HOSVD
and HOOI
classes
Core operations of tensor algebra
Classes for different tensor representations (Tensor
, TensorCPD
, TensorTKD
, TensorTT
)
Functions for computing special types of tensors (super_diag_tensor
, residual_tensor
)
Implementation of the most fundamental tensor decompositions (CPD
, HOSVD
, HOOI
,TTSVD
)
Several methods for computing metrics of tensor decompositions
Functions for estimating optimal Kruskal rank and computing multi-linear rank of a Tensor