This package provides some support to use SimilaritySearch with manifold learning methods. In particular,
we implement the required methods to implement knn function for ManifoldLearning and also provides an UMAP
implementation that takes advantage of many SimilaritySearch features like multithreading and data independency; it supports string, sets, vectors, etc. under diverse distance functions.
The ManifoldLearning support is limited to some structure specification due to the design of the package. See the ManifoldKnnIndex type in the documentation pages.
This package also provides a pure Julia implementation of the Uniform Manifold Approximation and Projection dimension reduction algorithm
McInnes, L, Healy, J, Melville, J, UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction. ArXiV 1802.03426, 2018
The implementation in this package is based on the UMAP.jl package by Dillon Gene Daudert and collaborators. Forked and adapted to work with SimilaritySearch and take advantage of multithreading systems.
The provided implementation partially supports the ManifoldLearning API using fit and predict and similar arguments. It can use any distance function from SimilaritySearch, Distances.jl, StringDistances.jl, or any distance function implemented by the user.
Additionally, it improves multithreading support in the KNN and the UMAP projection.
https://sadit.github.io/SimilaritySearchDemos/
NOTE: Currently, these examples are working with direct implementations of this package. This will be changed soon (I will start once the package becomes part of the general registry).
This implementation is a work-in-progress. If you encounter any issues, please create an issue or make a pull request.