ml-kmeans
    Preparing search index...

    ml-kmeans

    ml-kmeans

    [K-means clustering][] aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest mean.

    Zakodium logo

    Maintained by Zakodium

    NPM version npm download test coverage license

    npm i ml-kmeans

    const { kmeans } = require('ml-kmeans');

    let data = [
    [1, 1, 1],
    [1, 2, 1],
    [-1, -1, -1],
    [-1, -1, -1.5],
    ];
    let centers = [
    [1, 2, 1],
    [-1, -1, -1],
    ];

    let ans = kmeans(data, 2, { initialization: centers });
    console.log(ans);
    /*
    KMeansResult {
    clusters: [ 0, 0, 1, 1 ],
    centroids: [ [ 1, 1.5, 1 ], [ -1, -1, -1.25 ] ],
    converged: true,
    iterations: 2,
    distance: [Function: squaredEuclidean]
    }
    */

    console.log(ans.computeInformation(data));
    /*
    [
    { centroid: [ 1, 1.5, 1 ], error: 0.5, size: 2 },
    { centroid: [ -1, -1, -1.25 ], error: 0.125, size: 2 }
    ]
    */

    D. Arthur, S. Vassilvitskii, k-means++: The Advantages of Careful Seeding, in: Proc. of the 18th Annual ACM-SIAM Symposium on Discrete Algorithms, 2007, pp. 1027–1035. Link to article

    MIT