Clustered Learning of Approximate Manifolds
Project description
URI-ABD: Clustered Learning of Approximate Manifolds
Installation
Docker
docker build -t clam .
Python
python3 -m pip install pyclam
Usage
Docker
docker run clam --help
Python Scripting
from pyclam import criterion
from pyclam import Manifold
from pyclam.search import CAKES
from tests import synthetic_datasets
# Get the data.
data, _ = synthetic_datasets.bullseye()
# data is a numpy.ndarray in this case but it could just as easily be a numpy.memmap if your data does fit in RAM.
# We used numpy memmaps for the research, though they impose file-IO costs.
search = CAKES(data, 'euclidean')
# The Search class provides the functionality described in our CHESS paper.
# TODO: Provide link to CHESS paper
search.build(max_depth=10)
# Build the search tree to depth of 10.
# This method can be called again with a higher depth, if needed.
query, radius = data[0], 0.5
rnn_results = search.rnn_search(query, radius)
# This is how we perform rho-nearest neighbors search with radius 0.5 around the query.
knn_results = search.knn_search(query, 10)
# This is how to perform k-nearest neighbors search for the 10 nearest neighbors of query.
# TODO: Provide snippets for using CHAODA
# You can also directly use the Manifold functionality provided by CLAM.
manifold = Manifold(data, 'euclidean')
# Any metric allowed by scipy's cdist function is allowed in Manifold.
# You can also define your own distance function. It will work so long as scipy allows it.
manifold.build(
criterion.MaxDepth(20), # build the tree to a maximum depth of 20
criterion.MinRadius(0.25), # clusters with radius less than 0.25 cannot be partitioned.
criterion.Layer(6), # use the clusters ad depth 6 to build a Graph.
criterion.Leaves(), # use the leaves of the tree to build another Graph.
)
# Manifold.build can optionally take any number of criteria.
# pyclam.criterion defines some criteria that we have used in research.
# You are free to define your own.
# Take a look at pyclam/criterion.py for hints of how to define custom criteria.
The Manifold class relies on the Graph and Cluster classes. You can import these and work with them directly if you so choose. The classes and methods are all very well documented. Go crazy.
Contributing
Pull requests and bug reports are welcome. For major changes, please open an issue to discuss what you would like to change.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyclam-0.8.0.tar.gz
(34.6 kB
view details)
Built Distribution
pyclam-0.8.0-py3-none-any.whl
(41.2 kB
view details)
File details
Details for the file pyclam-0.8.0.tar.gz
.
File metadata
- Download URL: pyclam-0.8.0.tar.gz
- Upload date:
- Size: 34.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38822560f14bd2c37c9947fc4e6f2cdf3e7be71e01e08aa83cdb541ecdc7fcbb |
|
MD5 | 08b59298f5d42009e729cbce52931ef1 |
|
BLAKE2b-256 | 03712b019dfd9c43608199f483b6965d486d77d20c7bd6de6fa406c4c21f9238 |
File details
Details for the file pyclam-0.8.0-py3-none-any.whl
.
File metadata
- Download URL: pyclam-0.8.0-py3-none-any.whl
- Upload date:
- Size: 41.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 363cd90379d801d8011a7692d7b39c8af7b21a9a6bb2a961b4156a27132335a8 |
|
MD5 | 84cdcf3c48061e72828b8899bb7e0519 |
|
BLAKE2b-256 | 7ba25f0c645b2cac58b4f6c2fe2b0b7ede2238e4b28f7b57c2efeae2c36c1905 |