Version 0.3

Changes

  • All techniques are now sklearn estimators and passes the check_estimator tests.
  • All techniques can now be instantiated without a trained pool of classifiers.
  • Pool of classifiers can now be fitted together with the ensemble techniques. See simple example.
  • Added support for Faiss (Facebook AI Similarity Search) for fast region of competence estimation on GPU.
  • Added DES Multi-class Imbalance method deslib.des.des_mi.DESMI.
  • Added stacked classifier model, deslib.static.stacked.StackedClassifier to the static ensemble module.
  • Added a new Instance Hardness measure utils.instance_hardness.kdn_score().
  • Added Instance Hardness support when using DES-Clustering.
  • Added label encoder for the static module.
  • Added a script utils.datasets with routines to generate synthetic datasets (e.g., the P2 and XOR datasets).
  • Changed name of base classes (Adding Base to their following scikit-learn standards).
  • Removal of DFP_mask, neighbors and distances as class variables.
  • Changed signature of methods estimate_competence, predict_with_ds, predict_proba_with_ds. They now require the neighbors and distances to be passed as input arguments.
  • Added random_state parameter to all methods in order to have reproducible results.
  • Added Python 3.7 support.
  • New and updated examples.
  • Added performance tests comparing the speed of Faiss vs sklearn KNN.

Bug Fixes

  • Fixed bug with META-DES when checking if the meta-classifier was already fitted.
  • Fixed bug with random state on DCS techniques.
  • Fixed high memory consumption on DES probabilistic methods.
  • Fixed bug on Heterogeneous ensembles example and notebooks examples.
  • Fixed bug on deslib.des.probabilistic.MinimumDifference when only samples from a single class are provided.
  • Fixed problem with DS methods when the number of training examples was lower than the k value.
  • Fixed division by zero problems with APosteriori APriori MLA when the distance is equal to zero.
  • Fixed bug on deslib.utils.prob_functions.exponential_func() when the support obtained for the correct class was equal to one.