Release History

Release notes for current and recent releases are detailed on this page.

Note

Legends for changelog entries

  • Major Feature: something big that you couldn’t do before.

  • Feature: something that you couldn’t do before.

  • Efficiency: an existing feature now may not require as much computation or memory.

  • Enhancement: a miscellaneous minor improvement.

  • Fix: something that previously didn’t work as documented – or according to reasonable expectations – should now work.

  • API Change: you will need to change your code to have the same effect in the future; or a feature will be removed in the future.

Version 0.5.3

June 2020

  • Fix Address a bug that triggered an error in the conda-forge pipeline for Windows.

Version 0.5.0

June 2020

  • Feature Add drift_detection.HDDM_A, a drift detection method based on the Hoeffding’s bounds with moving average-test. Contributor: jiahy (#161).

  • Feature Add drift_detection.HDDM_W, a drift detection method based on the Hoeffding’s bounds with moving weighted-average-test. Contributor: jiahy (#161).

  • Feature Add the Kolmogorov-Smirnov Windowing (drift_detection.KSWIN) concept drift detector. Contributor: ChristophRaab (#234).

  • Feature Add transform.WindowedMinmaxScaler, a transformer to perform feature scaling. Transformation is performed considering samples in a sliding window.. Contributor: jmrozanec (#184).

  • Feature Add transform.WindowedStandardScaler, a transformer to standardize features by removing the mean and scaling to unit variance. Transformation is performed considering samples in a sliding window. Contributor: jmrozanec (#184).

  • Feature Add meta.AdaptiveRandomForestRegressor. This implementation is slightly different from the original algorithm. The Hoeffding Tree Regressor is used as base learner, instead of the FIMT-DD. It also adds a new strategy to monitor the incoming data and check for concept drifts. For more information, see the notes in the documentation of this method.

  • Feature Add the Streaming Random Patches ensemble method (meta.StreamingRandomPatchesClassifier).

  • Feature Add lazy.KNNRegressor, a nearest-neighbor-based method for regression.

  • Feature Add support for delayed labels and evaluations. Add data.TemporalDataStream to handle temporal data in a stream. Add evaluation.EvaluatePrequentialDelayed evaluator. Contributor: fabriciojoc (#222).

  • Feature Add sine anomaly data generator (data.AnomalySineGenerator).

  • Efficiency Refactored classification performance evaluators, implemented in Cython for efficiency. Add support for multi-class precision, recall, F1-score, and geometric mean. New estimators are ~12x faster for binary data, ~52x faster for multi-class data and ~11x faster for multi-label data.

  • Efficiency Enhance the strategy to deal with categorical attributes in Hoeffding Trees. Previously, complexity was \(O(c)\) per update, being \(c\) the number of categories. Now, by using hash structures, complexity is \(O(1)\).

  • Efficiency Remove datasets files from the package. Data sets remain available in a dedicated repository. This results in file size reductions of ~35x for source distribution size and ~32x for wheels.

  • Enhancement Add bootstrap_sampling option to the trees.HoeffdingAdaptiveTreeClassifier.

  • Enhancement Improvements on data loading methods: Check data consistency. Raise error if non-numeric data types are used. Raise error if there are missing values. Add option to disable missing values error.

  • Enhancement Enable the describe_subtree method in regression variants of the Hoeffding Tree for single-target and multi-target.

  • Enhancement Add example code to documentation of multiple methods.

  • Enhancement Streamlines the usage of attribute observers in tree-based methods for regression. Add a new and improved observer that works with both single-target and multi-target tasks. The enhanced NumericAttributeRegressionObserver also adds support for instance weighting.

  • Fix Fix index out of range for the classification functions in the data.MIXEDGenerator. Contributor: ingako.

  • Fix Fix bug in IntraClusterVarianceReduction split criterion.

  • Fix Fix bug in the predict_proba method of the meta.AdaptiveRandomForestClassifier triggered when classes are not defined.

  • Fix Fix subtree_depth calculation in the trees.HoeffdingTreeClassifier.

  • Fix Fix bug in instance sorting in the inner nodes of the trees.HoeffdingAdaptiveTreeClassifier. Previously, the adaptive split nodes were not passing the incoming samples to their descendants.

  • Fix Add check for zero sum error to avoid division by zero error in bayes.NaiveBayes. Contributor: Fiona (fwille).

  • Fix Fix bug in meta.LearnPPNSEClassifier that resulted in an error when not all classes are observed by any of the ensemble members. Add an early stop mechanism when adding members of the ensemble if classification error reaches zero, making the normalization step ill-defined.

  • Fix Fix minor bug in the computation of the incremental variance in drift_detection.ADWIN. Bug had no significant impact on methods relying on ADWIN to detect drift.

  • Fix Fix bug in methods that failed when predict was called before the first partial_fit/fit. Impacted methods are: lazy.KNNClassifier, meta.OnlineAdaC2Classifier, meta.OnlineBoostingClassifier, meta.OnlineUnderOverBaggingClassifier, meta.OnlineSMOTEBaggingClassifier, meta.OnlineCSB2Classifier and anomaly_detection.HalfSpaceTrees.

  • Fix Fix tree growth and update in trees.HoeffdingAdaptiveTreeClassifier and trees.HoeffdingAdaptiveTreeRegressor. Bug was affecting the vote aggregation in both methods.

  • Fix Fix bug in evaluators that resulted in a runtime_error when model_size or running_time appear first in the metrics option.

  • Fix meta.LeveragingBaggingClassifier. Fix bug that resulted in unreachable code during initialization when enable_code_matrix is set. Fix bug when enable_code_matrix options is set.

  • Fix Re-enable weighted vote in meta.AdaptiveRandomForestClassifier. This default behavior was mistakenly suppressed. This bug impacted the variants of the algorithm that use majority class and naive bayes leaf prediction mechanisms.

  • Fix Minor bug fixes and other improvements.

  • API Change rename weight to sample_weight in meta.OnlineRUSBoostClassifier and rules.VeryFastDecisionRulesClassifier. Contributor: Ben Auffarth (benman1).

  • API Change Deprecate the prepare_for_use method in the data.base_stream.Stream class. Now Stream objects are ready to use after instantiation. A prepare_for_use stub will be kept for 2 minor releases for backward compatibility and will be removed in v0.7.0.

  • API Change n_features is no longer a required parameter for anomaly_detection.HalfSpaceTrees. n_features is now obtained from the data as it is passed for training.

  • API Change Enforce naming convention for learning methods. Old names will remain available for 2 minor releases for backward compatibility and will be removed in v0.7.0. Renamed methods are:

Deprecated name

New name

lazy.KNN

lazy.KNNClassifier

lazy.KNNAdwin

lazy.KNNADWINClassifier

lazy.SAMKNN

lazy.SAMKNNClassifier

meta.AccuracyWeightedEnsemble

meta.AccuracyWeightedEnsembleClassifier

meta.AdaptiveRandomForest

meta.AdaptiveRandomForestClassifier

meta.AdditiveExpertEnsemble

meta.AdditiveExpertEnsembleClassifier

meta.BatchIncremental

meta.BatchIncrementalClassifier

meta.DynamicWeightedMajority

meta.DynamicWeightedMajorityClassifier

meta.LearnNSE

meta.LearnPPNSEClassifier

meta.LearnPP

meta.LearnPPClassifier

meta.LeverageBagging

meta.LeveragingBaggingClassifier

meta.OnlineAdaC2

meta.OnlineAdaC2Classifier

meta.OnlineBoosting

meta.OnlineBoostingClassifier

meta.OnlineCSB2

meta.OnlineCSB2Classifier

meta.OnlineRUSBoost

meta.OnlineRUSBoostClassifier

meta.OnlineSMOTEBagging

meta.OnlineSMOTEBaggingClassifier

meta.OnlineUnderOverBagging

meta.OnlineUnderOverBaggingClassifier

meta.OzaBagging

meta.OzaBaggingClassifier

meta.OzaBaggingAdwin

meta.OzaBaggingADWINClassifier

rules.VFDR

rules.VeryFastDecisionRulesClassifier

trees.HoeffdingTree

trees.HoeffdingTreeClassifier

trees.HAT

trees.HoeffdingAdaptiveTreeClassifier

trees.HATT

trees.ExtremelyFastDecisionTreeClassifier

trees.LCHT

trees.LabelCombinationHoeffdingTreeClassifier

trees.RegressionHoeffdingTree

trees.HoeffdingTreeRegressor

trees.RegressionHAT

trees.HoeffdingAdaptiveTreeRegressor

trees.MultiTargetRegressionHoeffdingTree

trees.iSOUPTreeRegressor

Version 0.4.1

Sep 2019

  • Fix Fix bug in the calculation of Precision and Recall which affects the F1 and Geometric-mean scores. The bug was only triggered by a specific ordering of the class-values.

Version 0.4.0

Sep 2019

Version 0.3.0

May 2019

  • Feature Very Fast Decision Rules classifier rules.VFDR

  • Feature Online AdaC2 ensemble classifier meta.OnlineAdaC2

  • Feature Online Boosting ensemble classifier meta.OnlineBoosting

  • Feature Online CSB2 ensemble classifier meta.OnlineCSB2

  • Feature Online RUS Boost ensemble classifier meta.OnlineRUSBoost

  • Feature Online SMOTE Bagging ensemble classifier meta.OnlineSMOTEBagging

  • Feature Online Under Over Bagging ensemble classifier meta.OnlineUnderOverBagging

  • Enhancement Project documentation overhaul. Improved documentation layout to ease navigation. Documentation for multiple methods were revisited and corrections/extensions were included. Multiple typos fixed. A map of methods in scikit-multiflow is added to help users navigate the project.

  • Fix Update lazy.SAMKNN since changing a dictionary inside a loop now raises a RunTimeError (Python 3.7+).

  • Fix Fix bug in meta.LeverageBagging, use set(self.classes) instead of self.classes.

  • Fix Fix bug in meta.OzaBagging, now re-sampling is correctly calculated for each sample (instance). There was a corner case were this value was incorrectly calculated for batches of samples.

  • API Change Rename weight to sample_weight in partial_fit and fit abstract method (inherited by all estimators in scikit-multiflow)

  • API Change Rename cat_features_idx to cat_features and added new attribute name in data.DataStream

  • API Change Rename cat_features_idx to cat_features in data.FileStream

  • API Change Rename min_num_instances to min_instances in drift_detection.PageHinkley

  • API Change Rename categorical_list to nominal_attributes in lazy.KNN

  • API Change New base class core.BaseSKMObject for objects in scikit-multiflow. This class is based on sklearn.BaseEstimator for inter-framework compatibility and adds extra functionality relevant in the context of scikit-multiflow. Stream models (estimators) in are now created by extending core.BaseSKMObject and the corresponding task-specific mixin(s): core.ClassifierMixin, core.RegressorMixin, core.MetaEstimatorMixin, core.MultiOutputMixin

Version 0.2.0

April 2019

  • Feature Additive Expert Ensemble (AddExp) meta.AdditiveExpertEnsemble

  • Feature Dynamic Weighted Majority Ensemble (DWE) meta.DynamicWeightedMajority

  • Enhancement Drop support for Python 3.4 as it has reached its end-of-life date

  • Enhancement Misc minor bug fixes

Version 0.1.4

April 2019

  • Feature Accuracy Weighted Ensemble classifier meta.AccuracyWeightedEnsemble

  • Enhancement Improvements and bug fixes in drift detection methods

  • Enhancement Improved examples/documentation for docker image

  • Enhancement Misc bug fixes

Version 0.1.3

March 2019

  • Feature Learn++.NSE ensemble classifier meta.LearnNSE

  • Feature Hoeffding Anytime Tree or Extremely Fast Decision Tree classifier trees.HATT

  • Efficiency Naive Bayes bayes.NaiveBayes

  • Efficiency Minor performance improvements

  • Enhancement Misc bug fixes

Version 0.1.2

February 2019

  • Feature Learn++ ensemble classifier meta.LearnPP

  • Efficiency Improve performance of evaluators when saving all predictions into a file

  • Enhancement Misc bug fixes

Version 0.1.0

January 2019

  • Initial release of scikit-multiflow.

  • From this point the package is available via PyPI.

Legacy documentation

Documentation for legacy versions available for offline viewing.