Recent Releases of metric-learn
metric-learn - 0.7.0
What's Changed
- Update paper ref after JMLR acceptance by @bellet in https://github.com/scikit-learn-contrib/metric-learn/pull/301
- [MRG] Fix test for componentsfrommetric and add tests for checksdpfromeigen by @wdevazelhes in https://github.com/scikit-learn-contrib/metric-learn/pull/303
- Fix CI build - flake8 E231 by @terrytangyuan in https://github.com/scikit-learn-contrib/metric-learn/pull/304
- [MRG+2] Update repo to work with both new and old scikit-learn by @wdevazelhes in https://github.com/scikit-learn-contrib/metric-learn/pull/313
- [MRG+1] add github issues buttons by @wdevazelhes in https://github.com/scikit-learn-contrib/metric-learn/pull/316
- [MRG] Fix urls in issue buttons by @bellet in https://github.com/scikit-learn-contrib/metric-learn/pull/319
- Fix 4 tests by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/321
- Addressing LFDA sign indeterminacy by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/326
- YML file: CI Migration to Github Actions by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/327
- Tidy up files to reflect the migration to GitHub Actions by @terrytangyuan in https://github.com/scikit-learn-contrib/metric-learn/pull/328
- SCML iris test refactor [Minor] by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/332
- Change min sklearn version to 0.21.3 by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/334
- Disallow 0 on Triplets predictions by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/331
- [Minor] Change SCML supervised docs by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/337
score_pairsrefactor by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/333- Fix 7 sources of warnings in the tests by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/339
- [Tests][Warnings] Cut all warnings from SCML using a minimal solution by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/341
- Threshold must be a real number by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/322
- [Minor] GUI for matplotlib to run examples by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/323
- [MRG][DOC] Fixes almost all warnings in the docs by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/338
- Update SCML docstring by @nikosmichas in https://github.com/scikit-learn-contrib/metric-learn/pull/347
- SCML: Raise ValueError if nfeatures larger than ntriplets by @nikosmichas in https://github.com/scikit-learn-contrib/metric-learn/pull/350
- Rename variables, proposed by issue #257 by @mvargas33 in https://github.com/scikit-learn-contrib/metric-learn/pull/324
- [MRG] Fix inaccurate SCML doctring for 'triplet_diffs' option by @bellet in https://github.com/scikit-learn-contrib/metric-learn/pull/351
New Contributors
- @mvargas33 made their first contribution in https://github.com/scikit-learn-contrib/metric-learn/pull/321
- @nikosmichas made their first contribution in https://github.com/scikit-learn-contrib/metric-learn/pull/347
Full Changelog: https://github.com/scikit-learn-contrib/metric-learn/compare/v0.6.2...v0.7.0
- Python
Published by perimosocordiae over 2 years ago
metric-learn - 0.6.2
This release uniformizes well version numbers that were mistaken in the previous release.
- Python
Published by wdevazelhes over 5 years ago
metric-learn - 0.6.1
This release explicitly requires python>=3.6 and scikit-learn>=0.20.3 to install it.
- Python
Published by wdevazelhes over 5 years ago
metric-learn - 0.6.0
This release features various fixes and improvements, as well as a new triplet-based algorithm, SCML (see http://researchers.lille.inria.fr/abellet/papers/aaai14.pdf), and an associated Triplets API. Triplets-based metric learning algorithms are used in settings where we have an "anchor" sample that we want to be closer with a "positive" sample than with a "negative" sample. Consistently with related packages like scikit-learn, we have also dropped support for Python 2 and Python 3.5.
New algorithms - Add Sparse Compositional Metric Learning (SCML) (#278)
General updates on the package - Drop support for python 2 and python 3.5 (#291) - Add the Triplets API (#279) - Solve issues in the documentation (#265, #266, #271, #274, #280) - Allow installation from conda (#283) - Fix covariance initialization when matrix is not invertible (#277) - Add more robusts checks that an estimator is fitted (#267)
Improvements to existing algorithms - Improve LMNN's verbose (#253) - Fix chunk generation in RCA (#254, #263)
- Python
Published by wdevazelhes over 5 years ago
metric-learn - 0.5.0
This is a major release in which the API (in particular for weakly-supervised algorithms) was largely refurbished in order to make it more unified and largely compatible with scikit-learn. Note that for this reason, you might encounter a significant amount of DeprecationWarning and ChangedBehaviourWarning. These warnings will disappear in version 0.6.0. The changes are summarized below:
All algorithms:
- Uniformize initialization for all algorithms: all algorithms that have a 'prior' or an 'init' as a parameter, can now choose it in a unified way, between (more) different choices ('identity', 'random', etc...) (#195 )
- Rename
num_dimston_componentsfor algorithms that have such a parameter. (#193) metric()method has been renamed intoget_mahalanobis_matrix(#152)- You can now use the function
score_pairsto score a bunch of pair of points (return the distance between them), orget_metricto get a metric function that can be plugged into scikit-learn estimators like any scipy distance.
Weakly supervised algorithms
- major API changes (#139, #217, #220, #197, #168) allowing greater compatibility with scikit-learn routines:
- in order to
fitweakly supervised algorithms, users now have to provide 3d arrays of tuples (and possibly an array of labelsy). For pairs learners, instead ofXand[a, b, c, d]as before, we should have an arraypairssuch thatpairs[i] = X[a[k], b[k]]ify[i] == 1orX[c[k], d[k]] if y[i] != 1, wherekis some integer (you can obtain such a representation by stacking horizontallyaandb, thencandd, stacking these vertically, and taking X[this array of indices]). For quadruplets learners, one should have the same form of input, instead that there is no need fory, and that the 3d array will be an array of 4-uples instead of 2-uples. The two first elements of each quadruplet are the ones that we want to be more similar to each other than the last two. - Alternatively, a "preprocessor" can be used, if users instead want to give tuples of indices and not tuples of plain points, for less redundant manipulation of data. Custom preprocessor can be easily written for advanced use (e.g., to load and encode images from file paths).
- You can also use
predicton a given pair or quadruplet, i.e. predict whether the pair is similar or not, or in the case of quadruplets, whether a given new quadruplet is in the right ordering or not - For pairs, this prediction depends on a threshold that can be set with
set_thresholdand calibrated on some data withcalibrate_threshold. - For pairs, a default
scoreis defined, which is the AUC (Area under the ROC Curve). For quadruplets, the defaultscoreis the accuracy (proportion of quadruplets given in the right order). - All of the above allows the algorithms to be compatible with scikit-learn for cross-validation, grid-search etc...
- For more information about these changes, see the new documentation
- in order to
- major API changes (#139, #217, #220, #197, #168) allowing greater compatibility with scikit-learn routines:
Supervised algorithms
- deprecation of
num_labeledparameter (#119): - ITML_supervised bounds must now be set in init and not fit anymore (#163)
- deprecation of
use_pcain LMNN (#231). - the random seed for generating constraints has now to be put at initialization rather than fit time (#224).
- removed preprocessing the data for RCA (#194).
- removed shogun dependency for LMNN (#216).
- deprecation of
Improved documentation:
- mathematical formulation of algorithms (#178)
- general introduction to metric learning, use cases, different problem formulations (#145)
- description of the API in the user guide (#208 and #229)
Bug fixes:
- scikit-learn's fix https://github.com/scikit-learn/scikit-learn/pull/13276 fixed SDML when the matrix to reconstruct is PSD, and the use of skggm fixed it in cases where the matrix is not PSD but we can still converge. The use of skggm is now recommended (i.e. we recommend to install skggm to use SDML).
- For all the algorithms that had a parameter
num_dims(renamed ton_components, see above), it will now be checked to be between 1 andn_features, withn_featuresthe number of dimensions of the input space - LMNN did not update impostors at each iteration, which could result in problematic cases. Impostors are now recomputed at each iteration, which solves these problems (#228).
- The pseudo-inverse is now used in
Covarianceinstead of the plain inverse, which allows to makeCovariancework even in the case where the covariance matrix is not invertible (e.g. if the data lies on a space of smaller dimension).(#206) - There was an error in #101 that caused LMNN to return a wrong gradient (one dot product with
Lwas missing). This has been fixed in #201.
- Python
Published by bellet over 6 years ago
metric-learn - 0.4.0
- Two newly introduced algorithms:
- MLKR (Metric Learning for Kernel Regression)
- MMC (Mahalanobis Metric for Clustering)
- Improved documentation and examples
- Performance improvements
- Minor bug fixes
- Python
Published by wdevazelhes over 7 years ago
metric-learn - 0.3.0
Constraints are now managed with a unified interface (metric_learn.Constraints), which makes it easy to generate various input formats from (possibly) partial label information.
- Python
Published by perimosocordiae over 9 years ago
metric-learn - 0.2.1
All classes inheriting from BaseMetricLearner now support sklearn-style get_params and set_params.
- Python
Published by perimosocordiae almost 10 years ago
metric-learn - 0.2.0
We now support Python 3 alongside Python 2 in the same codebase.
- Python
Published by perimosocordiae over 10 years ago
metric-learn - 0.1.1
This minor release adds two new methods: - Local Fisher Discriminant Analysis (LFDA) - Relative Components Analysis (RCA)
The performance of the non-Shogun LMNN implementation has also been improved, and it should now consume less memory.
This release also includes the new Sphinx documentation and improved docstrings for many of the classes and methods,
- Python
Published by perimosocordiae over 10 years ago
metric-learn - 0.1.0
This is the first release on PyPI, thanks to @terrytangyuan.
- Python
Published by perimosocordiae over 10 years ago