Skip to content

Releases: quatrope/scikit-criteria

0.8.7

09 Feb 21:58
Compare
Choose a tag to compare

Version 0.8.7

  • New Added functionality for user extension of scikit-criteria with
    decorators for creating aggregation and transformation models using
    functions.

    >>> from skcriteria.extend import mkagg, mktransformer
    >>>
    >>> @mkagg
    >>> def MyAgg(**kwargs):
    >>>     # Implementation of the aggregation function
    >>>
    >>> @mkagg(foo=1)
    >>> def MyAggWithHyperparam(**kwargs):
    >>>     # Implementation of the aggregation function with
    >>>     # hyperparameter 'foo'
    >>>
    >>> @mktransformer
    >>> def MyTransformer(**kwargs):
    >>>     # Implementation of the transformation function
    >>>
    >>> @mktransformer(bar=2)
    >>> def MyTransformerWithHyperparam(**kwargs):
    >>>     # Implementation of the transformation function with
    >>>     # hyperparameter 'bar'

    These decorators enable the creation of aggregation and transformation
    classes based on provided functions, allowing users to
    define decision-making models with less flexibility than traditional
    inheritance-based models.

    For more information check the tutorial Extending Aggregation and Transformation Functions

  • New Module: Introduced the skcriteria.testing module, exposing utility functions for for comparing objects created in Scikit-Criteria in a testing environment. These functions facilitate the comparison of instances of the DecisionMatrix, ResultABC, and RanksComparator classes.

    The assertion functions utilize pandas and numpy testing utilities for comparing matrices, series, and other attributes.

    Check the Reference for more information.

  • New The API of the agg, pipeline, preprocessing, and extend modules has
    been cleaned up to prevent autocompletion with imports from other modules.
    The imported modules are still present, but they are excluded when attempting
    to autocomplete. This functionality is achieved thanks to the context manager
    skcriteria.utils.cmanagers.hidden().

  • New All methods (agg and transformers) has a new get_method_name
    instance method.

  • Drop Drop support for Python 3.8

0.8.7.dev1

09 Feb 19:14
Compare
Choose a tag to compare
0.8.7.dev1 Pre-release
Pre-release

Version 0.8.7.dev1

  • New Added functionality for user extension of scikit-criteria with
    decorators for creating aggregation and transformation models using
    functions.

    >>> from skcriteria.extend import mkagg, mktransformer
    >>>
    >>> @mkagg
    >>> def MyAgg(**kwargs):
    >>>     # Implementation of the aggregation function
    >>>
    >>> @mkagg(foo=1)
    >>> def MyAggWithHyperparam(**kwargs):
    >>>     # Implementation of the aggregation function with
    >>>     # hyperparameter 'foo'
    >>>
    >>> @mktransformer
    >>> def MyTransformer(**kwargs):
    >>>     # Implementation of the transformation function
    >>>
    >>> @mktransformer(bar=2)
    >>> def MyTransformerWithHyperparam(**kwargs):
    >>>     # Implementation of the transformation function with
    >>>     # hyperparameter 'bar'

    These decorators enable the creation of aggregation and transformation
    classes based on provided functions, allowing users to
    define decision-making models with less flexibility than traditional
    inheritance-based models.

    For more information check the tutorial Extending Aggregation and Transformation Functions

  • New Module: Introduced the skcriteria.testing module, exposing utility functions for for comparing objects created in Scikit-Criteria in a testing environment. These functions facilitate the comparison of instances of the DecisionMatrix, ResultABC, and RanksComparator classes.

    The assertion functions utilize pandas and numpy testing utilities for comparing matrices, series, and other attributes.

    Check the Reference for more information.

  • New The API of the agg, pipeline, preprocessing, and extend modules has
    been cleaned up to prevent autocompletion with imports from other modules.
    The imported modules are still present, but they are excluded when attempting
    to autocomplete. This functionality is achieved thanks to the context manager
    skcriteria.utils.cmanagers.hidden().

  • New All methods (agg and transformers) has a new get_method_name
    instance method.

  • Drop Drop support for Python 3.8

0.8.7.dev0

08 Feb 19:11
6948771
Compare
Choose a tag to compare
0.8.7.dev0 Pre-release
Pre-release

Version 0.8.7.dev0

  • New Added functionality for user extension of scikit-criteria with
    decorators for creating aggregation and transformation models using
    functions.

    >>> from skcriteria.extend import mkagg, mktransformer
    >>>
    >>> @mkagg
    >>> def MyAgg(**kwargs):
    >>>     # Implementation of the aggregation function
    >>>
    >>> @mkagg(foo=1)
    >>> def MyAggWithHyperparam(**kwargs):
    >>>     # Implementation of the aggregation function with
    >>>     # hyperparameter 'foo'
    >>>
    >>> @mktransformer
    >>> def MyTransformer(**kwargs):
    >>>     # Implementation of the transformation function
    >>>
    >>> @mktransformer(bar=2)
    >>> def MyTransformerWithHyperparam(**kwargs):
    >>>     # Implementation of the transformation function with
    >>>     # hyperparameter 'bar'

    These decorators enable the creation of aggregation and transformation
    classes based on provided functions, allowing users to
    define decision-making models with less flexibility than traditional
    inheritance-based models.

    For more information check the tutorial Extending Aggregation and Transformation Functions

  • New Module: Introduced the skcriteria.testing module, exposing utility functions for for comparing objects created in Scikit-Criteria in a testing environment. These functions facilitate the comparison of instances of the DecisionMatrix, ResultABC, and RanksComparator classes.

    The assertion functions utilize pandas and numpy testing utilities for comparing matrices, series, and other attributes.

    Check the Reference for more information.

  • New The API of the agg, pipeline, preprocessing, and extend modules has
    been cleaned up to prevent autocompletion with imports from other modules.
    The imported modules are still present, but they are excluded when attempting
    to autocomplete. This functionality is achieved thanks to the context manager
    skcriteria.utils.cmanagers.hidden().

  • New All methods (agg and transformers) has a new get_method_name
    instance method.

  • Drop Drop support for Python 3.8

0.8.6

21 Sep 19:01
Compare
Choose a tag to compare

Version 0.8.6

  • New Rank reversal 1 implementhed in the RankInvariantChecker class

    >>> import skcriteria as skc
    >>> from skcriteria.cmp import RankInvariantChecker
    >>> from skcriteria.agg.similarity import TOPSIS
    
    >>> dm = skc.datasets.load_van2021evaluation()
    >>> rrt1 = RankInvariantChecker(TOPSIS())
    >>> rrt1.evaluate(dm)
    <RanksComparator [ranks=['Original', 'M.ETH', 'M.LTC', 'M.XLM', 'M.BNB', 'M.ADA', 'M.LINK', 'M.XRP', 'M.DOGE']]>
  • New The module skcriteria.madm was deprecated in favor
    of skcriteria.agg

  • Add support for Python 3.11.

  • Removed Python 3.7. Google collab now work with 3.8.

  • Updated Scikit-Learn to 1.3.x.

  • Now all cached methods and properties are stored inside the instance.
    Previously this was stored inside the class generating a memoryleak.

0.8.5

21 Sep 18:48
Compare
Choose a tag to compare

Version 0.8.5

  • New Rank reversal 1 implementhed in the RankInvariantChecker class

    >>> import skcriteria as skc
    >>> from skcriteria.cmp import RankInvariantChecker
    >>> from skcriteria.agg.similarity import TOPSIS
    
    >>> dm = skc.datasets.load_van2021evaluation()
    >>> rrt1 = RankInvariantChecker(TOPSIS())
    >>> rrt1.evaluate(dm)
    <RanksComparator [ranks=['Original', 'M.ETH', 'M.LTC', 'M.XLM', 'M.BNB', 'M.ADA', 'M.LINK', 'M.XRP', 'M.DOGE']]>
  • New The module skcriteria.madm was deprecated in favor
    of skcriteria.agg

  • Add support for Python 3.11.

  • Removed Python 3.7. Google collab now work with 3.8.

  • Updated Scikit-Learn to 1.3.x.

  • Now all cached methods and properties are stored inside the instance.
    Previously this was stored inside the class generating a memoryleak.

0.8.3

28 Nov 00:30
Compare
Choose a tag to compare

Fixed a bug detected on the EntropyWeighted, Now works as the literature specifies

0.8.2

02 Nov 16:58
Compare
Choose a tag to compare
  • We bring back Python 3.7 because is the version used in google.colab.
  • Bugfixes in plot.frontier and dominance.eq.

0.8.2.dev0

02 Nov 16:49
Compare
Choose a tag to compare
0.8.2.dev0 Pre-release
Pre-release
changelog

0.8.1

26 Oct 12:29
Compare
Choose a tag to compare

Add pyproject.toml to MANIFEST.in this is needed for conda-forge

0.8

26 Oct 03:56
77fa2d9
Compare
Choose a tag to compare
0.8

Version 0.8

  • New The skcriteria.cmp package utilities to compare rankings.

  • New The new package skcriteria.datasets include two datasets (one a
    toy and one real) to quickly start your experiments.

  • New DecisionMatrix now can be sliced with a syntax similar of the
    pandas.DataFrame.

    • dm["c0"] cut the $c0$ criteria.
    • dm[["c0", "c2"] cut the criteria $c0$ and $c2$.
    • dm.loc["a0"] cut the alternative $a0$.
    • dm.loc[["a0", "a1"]] cut the alternatives $a0$ and $a1$.
    • dm.iloc[0:3] cuts from the first to the third alternative.
  • New imputation methods for replacing missing data with substituted
    values. These methods are in the module skcriteria.preprocessing.impute.

  • New results object now has a to_series method.

  • Changed Behaviour: The ranks and kernels equals are now called
    values_equals. The new aequals support tolerances to compare
    numpy arrays internally stored in extra_, and the equals method is
    equivalent to aequals(rtol=0, atol=0).

  • We detected a bad behavior in ELECTRE2, so we decided to launch a FutureWarning when the
    class is instantiated. In the version after 0.8, a new implementation of ELECTRE2 will be
    provided.

  • Multiple __repr__ was improved to folow the
    Python recomendation

  • Critic weighter was renamed to CRITIC (all capitals) to be consistent
    with the literature. The old class is still there but is deprecated.

  • All the functions and classes of skcriteria.preprocessing.distance was
    moved to skcriteria.preprocessing.scalers.

  • The StdWeighter now uses the sample standar-deviation.
    From the numerical point of view, this does not generate any change,
    since the deviations are scaled by the sum. Computationally speaking there
    may be some difference from the ~5th decimal digit onwards.

  • Two method of the Objective enum was deprecated and replaced:

    • Objective.construct_from_alias() -> Objective.from_alias() (classmethod)
    • Objective.to_string() -> Objective.to_symbol()'

    The deprecated methods will be removed in version 1.0.

  • Add a dominance plot DecisionMatrix.plot.dominance().

  • WeightedSumModel raises a ValueError when some value $&lt; 0$.

  • Moved internal modules

    • skcriteria.core.methods.SKCTransformerABC ->
      skcriteria.preprocessing.SKCTransformerABC
    • skcriteria.core.methods.SKCMatrixAndWeightTransformerABC ->
      skcriteria.preprocessing.SKCMatrixAndWeightTransformerABC