hierarchical-clustering
Agglomerative Hierarchical clustering based on How to Explain Hierarchical Clustering.
Example
From clusterfck:
var cluster = ;var colors = 20 20 80 22 22 90 250 255 253 100 54 255; // Euclidean distance { var d = 0; for var i = 0; i < alength; i++ d += Math; return Math;} // Single-linkage clustering { return Mathmin;} var levels = ; var clusters = levelslevelslength - 1clusters;console;// => [ [ 2 ], [ 3, 1, 0 ] ]clusters = clusters;console;// => [ [ [ 250, 255, 253 ] ],// => [ [ 100, 54, 255 ], [ 22, 22, 90 ], [ 20, 20, 80 ] ] ]
API
var cluster =
var levels = cluster(options)
Options:
.input <Array> (required)
- input array.distance <Function> (required)
- distance function.linkage <Function> (required)
- linkage function or string of 'single', 'complete or 'average'.minClusters <Integer> (1)
- number of clusters you want to iterate to.maxLinkage <Integer> (Infinity)
- maximum linkage until you stop iteration
Function definitions:
{ // the smaller, the closer return <Number>} { // the smaller, the more similar return <Number>}
The output is an array of level
s, each which have the property:
.linkage <Number>
- the linkage of this level.cluster <Array>
- the clusters at this level.from <Integer>
- index of the last cluster which got merged and deleted.to <Integer>
- index of the last cluster which got merged and appended