Home

Awesome

First Integer Neighbor Clustering Hierarchy (FINCH) Algorithm

alt text

FINCH is a parameter-free fast and scalable clustering algorithm. it stands out for its speed and clustering quality. The algorithm is described in our paper Efficient Parameter-free Clustering Using First Neighbor Relations published in CVPR 2019 . Read Paper.

Installation

The project is available in PyPI. To install run:

pip install finch-clust

Optional. Install PyNNDescent to get first neighbours for large data

To install finch with pynndescent run:

pip install "finch-clust[ann]"

Usage:

typically you would run:

from finch import FINCH
c, num_clust, req_c = FINCH(data)

You can set options e.g., required number of cluster or distance etc,

c, num_clust, req_c = FINCH(data, initial_rank=None, req_clust=None, distance='cosine', verbose=True)

For more details on meaning of input arguments check README in finch directory.

Matlab usage

Correponding Matlab implementation is provided in the matlab directory.

Demos

The following demo notebooks are available to see the usage in clustering a dataset.

  1. Basic usage on 2D toy data
  2. Clustering STL-10 dataset with FINCH

Relevant tools built on FINCH

Citation

@inproceedings{finch,
    author    = {M. Saquib Sarfraz and Vivek Sharma and Rainer Stiefelhagen}, 
    title     = {Efficient Parameter-free Clustering Using First Neighbor Relations}, 
    booktitle = {Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
    pages = {8934--8943}
    year  = {2019}
}