0.1.1
Personal implementation of k-means algorithm.
Repository
Current version released
2 years ago
Versions
k_means_pp
Personal implementation of k-means algorithm.
Usage
import {
getCartesianSquaredDistance,
getVectorCentroid,
kMeans,
sfc32,
} from "https://deno.land/x/k_means_pp@0.1.0/mod.ts";
kMeans([
[-10, 5, 100],
[-11, 6, 101],
[-10.5, 6.5, 102],
[-9.5, 5.5, 103],
[-9.75, 6.25, 104],
[200, 12, -11],
[205, 11.8, -10.8],
[202, 11.5, -10],
[208, 11, -12],
[198, 11.15, -11],
[40, -200, 568],
[38, -190, 578],
[39.5, -205, 556],
[41, -200, 561],
[41, -200, 561],
], {
// The number of cluster. Required.
k: 3,
// Fields below are optional if you are using number array.
getSquaredDistance: getCartesianSquaredDistance,
getCentroid: getVectorCentroid,
// Purely optional fields
random: sfc32(0, 0, 0, 0),
iteration: 5,
});
/*
[{
centroid: [ -10.15, 5.85, 102 ],
cluster: [
{ index: 0, item: [-10, 5, 100] },
{ index: 1, item: [-11, 6, 101] },
{ index: 2, item: [-10.5, 6.5, 102] },
{ index: 3, item: [-9.5, 5.5, 103] },
{ index: 4, item: [-9.75, 6.25, 104] },
],
sumOfSquaredError: 12.899999999999999,
}, {
centroid: [ 39.9, -199, 564.8 ],
cluster: [
{ index: 5, item: [200, 12, -11] },
{ index: 6, item: [205, 11.8, -10.8] },
{ index: 7, item: [202, 11.5, -10] },
{ index: 8, item: [208, 11, -12] },
{ index: 9, item: [198, 11.15, -11] },
],
sumOfSquaredError: 65.94399999999999,
}, {
centroid: [ 202.6, 11.489999999999998, -10.959999999999999 ],
cluster: [
{ index: 10, item: [40, -200, 568] },
{ index: 11, item: [38, -190, 578] },
{ index: 12, item: [39.5, -205, 556] },
{ index: 13, item: [41, -200, 561] },
{ index: 14, item: [41, -200, 561] },
],
sumOfSquaredError: 417,
}]
*/