@@ -3,24 +3,38 @@ const data1 = require("./data/well-separated.js");
33const data2 = require ( "./data/random_pts.js" ) ;
44const MAX = 1000 ;
55
6+ function testCentroids ( ks ) {
7+ ks . forEach ( k => {
8+ k . forEach ( v => {
9+ if ( v == 0 ) {
10+ console . error ( `Centroid on 0 ${ k } ` ) ;
11+ process . exit ( 1 ) ;
12+ }
13+ } )
14+ } )
15+ }
16+
617console . log ( "Simple data (k=3)" ) ;
718var its = 0 ;
819for ( var i = 0 ; i < MAX ; i ++ ) {
920 var res = skmeans ( data1 , 3 ) ;
21+ testCentroids ( res . centroids ) ;
1022 its += res . it ;
1123}
1224console . log ( "skmeans default\t\t=>" , its / MAX ) ;
1325
1426var its = 0 ;
1527for ( var i = 0 ; i < MAX ; i ++ ) {
1628 var res = skmeans ( data1 , 3 , "kmrand" ) ;
29+ testCentroids ( res . centroids ) ;
1730 its += res . it ;
1831}
1932console . log ( "skmeans kmrand\t\t=>" , its / MAX ) ;
2033
2134var its = 0 ;
2235for ( var i = 0 ; i < MAX ; i ++ ) {
2336 var res = skmeans ( data1 , 3 , "kmpp" ) ;
37+ testCentroids ( res . centroids ) ;
2438 its += res . it ;
2539}
2640console . log ( "skmeans kmpp\t\t=>" , its / MAX ) ;
@@ -29,20 +43,23 @@ console.log("Complex data (k=16)");
2943var its = 0 ;
3044for ( var i = 0 ; i < MAX ; i ++ ) {
3145 var res = skmeans ( data2 , 16 ) ;
46+ testCentroids ( res . centroids ) ;
3247 its += res . it ;
3348}
3449console . log ( "skmeans default\t\t=>" , its / MAX ) ;
3550
3651var its = 0 ;
3752for ( var i = 0 ; i < MAX ; i ++ ) {
3853 var res = skmeans ( data2 , 16 , "kmrand" ) ;
54+ testCentroids ( res . centroids ) ;
3955 its += res . it ;
4056}
4157console . log ( "skmeans kmrand\t\t=>" , its / MAX ) ;
4258
4359var its = 0 ;
4460for ( var i = 0 ; i < MAX ; i ++ ) {
4561 var res = skmeans ( data2 , 16 , "kmpp" ) ;
62+ testCentroids ( res . centroids ) ;
4663 its += res . it ;
4764}
4865console . log ( "skmeans kmpp\t\t=>" , its / MAX ) ;
0 commit comments