Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wildart/manifoldlearning.jl
A Julia package for manifold learning and nonlinear dimensionality reduction
https://github.com/wildart/manifoldlearning.jl
diffusion-maps dimensionality-reduction isomap julia lle manifold-learning
Last synced: 20 days ago
JSON representation
A Julia package for manifold learning and nonlinear dimensionality reduction
- Host: GitHub
- URL: https://github.com/wildart/manifoldlearning.jl
- Owner: wildart
- License: other
- Created: 2014-07-19T03:30:31.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-03-02T02:44:13.000Z (9 months ago)
- Last Synced: 2024-10-19T09:09:25.914Z (about 1 month ago)
- Topics: diffusion-maps, dimensionality-reduction, isomap, julia, lle, manifold-learning
- Language: Julia
- Homepage:
- Size: 3.5 MB
- Stars: 91
- Watchers: 6
- Forks: 22
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# ManifoldLearning
*A Julia package for manifold learning and nonlinear dimensionality reduction.*
| **Documentation** | **Build Status** |
|:----------------------------------------------------------------------------:|:-----------------------------------------------------------------:|
| [![][docs-stable-img]][docs-stable-url] [![][docs-dev-img]][docs-dev-url] | [![][CI-img]][CI-url] [![][coveralls-img]][coveralls-url] |## Methods
- Isomap
- Diffusion maps
- Locally Linear Embedding (LLE)
- Hessian Eigenmaps (HLLE)
- Laplacian Eigenmaps (LEM)
- Local tangent space alignment (LTSA)
- t-Distributed Stochastic Neighborhood Embedding (t-SNE)## Installation
The package can be installed with the Julia package manager.
From the Julia REPL, type `]` to enter the Pkg REPL mode and run:```
pkg> add ManifoldLearning
```## Examples
A simple example of using the *Isomap* reduction method.
```julia
julia> X, _ = ManifoldLearning.swiss_roll();julia> X
3×1000 Array{Float64,2}:
-3.19512 3.51939 -0.0390153 … -9.46166 3.44159
29.1222 9.99283 2.25296 25.1417 28.8007
-10.1861 6.59074 -11.037 -1.04484 13.4034julia> M = fit(Isomap, X)
Isomap(outdim = 2, neighbors = 12)julia> Y = transform(M)
2×1000 Array{Float64,2}:
11.0033 -13.069 16.7116 … -3.26095 25.7771
18.4133 -6.2693 10.6698 20.0646 -24.8973
```## Performance
Most of the methods use *k*-nearest neighbors method for constructing local subspace representation. By default, neighbors are computed from a *distance matrix* of a dataset. This is not an efficient method, especially, for large datasets.
Consider using a custom *k*-nearest neighbors function, e.g. from [NearestNeighbors.jl](https://github.com/KristofferC/NearestNeighbors.jl) or [FLANN.jl](https://github.com/wildart/FLANN.jl).
See example of custom `knn` function [here](misc/nearestneighbors.jl).
[docs-stable-img]: https://img.shields.io/badge/docs-stable-blue.svg
[docs-stable-url]: https://wildart.github.io/ManifoldLearning.jl/stable[docs-dev-img]: https://img.shields.io/badge/docs-dev-blue.svg
[docs-dev-url]: https://wildart.github.io/ManifoldLearning.jl/dev[CI-img]: https://github.com/wildart/ManifoldLearning.jl/actions/workflows/CI.yml/badge.svg
[CI-url]: https://github.com/wildart/ManifoldLearning.jl/actions/workflows/CI.yml[coveralls-img]: https://coveralls.io/repos/github/wildart/ManifoldLearning.jl/badge.svg?branch=master
[coveralls-url]: https://coveralls.io/r/wildart/ManifoldLearning.jl?branch=master