stats.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const skmeans = require("../main.js");
  2. const data1 = require("./data/well-separated.js");
  3. const data2 = require("./data/random_pts.js");
  4. const MAX = 1000;
  5. function testCentroids(ks) {
  6. ks.forEach(k=>{
  7. k.forEach(v=>{
  8. if(v==0) {
  9. console.error(`Centroid on 0 ${k}`);
  10. process.exit(1);
  11. }
  12. })
  13. })
  14. }
  15. console.log("Simple data (k=3)");
  16. var its = 0;
  17. for(var i=0;i<MAX;i++) {
  18. var res = skmeans(data1,3);
  19. testCentroids(res.centroids);
  20. its += res.it;
  21. }
  22. console.log("skmeans default\t\t=>",its/MAX);
  23. var its = 0;
  24. for(var i=0;i<MAX;i++) {
  25. var res = skmeans(data1,3,"kmrand");
  26. testCentroids(res.centroids);
  27. its += res.it;
  28. }
  29. console.log("skmeans kmrand\t\t=>",its/MAX);
  30. var its = 0;
  31. for(var i=0;i<MAX;i++) {
  32. var res = skmeans(data1,3,"kmpp");
  33. testCentroids(res.centroids);
  34. its += res.it;
  35. }
  36. console.log("skmeans kmpp\t\t=>",its/MAX);
  37. console.log("Complex data (k=16)");
  38. var its = 0;
  39. for(var i=0;i<MAX;i++) {
  40. var res = skmeans(data2,16);
  41. testCentroids(res.centroids);
  42. its += res.it;
  43. }
  44. console.log("skmeans default\t\t=>",its/MAX);
  45. var its = 0;
  46. for(var i=0;i<MAX;i++) {
  47. var res = skmeans(data2,16,"kmrand");
  48. testCentroids(res.centroids);
  49. its += res.it;
  50. }
  51. console.log("skmeans kmrand\t\t=>",its/MAX);
  52. var its = 0;
  53. for(var i=0;i<MAX;i++) {
  54. var res = skmeans(data2,16,"kmpp");
  55. testCentroids(res.centroids);
  56. its += res.it;
  57. }
  58. console.log("skmeans kmpp\t\t=>",its/MAX);