Skip to main content

.. -- mode: rst --

|conda_version|_ |conda_downloads|_ |pypi_version|_ |pypi_downloads|_

.. |pypi_version| image:: https://img.shields.io/pypi/v/humap.svg .. _pypi_version: https://pypi.python.org/pypi/humap/

.. |pypi_downloads| image:: https://pepy.tech/badge/humap .. _pypi_downloads: https://pepy.tech/project/humap

.. |conda_version| image:: https://anaconda.org/conda-forge/humap/badges/version.svg .. _conda_version: https://anaconda.org/conda-forge/humap

.. |conda_downloads| image:: https://anaconda.org/conda-forge/humap/badges/downloads.svg .. _conda_downloads: https://anaconda.org/conda-forge/humap

.. image:: images/humap-2M.gif :alt: HUMAP exploration on Fashion MNIST dataset

===== HUMAP

Hierarchical Manifold Approximation and Projection (HUMAP) is a technique based on UMAP <https://github.com/lmcinnes/umap/>_ for hierarchical dimensionality reduction. HUMAP allows to:

  1. Focus on important information while reducing the visual burden when exploring huge datasets;
  2. Drill-down the hierarchy according to information demand.

The details of the algorithm can be found in our paper on ArXiv <https://arxiv.org/abs/2106.07718>_. This repository also features a C++ UMAP implementation.


Installation

HUMAP was written in C++ for performance purposes, and provides an intuitive Python interface. It depends upon common machine learning libraries, such as scikit-learn and NumPy. It also needs the pybind11 due to the interface between C++ and Python.

Requirements:

  • Python 3.6 or greater
  • numpy
  • scipy
  • scikit-learn
  • pybind11
  • pynndescent (for reproducible results)
  • Eigen (C++)

If you have these requirements installed, use PyPI:

.. code:: bash

pip install humap

Alternatively (and preferable), you can use conda to install:

.. code:: bash

conda install humap

If using pip:

HUMAP depends on Eigen <https://eigen.tuxfamily.org/>_. Thus, make it sure to place the headers in /usr/local/include if using Unix or C:\Eigen if using Windows.

Manual installation:

For manually installing HUMAP, download the project and proceed as follows:

.. code:: bash

python setup.py bdist_wheel

.. code:: bash

pip install dist/humap*.whl

Usage examples

The simplest usage of HUMAP is as it follows:

Fitting the hierarchy

.. code:: python

import humap
from sklearn.datasets import fetch_openml


X, y = fetch_openml('mnist_784', version=1, return_X_y=True)

# build a hierarchy with three levels
hUmap = humap.HUMAP([0.2, 0.2])
hUmap.fit(X, y)

# embed level 2
embedding2 = hUmap.transform(2)

Refer to notebooks/ for complete examples.

C++ UMAP implementation

You can also fit a one-level HUMAP hierarchy, which essentially fits UMAP projection.

.. code:: python

umap_reducer = humap.UMAP()
embedding = umap_reducer.fit_transform(X)

Citation

Please, use the following reference to cite HUMAP in your work:

.. code:: bibtex

@misc{marciliojr_humap2021,
  title={HUMAP: Hierarchical Uniform Manifold Approximation and Projection}, 
  author={Wilson E. Marcílio-Jr and Danilo M. Eler and Fernando V. Paulovich and Rafael M. Martins},
  year={2021},
  eprint={2106.07718},
  archivePrefix={arXiv},
  primaryClass={cs.LG}
}

License

HUMAP follows the 3-clause BSD license and it uses the open-source NNDescent implementation from EFANNA <https://github.com/ZJULearning/efanna>. It also uses a C++ implementation of UMAP <http://github.com/lmcinnes/umap> for embedding hierarchy levels.

E-mail me (wilson_jr at outlook.com) if you like to contribute.

......

Metadata

Release files for humap 0.2.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for humap 0.2.8
File Size Uploaded
humap-0.2.8.tar.gz 24.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for humap 0.2.8
File Interpreter ABI Platform
humap-0.2.8-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details

Total release size: 24.6 MB

Release files / humap-0.2.8.tar.gz

Download URL humap-0.2.8.tar.gz
Size 24.2 MB
Tags Source
SHA-256 checksum
How to use checksums
be4824c44eb8a67c35ce8f9b22f798125d0066717633c0d139c356c7aa1ba111
BLAKE2b-256 checksum
How to use checksums
989ed12cea38cf34171bbdfaaca1d54bc2b72ac8f0c9e95aedb55875ab3c9895
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.13

Release files / humap-0.2.8-cp38-cp38-macosx_11_0_arm64.whl

Download URL humap-0.2.8-cp38-cp38-macosx_11_0_arm64.whl
Size 309.0 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
558b68c42366be4c5cf732e05c6c28739cbf12134af288caad446b8d7014e0f4
BLAKE2b-256 checksum
How to use checksums
84944de39198487e9d06f9ac732a7bcbc0fa31ae56931e3583179281e0139860
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.13

Release history Release notifications | RSS feed

This release

0.2.8 This release

2 release files

0.2.7

2 release files

0.2.6

1 release file

0.2.1

0.1.1

1 release file

0.1.0

2 release files

0.0.2

1 release file

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page