scikit-learn / scikit-learn/scikit-learn

Add the Diffusion Map Dimensionality Reduction Technique

Open
#5,818 14 comments 8 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

module:manifold New Feature
Dominant language
Python
Stars
67.3k
Forks
27.4k
Avg merge
1d 15h
Merged PRs (30d)
58

Description

The diffusion map is a dimensionality reduction technique that uses a transitional probability as its "distance" measure. It is noise-resistant and non-linear. Moreover, the algorithm itself is fast and scalable (I've used it with 50k+ samples). I wrote a quick implementation here.

It has been of interest in numerous scientific fields:
Diffusion maps (1119 citations)

Geometric diffusions as a tool for harmonic analysis and structure definition of data: Diffusion maps
(672 citations)

Functional diffusion map: a noninvasive MRI biomarker for early stratification of clinical brain tumor response (491 citations)

Diffusion maps and coarse-graining: A unified framework for dimensionality reduction, graph partitioning, and data set parameterization (450 citations)

Furthermore, a Google scholar search for "diffusion map dimensionality reduction" yields more results than "isomap", "locally linear embedding", or "hessian eigenmapping".

If I fix up my implementation, would you all be interested in having this in sklearn?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no repository files, tests, or entry points. Start by reviewing the linked implementation and the referenced diffusion-map papers; the issue does not define an acceptance test or a concrete definition of done.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.