示例#1
0
 void Cluster::pickCentroids(unsigned int k, Point **pointArray) {
     try {
         if (k >= __size) {
             for (int i = 0; i < k; i++) {
                 if (i < __size) {
                     *pointArray[i] = (*this)[i];
                 }
                 else {
                     for (int j = 0; j < pointArray[i]->getDims(); j++) {
                         pointArray[i][j] = std::numeric_limits<double>::max();
                     }
                 }
             }
         }
         else {
             double x = static_cast<double>(__size) / k;
             for (int i = 0; i < k; i++) {
                 *pointArray[i] = (*this)[static_cast<int>(i * x)];
             }
         }
     }
     catch(ZeroDimensionsEx) {
         std::cout << ZeroDimensionsEx();
     }
 }
示例#2
0
 Cluster::Cluster(unsigned int d) : centroid(d,*this){
     if(d == 0){
         throw ZeroDimensionsEx();
     }
     __size = 0;
     __points = nullptr;
     __dimensionality = d;
     __id = __idGenerator++;
 }