12345678910111213141516171819202122232425262728293031323334353637 |
- function Utils() {
- }
- KMEANS.prototype.getRandomVector = function(extremes) {
- var maxDim = extremes.length;
- var x = [];
- var r = 0;
-
- // calculate radius of n-sphere which covers all points in dataset
- var nSphereRadius = 0;
- for (var i = 0; i < maxDim; i++) {
- var extreme = extremes[i];
- var er = Math.max(extreme.center - extreme.min, extreme.center - extreme.max);
- if (er > nSphereRadius)
- nSphereRadius = er;
- }
-
- for (var i = 0; i < maxDim; i++) {
- var val = (Math.random() * 2) - 1;
- // adjust to radius of n-sphere
- x.push(val);
- r += val * val;
- }
-
- r = Math.sqrt(r);
-
- for (var i = 0; i < maxDim; i++) {
- x[i] /= r;
- // resize to fit n-sphere
- x[i] *= nSphereRadius;
- x[i] += extremes[i].center;
- }
-
- return x;
- }
|