v0.1.0¶
April 2023
This release follows on from sktime v0.16.0.
Following this release the deprecation policy remains suspended. Future releases may have breaking changes, so it may be wise to set an upper bound on the package version.
Highlights¶
aeon
is now available on PyPI!pandas
2 support is available for core functionalityDeep learning approaches in the classification module have been reworked and are more configurable
New estimators for classification in Inception Time (@hadifawaz1999) and WEASEL 2.0 (@patrickzib)
Improved transformers for selecting channels of multivariate time series (@haskarb)
Interface and breaking changes from sktime
v0.16.0¶
Framework¶
Removed separate mlflow
install via pip install aeon[mlfow]
. The mlflow
dependency is now integrated in all_extras
when doing pip install aeon[all_extras]
, see #81
Removed support for Python 3.7, see #103
Increment scikit-learn
lower bound version from scikit-learn>=0.24
to scikit-learn>=1.0.0
, see #103
Remove statsforecast
from all_extras
install temporarily because non-compliance with pandas==2.0.0
Increment lower bound of pandas
to >=1.5.3
Forecasting¶
Removed hcrystalball wrapper #115
Renamed parameter sktime_model
in the mlflow
module to estimator
.This parameter was renamed in the functions save_model
and log_model
. See #221
Forecaster VARMAX
still requires pandas<2.0.0
, will be relaxed in future releases.
Classification¶
kNN Classifier and Regressor reimplementations #66
With the removal of dists_kerns the kNN implementation had to be reworked somewhat. The old version was unnecessarily memory intensive, which has been improved. With this change comes the removal of some parameters used in the old implementation.
Remove ProximityForest classifier #86
This is an old implementation which crashes on the majority of UCR datasets, skips all testing and struggles to reach equivalence to its published results. While we would like an implementation of the algorithm, there is currently no one willing to maintain this version.
convolution_based rename #90
The
kernel_based
package has been renamed to the more commonly used (and applicable to the classifiers)convolution_based
.RandomIntervalClassifier
has also moved tointerval_based
.
Remove TimeSeriesSVC #105
This implementation is a wrapper of the sklearn SVC for distances. Elastic distances for time series data do not generate semi-positive definite kernels, which breaks SVC assumptions. The wrapper does not align with our outlook for the distances module and has been removed for now.
Remove fit_predict in BaseClassifier #117
fit_predict in BaseClassifier was an inefficient alternative to simply using scikit-learn cross validation that involved coverting everything to dataframes. We think it is easier to just use scikit-learn functionality rather than reinvent the wheel (inefficiently).
Remove plotting #127
The classification plotting folder adds a single file to draw a graph for CIF added without review. While we do want functionality for plotting, there was no framework or discussion with this niche and estimator specific addition.
Refactor ColumnEnsemble to ChannelEnsemble #162
The term column has relevance only for pandas, if the data are stored in numpy[n_cases][n_channels][n_timepoints], calling dimension 2 “column” makes no sense. After discussion on slack, we chose channel rather than dimension (because dimension overloads on dimension of the array)
For classification: Adding InceptionTime, CNN and ResNet along with other classifiers and removing LSTM-FCN #134
This is mostly new functionality, but some parameter names have been simplified, i.e. n_conv_layers > n_layers
Refactor DummyClassifier and Compose classifiers #163
This PR moved the dummy classifier to the base classification directory from classification/dummy.
Regression¶
kNN Classifier and Regressor reimplementations #66
See classification section.
convolution_based rename #90
See classification section.
Remove ComposableTimeSeriesForestRegressor #92
This regressor is a duplicate, and for a long time has been unusable on any dataset. The decision was made to remove it rather than maintain.
Datasets¶
make single problem loaders for equal length problems return numpy arrays #109
The default datatype for classification and clustering are 3D numpy arrays, so we have changed the default return type for these types of dataset. The option to return as a DataFrame is still available as a parameter.
Clustering¶
Clean up clustering module #132
Transformations¶
Refactored PCATransformer #26
Removed summary function mad
in WindowSummarizer
and SummaryTransformer
as in pandas>=2.0.0
the function mad
is not supported anymore #153
Remove the DistanceFeatures transformer #143
The distance features transformer was a wrapper for Dists_Kerns function, see #144.
Change output type of numerous Panel transformers #209, #185, #196.
Over time we will be changing the output type of Panel transformers to primary be numpy arrays where possible, rather than converting to DataFrames.
Alignment¶
Remove the alignment module #87
The alignment module used an external package (python_dtw) to find alignments between series in a complex set of classes. It was not used anywhere else in the toolkit. The distance functions already have the ability to extract an alignment, and they do it four times faster than python_dtw. If there is a use case for a more structured alignment module then it should be based on distances, but there have been no issues raised to provide one.
Dists_kerns¶
Removes the dist_kerns module 179
We are currently not willing to maintain this module, distance measures are still available in the distances module.
Maintenance¶
[FORK] Update config files (#48) @MatthewMiddlehurst
[MNT]
convolution_based
rename (#90) @MatthewMiddlehurst[ENH] Remove fit_predict_proba from Base-Class, Use sklearn cross_val_predict instead (#117) @patrickzib
[MNT] removed separate mlflow dependencies and testing (#81) @aiwalter
[ENH] Early classification updates (#88) @MatthewMiddlehurst
[MNT] Pandas 2.0.0 deprecation actions (part 1) (#153) @aiwalter
[MNT] Rename package to aeon (#184) @MatthewMiddlehurst
[MNT] Fix pytest by setting upper bound on
dash
(#206) @MatthewMiddlehurst[MNT] Pandas 2.0.0 deprecation actions (part 2) (#189) @aiwalter
[MNT] Extension template rename (#201) @MatthewMiddlehurst
[MNT] Update email and social media links (#281) @MatthewMiddlehurst
[BUG] Include
packaging
as a dependency (#284) @MatthewMiddlehurst[MNT] Update release workflow and remove old release files (#259) @MatthewMiddlehurst
[MNT] GitHub templates (#285) @MatthewMiddlehurst
[MNT] remove shellcheck from pre-commit checks (#60) @lmmentel
[MNT] Update name to
aeon
in config files (#157) @MatthewMiddlehurst
Documentation¶
[FORK] Update README (IN PROGRESS) (#43) @MatthewMiddlehurst
[DOC] Docs disclaimer (#64) @MatthewMiddlehurst
[DOC] Classifier docs tidy up (#52) @TonyBagnall
[DOC] Fix docstring of TabularToSeriesAdaptor (#131) @aiwalter
[DOC] Rename some occurrences of
sktime
toaeon
(#161) @MatthewMiddlehurst[ENH] first rework of the classification notebook (#123) @TonyBagnall
[DOC] Update landing page (#122) @MatthewMiddlehurst
[DOC] Add website warning again. (#205) @MatthewMiddlehurst
[DOC] Refactor documentation out of
source
directory (#200) @MatthewMiddlehurst[DOC] Disclaimer for markdown (#244) @MatthewMiddlehurst
[DOC] Remove local table of contents (#243) @MatthewMiddlehurst
[DOC] Webpage link fixes (#245) @MatthewMiddlehurst
[DOC] Update
about
pages (#241) @MatthewMiddlehurst[DOC] Remove GSoC and meetups pages, update mentoring with placeholder (#242) @MatthewMiddlehurst
Fixes¶
[BUG] Update check_n_jobs (#14) @MatthewMiddlehurst
[BUG] Remove
ComposableTimeSeriesForestRegressor
(#92) @MatthewMiddlehurst[BUG] Fix tag in FeatureSelection and added tests (#13) @aiwalter
[BUG] fix class values for SFA tests (#224) @TonyBagnall
[BUG] change Imputer to allow for 0 to be the missing value to replace (#268) @TonyBagnall
[BUG]
attrs
quick fix (#283) @MatthewMiddlehurst
Refactored¶
[DOC] Refactor documentation out of
source
directory (#200) @MatthewMiddlehurst
Enhancements¶
[ENH] Dictionary Classifiers (#58) @patrickzib
[ENH]
_fit_transform
method inBaseTransformer
(#91) @MatthewMiddlehurst[ENH] Add
prefer="threads"
to classificationParallel
usage (#93) @MatthewMiddlehurst[ENH] Speedup EAgglo by factor 5-10x (#139) @patrickzib
[ENH] Adds WEASEL v2 (with dilation) (#160) @patrickzib
Other¶
Update FUNDING.yml (#10) @MatthewMiddlehurst
Comment out all GitHub actions workflows. (#3) @MatthewMiddlehurst
Remove workflow files (#15) @MatthewMiddlehurst
Delete contrib (and update codeowners) (#12) @TonyBagnall
[GOV] Removed 7 days discussion period before votings. Removed weekend rule by adding 2 days instead (#41) @aiwalter
[FORK] Revert #15 “Remove workflow files” (MERGE WHEN REPO PUBLIC) (#16) @MatthewMiddlehurst
License Update (#56) @MatthewMiddlehurst
[GOV] Added CoCC members as voted by core developers (#57) @aiwalter
[ENH] kNN Classifier and Regressor reimplementations (#66) @GuiArcencio
[GOV] proposal: CC and CoC should have disjoint membership (#23) @aiwalter
Update README (#63) @MatthewMiddlehurst
[ENH] Remove ProximityForest classifier (#86) @TonyBagnall
[Bug] ClaSP Bugfixes (#95) @patrickzib
[ENH] remove TimeSeriesSVC (#105) @TonyBagnall
[ENH] Remove the alignment module (#87) @TonyBagnall
[ENH] Changed grid search parallelization to use backend param from e… (#82) @aiwalter
[ENH] make single problem loaders for equal length problems return numpy arrays (#109) @TonyBagnall
[ENH] Remove plotting (#127) @TonyBagnall
[ENH] Classifier tests for
capability:contractable
andcapability:train_estimate
tags (#89) @MatthewMiddlehurst[ENH] Clean up clustering module (#132) @chrisholder
Remove the DistanceFeatures transformer (#143) @TonyBagnall
[ENH] [BUG] Improving Runtime of Elastic Ensemble by 20x (by fixing the closure issue) (#142) @patrickzib
[ENH] Add tags for estimators using the taxonomy of classification (#129) @TonyBagnall
[ENH] Refactor ColumnEnsemble to ChannelEnsemble (#162) @TonyBagnall
[ENH] Switch from pandas iteritems() to items() due to warning (#165) @TonyBagnall
[ENH] Refactor DummyClassifier and Compose classifiers (#163) @TonyBagnall
[ENH] Remove old Transformer Minxin Classes (#169) @MatthewMiddlehurst
[MNT] Fix random test failure in FeatureSelection (#180) @aiwalter
[ENH] Removes the dist_kerns module (#179) @TonyBagnall
[ENH] For classification: Adding InceptionTime, CNN and ResNet along with other classifiers and removing LSTM-FCN (#134) @hadifawaz1999
[ENH] Switch SFA Transformer to use numpy (#196) @TonyBagnall
[ENH] Shapelet Transform improvements (#185) @TonyBagnall
Pre-release 0.1.0rc0 (#207) @MatthewMiddlehurst
[BUG] added missing dl tag to inceptionTime classifier (#203) @hadifawaz1999
[ENH] switch paa tests to use numpy (#199) @TonyBagnall
[ENH] remove incorrect iloc calls (#213) @TonyBagnall
[FORK] Rename sktime to aeon, keep some links (#218) @aiwalter
[MNT] Remove Python version restriction of tsfresh (#237) @aiwalter
[ENH] switch test of PaddingTransformer to use numpy (#198) @TonyBagnall
[ENH] Tidy BaseClassifier and classifier template (#178) @TonyBagnall
[ENH] remove front end from distances (#236) @TonyBagnall
[ENH] Converts RocketClassifier back to being a sklearn pipeline classifier (#234) @TonyBagnall
[ENH] add numba function to find slope derivative (#252) @TonyBagnall
[DOC] Add myself contributor and codeowners (#254) @hadifawaz1999
[ENH] Adapt rocket classifiers to return numpy arrays instead of data frames (#209) @TonyBagnall
[ENH] Catch22Classifier back to being a sklearn pipeline classifier (#235) @TonyBagnall
[ENH] remove test_fit_transform_output (#273) @TonyBagnall
[ENH] Convert ShapeTransformer to use numpy internally (#250) @TonyBagnall
[ENH] Convert SlidingWindowTransformer to use numpy internally (#262) @TonyBagnall
[ENH] remove clustering mentions of nested_univ (#278) @TonyBagnall
[ENH] Convert PAA to use numpy internally (#269) @TonyBagnall
[ENH] Removal of mentions of nested_univ from classifier package (except shapeDTW) (#277) @TonyBagnall
Contributors¶
@aiwalter, @chrisholder, @GuiArcencio, @hadifawaz1999, @haskarb, @lmmentel, @MatthewMiddlehurst, @patrickzib, @scorcism, @TonyBagnall