Package Exports
- simple-kmeans
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (simple-kmeans) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
simple-kmeans
A simple implementation of a single dimensional k-means clustering algorithm.
Features
- Single dimensional k-means clustering
- Supports custom number of clusters and seeds
- Supports pre-defined cluster starting points to avoid random result
- Supports pre-defined maximum number of iterations
- Generates random clusters and seeds if none are passed in.
- Assertion tests
Installation
npm install simple-kmeans --save
Run Tests
npm test
Usage
var kmeans = require('simple-kmeans');
// Quick test
// seeds / clusters will be randomly generated
var result = kmeans();
// result = {
// "iterations": 4,
// "result": {
// 47: [47, 47]
// 77: [78, 78, 75]
// 100: [100, 100]
// 9.5: [13, 6]
// 21.25: [21, 21, 23, 20]
// 27.5: [29, 26]
// 37.33: [40, 36, 36]
// 56.5: [56, 57]
// 65.5: [67, 64]
// }
// }
// define seeds that will be grouped into a cluster (can be randomly generated and of any length)
var seeds = [15,15,16,19,19,20,20,21,22,28,35,40,41,42,43,44,60,61,65];
// define starting point for clusters (can be randomly generated and of any length)
var starting_clusters = [10, 40];
// run kmeans clustering on data set, max iterations defaults to 9001 if not set
var result = kmeans(starting_clusters, seeds);
// result = {
// "iterations": 3,
// "result": {
// '19.5': [ 15, 15, 16, 19, 19, 20, 20, 21, 22, 28 ],
// '47.89': [ 35, 40, 41, 42, 43, 44, 60, 61, 65 ]
// }
// }
// limit number of iterations to 2
var result = kmeans(starting_clusters, seeds, 2);
// result = {
// "iterations": 2,
// "result": {
// '18.56': [ 15, 15, 16, 19, 19, 20, 20, 21, 22, 28 ],
// '45.9': [ 35, 40, 41, 42, 43, 44, 60, 61, 65 ]
// }
// }