Fixed a bug detected on the EntropyWeighted, Now works as the literature specifies
We bring back Python 3.7 because is the version used in google.colab.
skcriteria.cmppackage utilities to compare rankings.
New The new package
skcriteria.datasetsinclude 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
New results object now has a
Changed Behaviour: The ranks and kernels
equalsare now called
values_equals. The new
aequalssupport tolerances to compare numpy arrays internally stored in
extra_, and the
equalsmethod is equivalent to
We detected a bad behavior in ELECTRE2, so we decided to launch a
FutureWarningwhen the class is instantiated. In the version after 0.8, a new implementation of ELECTRE2 will be provided.
__repr__was improved to folow the Python recomendation
Criticweighter 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.distancewas moved to
StdWeighternow 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
Objectiveenum was deprecated and replaced:
The deprecated methods will be removed in version 1.0.
Add a dominance plot
ValueErrorwhen some value < 0.
Moved internal modules
New preprocessing strategy: A new way to transform from minimization to maximization criteria:
NegateMinimize()which reverses the sign of the values of the criteria to be minimized (useful for not breaking distance relations in methods like TOPSIS). Additionally the previous we rename the
RankingResult, support repeated/tied rankings and some methods were implemented to deal with these cases.
RankingResult.has_ties_to see if there are tied values.
RankingResult.ties_to see how often values are repeated.
RankingResult.untied_rank_to get a ranking with no repeated values.
KernelResultnow implements several new properties:
kernel_alternatives_to know which alternatives are in the kernel.
kernel_size_to know the number of alternatives in the kernel.
kernel_where_was replaced by
kernelwhere_to standardize the api.
Support for Python 3.10.
All the objects of the project are now immutable by design, and can only be mutated troughs the
Dominance analysis tools (
DecisionMatrix.describe()was deprecated and will be removed in version 1.0.
New statistics functionalities
The accessors are now cached in the
Tutorial for dominance and satisfaction analysis.
TOPSIS now support hyper-parameters to select different metrics.
Generalize the idea of accessors in scikit-criteria througth a common framework (
New deprecation mechanism through the
In this version scikit-criteria was rewritten from scratch. Among other things:
The model implementation API was simplified.
Dataobject was removed in favor of
DecisionMatrixwhich implements many more useful features for MCDA.
Plots were completely re-implemented using Seaborn.
Coverage was increased to 100%.
Pipelines concept was added (Thanks to Scikit-learn).
New documentation. The quick start is totally rewritten!
Full Changelog: https://github.com/quatrope/scikit-criteria/commits/0.5
First OO stable version.