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.
June 2020
Fix Address a bug that triggered an error in the conda-forge pipeline for Windows.
Feature Add drift_detection.HDDM_A, a drift detection method based on the Hoeffding’s bounds with moving average-test. Contributor: jiahy (#161).
drift_detection.HDDM_A
Feature Add drift_detection.HDDM_W, a drift detection method based on the Hoeffding’s bounds with moving weighted-average-test. Contributor: jiahy (#161).
drift_detection.HDDM_W
Feature Add the Kolmogorov-Smirnov Windowing (drift_detection.KSWIN) concept drift detector. Contributor: ChristophRaab (#234).
drift_detection.KSWIN
Feature Add transform.WindowedMinmaxScaler, a transformer to perform feature scaling. Transformation is performed considering samples in a sliding window.. Contributor: jmrozanec (#184).
transform.WindowedMinmaxScaler
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).
transform.WindowedStandardScaler
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.
meta.AdaptiveRandomForestRegressor
Feature Add the Streaming Random Patches ensemble method (meta.StreamingRandomPatchesClassifier).
meta.StreamingRandomPatchesClassifier
Feature Add lazy.KNNRegressor, a nearest-neighbor-based method for regression.
lazy.KNNRegressor
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).
data.TemporalDataStream
evaluation.EvaluatePrequentialDelayed
Feature Add sine anomaly data generator (data.AnomalySineGenerator).
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.
bootstrap_sampling
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.
describe_subtree
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.
NumericAttributeRegressionObserver
Fix Fix index out of range for the classification functions in the data.MIXEDGenerator. Contributor: ingako.
data.MIXEDGenerator
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.
predict_proba
meta.AdaptiveRandomForestClassifier
classes
Fix Fix subtree_depth calculation in the trees.HoeffdingTreeClassifier.
subtree_depth
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).
bayes.NaiveBayes
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.
meta.LearnPPNSEClassifier
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.
drift_detection.ADWIN
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.
predict
partial_fit
fit
lazy.KNNClassifier
meta.OnlineAdaC2Classifier
meta.OnlineBoostingClassifier
meta.OnlineUnderOverBaggingClassifier
meta.OnlineSMOTEBaggingClassifier
meta.OnlineCSB2Classifier
anomaly_detection.HalfSpaceTrees
Fix Fix tree growth and update in trees.HoeffdingAdaptiveTreeClassifier and trees.HoeffdingAdaptiveTreeRegressor. Bug was affecting the vote aggregation in both methods.
trees.HoeffdingAdaptiveTreeRegressor
Fix Fix bug in evaluators that resulted in a runtime_error when model_size or running_time appear first in the metrics option.
runtime_error
model_size
running_time
metrics
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.
meta.LeveragingBaggingClassifier
enable_code_matrix
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).
weight
sample_weight
meta.OnlineRUSBoostClassifier
rules.VeryFastDecisionRulesClassifier
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.
data.base_stream.Stream
Stream
prepare_for_use
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.
n_features
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.KNNAdwin
lazy.KNNADWINClassifier
lazy.SAMKNN
lazy.SAMKNNClassifier
meta.AccuracyWeightedEnsemble
meta.AccuracyWeightedEnsembleClassifier
meta.AdaptiveRandomForest
meta.AdditiveExpertEnsemble
meta.AdditiveExpertEnsembleClassifier
meta.BatchIncremental
meta.BatchIncrementalClassifier
meta.DynamicWeightedMajority
meta.DynamicWeightedMajorityClassifier
meta.LearnNSE
meta.LearnPP
meta.LearnPPClassifier
meta.LeverageBagging
meta.OnlineAdaC2
meta.OnlineBoosting
meta.OnlineCSB2
meta.OnlineRUSBoost
meta.OnlineSMOTEBagging
meta.OnlineUnderOverBagging
meta.OzaBagging
meta.OzaBaggingClassifier
meta.OzaBaggingAdwin
meta.OzaBaggingADWINClassifier
rules.VFDR
trees.HoeffdingTree
trees.HAT
trees.HATT
trees.ExtremelyFastDecisionTreeClassifier
trees.LCHT
trees.LabelCombinationHoeffdingTreeClassifier
trees.RegressionHoeffdingTree
trees.HoeffdingTreeRegressor
trees.RegressionHAT
trees.MultiTargetRegressionHoeffdingTree
trees.iSOUPTreeRegressor
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.
Feature Robust Soft Learning Vector Quantization classifier prototype.RobustSoftLearningVectorQuantization
prototype.RobustSoftLearningVectorQuantization
Feature Stacked Single-Target Hoeffding Tree regressor trees.StackedSingleTargetHoeffdingTreeRegressor
trees.StackedSingleTargetHoeffdingTreeRegressor
Feature Half-Space Trees one-class classifier for anomaly detection anomaly_detection.HalfSpaceTrees
Fix Fix bug in data.HyperplaneGenerator which resulted in corrupted data when using batch_size > 1.
data.HyperplaneGenerator
Enhancement Documentation improvements.
Enhancement Update the Hoeffding Adaptive Tree Classifier to perform bootstrap sampling in the leaf nodes as it has been empirically shown to improve (in most cases) performance.
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.
scikit-multiflow
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.
set(self.classes)
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
cat_features_idx
cat_features
name
data.DataStream
API Change Rename cat_features_idx to cat_features in data.FileStream
data.FileStream
API Change Rename min_num_instances to min_instances in drift_detection.PageHinkley
min_num_instances
min_instances
drift_detection.PageHinkley
API Change Rename categorical_list to nominal_attributes in lazy.KNN
categorical_list
nominal_attributes
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
core.BaseSKMObject
sklearn.BaseEstimator
core.ClassifierMixin
core.RegressorMixin
core.MetaEstimatorMixin
core.MultiOutputMixin
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
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
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
February 2019
Feature Learn++ ensemble classifier meta.LearnPP
Efficiency Improve performance of evaluators when saving all predictions into a file
January 2019
Initial release of scikit-multiflow.
From this point the package is available via PyPI.
Documentation for legacy versions available for offline viewing.