All notable changes to this project will be documented in this file.
Click to see pre-2.0 changelog entries
- Remove
scikit-learn
validation constraints fromIndependentFunctionTransformer
. (#237)
- Set
max_nbytes=None
to fix read-only buffer source array error injoblib.Parallel
(see scikit-learn/scikit-learn#7981). (#235) - Added
sequentia.preprocessing
module withsklearn.preprocessing
compatibility. (#234) - Added
sequentia.pipeline
module forsklearn.pipeline
compatibility. (#234)
- Upgrade
sklearn
version specifier from>=0.22
to>=1.0
. (#234) - Upgrade development status classifier to stable. (#233)
- Fix
CategoricalHMM
andGaussianMixtureHMM
parameter defaults forparams
/init_params
being modified. (#231) - Fix
CategoricalHMM
andGaussianMixtureHMM
unfreeze()
callingsuper().freeze()
instead ofsuper().unfreeze()
. (#231) - Fix serialization/deserialization for
_KNNMixin
whenweighting=None
. (#231) - Add unit tests. (#231)
- Change
load_digits
numbers
parameter name todigits
. (#231) - Change
SequentialDataset
properties to not return copies of arrays. (#231) - Remove
SequentialDataset.__eq__
. (#231) - Change
HMMClassifier
prior
default toNone
. (#231)
- Fix broken link on README.md. (#229)
- Rework interface to follow sklearn-like patterns. (#226)
- Remove
preprocessing
module (temporarily until design is finalized). (#226) - Add KNN regression. (#226)
- Add HMM classifier with categorical emissions. (#226)
- Use Pydantic for better validation. (#226)
- Add
datasets
module for sample datasets. (#226) - Split KNN logic across more functions. (#226)
- Better multi-processing for KNN. (#226)
- Documentation rework + switch Sphinx documentation theme. (#226)
- Fix Sakoe-Chiba width calculation. (#226)
- Add
digits.npz
as package data insetup.py
. (#221)
- Switch from TravisCI to CircleCI. (#218)
- Add
datasets.load_random_sequences
for generating an arbitrarily sized dataset of sequences. (#216) - Remove
DeepGRU
andclassifier.rnn
module. (#215) - Add
sequentia.datasets
module. (#214) - Added
return_scores
argument toKNNClassifier.predict()
to return class scores. (#213) - Return
self
infit()
functions. (#213) - Update to
hmmlearn
v0.2.7. (#201) - Update
HMMClassifier
structure to matchKNNClassifier
. (#200) - Remove
'uniform'
KNNClassifier
weighting option. (#192) - Fix major
KNNClassifier
label scoring bug - thanks @manisci. (#187)
- Update
CONTRIBUTING.md
CI instructions. (#219) - Update HMM tests to use
datasets
module. (#217) - Add
tslearn
as a core dependency. (#216) - Remove
torchaudio
,torchvision
andtorchfsdd
dependencies. (#214) - Add playable audio to notebooks via
play_audio
helper. (#214) - Update
README.md
and documentation. (#202) - Add
Jinja2
dependency for RTD. (#188)
KNNClassifier
has a major bug in all versions prior to and including v0.12.1 resulting in inaccurate predictions (see #186).GMMHMM
andHMMClassifier
have a major bug in all versions prior to and including v0.12.1 as a result of two bugs in theGMMHMM
class inhmmlearn
versions before v0.2.7 (see #193).
⚠️ Please use version v0.13.0 or later.
- Remove
requirements.py
due to import error. (#182)
- Rework preprocessing module (see #177). (#179)
- Add
Custom
transformation. - Rename
Preprocess
toCompose
. - Don't validate observation sequences after each transformation in
Compose
. - Remove progress bars and
verbose
parameter. - Stop unnecessarily copying each observation sequence before transformations.
- Change
transform()
function onTransform
objects to accept a single observation sequence. - Remove
_apply()
function onTransform
objects. - Make
_is_fitted()
public onTransform
objects (change tois_fitted()
). - Use
__str__
instead of_describe()
for transformation descriptions.
- Add
- Remove need to send
DeepGRU
to device explicitly, so we can now doDeepGRU(..., device=device)
instead ofDeepGRU(..., device=device).to(device)
. (#178) - Add
dev
,test
,docs
andnotebooks
extras. (#174) - Remove
Equalize
transform as it goes against the point of variable-length sequence classification. (#172) - Change
TrimZeros
transform toTrimConstants
, allowing any constant-valued observation to be trimmed. (#172) - Add DeepGRU classifier implementation. (#169)
- Add
sequentia[torch]
extra for optionaltorch
CPU installation. (#169)
- Keep batch lengths on CPU (pytorch/pytorch#43227). (#178)
- Remove
docs/requirements.txt
and specifydocs
extra in.readthedocs.yml
. (#176) - Move Sphinx extensions from
docs/conf.py
torequirements.py
. (#176) - Bump development status classifier to beta. (#175)
- Move package dependency specifications to
requirements.py
. (#174) - Add
docs/README.md
,notebooks/README.md
andlib/test/README.md
. (#174) - Update HMM classifier diagram. (#173)
- Add build status to
README.md
. (#171) - Fix patch description in
CONTRIBUTING.md
. (#170) - Fix wording in
README.md
. (#167, #168)
- Fix validation for univariate sequences. (#164)
- Add trailing underscore to variables containing trainable parameters (see #154). (#158)
- Add properties for GMM emission distribution parameters (see #153). (#156)
- Add selective
GMMHMM
parameter freezing/unfreezing (see #150). (#155) - Fix random transition matrix initialization for
_LeftRightTopology
(see #149). (#151)
- Add access to Baum-Welch algorithm convergence monitor (see #139). (#162)
- Prefix
_Validator
functions withis_
(see #159). (#161) - Add validation for checking fitted parameters (see #157). (#160)
- Clean up
__repr__
forGMMHMM
,HMMClassifier
andKNNClassifier
. (#160) - Add classifier documentation links to
README.md
. (#152) - Simplify random transition matrix initialization for
_LinearTopology
and_LeftRightTopology
. (#151)
- Fix
setup.py
encoding problem. (#145) - Add
docs/robots.txt
andsphinx-version-warning
package to prevent search engines from indexing old package versions (see #143). (#147)
- Add @Prhmma as a contributor for #145. (#146)
- Add support for dependent feature warping (addresses #124). (#135)
- Add multi-processed predictions for
HMMClassifier
(addresses #121). (#136) - Re-order
predict()
andevaluate()
arguments. (#138)
- Add
original_labels
documentation toKNNClassifier
. (#133) - Simplify
GMMHMM
documentation. (#134) - Fix posterior comment in
classifier.svg
. (#137)
- Switch out
pomegranate
HMM backend tohmmlearn
. (#105) - Remove separate HMM and GMM-HMM implementations – only keep a single GMM-HMM implementation (in the
GMMHMM
class) and treat multivariate Gaussian emission HMM as a special case of GMM-HMM. (#105) - Support string and numeric labels by using label encodings (from
sklearn.preprocessing.LabelEncoder
). (#105) - Add support for Python v3.6, v3.7, v3.8, v3.9 and remove support for v3.5. (#105)
- Switch from approximate DTW algorithm (
fastdtw
) to exact implementation (dtaidistance
) forKNNClassifier
. (#106)
- Switch to use duck-typing for iterables instead of requiring lists. (#105)
- Rename 'strict left-right' HMM topology to 'linear'. (#105)
- Switch
m2r
tom2r2
, asm2r
is no longer maintained. (#105) - Change
covariance
tocovariance_type
, to matchhmmlearn
. (#105) - Use
numpy.random.RandomState(seed=None)
as default instead ofnumpy.random.RandomState(seed=0)
. (#105) - Switch
KNNClassifier
serialization from HDF5 to pickling. (#106) - Use
intersphinx
for external documentation links, e.g. tonumpy
. (#108) - Change
MinMaxScale
bounds to floats. (#112) - Add
__repr__
function toGMMHMM
,HMMClassifier
andKNNClassifier
. (#120) - Use feature-independent warping (DTWI). (#121)
- Ensure minimum Sakoe-Chiba band width is 1. (#126)
- Stop referring to sequences as temporal, as non-temporal sequences can also be used. (#103)
- Fix deserialization for
KNNClassifier
. (#93)- Sort HDF5 keys before loading as
numpy.ndarray
s. - Pass
weighting
function into deserialization constructor.
- Sort HDF5 keys before loading as
- Fix
pomegranate
version to v0.12.0. (#79) - Add serialization and deserialization support for all classifiers. (#80)
HMM
,HMMClassifier
: Serialized in JSON format.KNNClassifier
: Serialized in HDF5 format.
- Finish preprocessing documentation and tests. (#81)
- (Internal) Remove nested helper functions in
KNNClassifier.predict()
. (#84) - Add strict left-right HMM topology. (#85)
Note: This is the more traditional left-right HMM topology. - Implement GMM-HMMs in the
GMMHMM
class. (#87) - Implement custom, uniform and frequency-based HMM priors. (#88)
- Implement distance-weighted DTW-kNN predictions. (#90)
- Rename
DTWKNN
toKNNClassifer
. (#91)
- (Internal) Simplify package imports. (#82)
- (Internal) Add
Validator.func()
for validating callables. (#90)
- Fix typos and update preprocessing information in
README.md
. (#76)
- Remove strict requirement of Numpy arrays being two-dimensional by using
numpy.atleast_2d
to convert one-dimensional arrays into 2D. (#70)
- As the HMM classifier is not a true ensemble of HMMs (since each HMM doesn't really contribute to the classification), it is no longer referred to as an ensemble. (#69)
- Add package tests and Travis CI support. (#56)
- Remove Python v3.8+ support. (#56)
- Rename
normalize
preprocessing method tocenter
, since it just centers an observation sequence. (#62) - Add
standardize
preprocessing method for standardizing (standard scaling) an observation sequence. (#63) - Add
trim_zeros
preprocessing method for removing zero-observations from an observation sequence. (#67)
- Add
Validator.random_state
for validating random state objects and seeds. (#56) - Internalize
Validator
and topology (Topology
,ErgodicTopology
,LeftRightTopology
) classes. (#57) - Use proper documentation format for topology classes. (#58)
- Add
Preprocess.summary()
to display an ordered summary of preprocessing transformations. (#54) - Add mean and median filtering preprocessing methods. (#48)
- Use median filtering and decimation downsampling by default. (#52)
- Modify preprocessing boundary conditions (#51):
- Use a bi-directional window for filtering to resolve boundary problems.
- Modify downsampling method to downsample residual observations.
- Add supported topologies (left-right and ergodic) to feature list. (#53)
- Add restrictions on preprocessing parameters: downsample factor and window size. (#50)
- Allow
Preprocess
class to be used to apply preprocessing transformations to a single observation sequence. (#49)
- Re-add
euclidean
metric asDTWKNN
default. (#43)
- Add explicit labels to
evaluate()
inHMMClassifier
example. (#44)
- Add proper documentation, hosted on Read The Docs. (#40, #41)
- Add multi-processing support for
DTWKNN
predictions. (#29) - Rename the
fit_transform()
function inPreprocess
totransform()
since there is nothing being fitted. (#35) - Modify package classifiers in
setup.py
(#31):- Set development status classifier to
Pre-Alpha
. - Add Python version classifiers for v3.5+.
- Specify UNIX and macOS operating system classifiers.
- Set development status classifier to
- Finish tutorial and example notebooks. (#35)
- Rename
examples
directory tonotebooks
. (#32) - Host notebooks statically on nbviewer. (#32)
- Add reference to Pomegranate paper and repository. (#30)
- Add badges to
README.md
. (#28)
Nothing, initial release!
v2.0.2 - 2024-04-13
- call
KNNMixin._dtw1d
whenindependent=True
(#251)
v2.0.1 - 2024-04-02
- use log probs for
KNNClassifier.predict_log_proba
(#247)
v2.0.0 - 2024-04-01
- full
scikit-learn
compatibility + general refactor (#241)