Пример #1
0
 public static String getClusterName(Cluster cluster) {
   StringBuilder sb = new StringBuilder("{");
   for (int i = 0; i < cluster.getPoints().size(); i++) {
     sb.append(cluster.getPoints().get(i).getPointName()).append(",");
   }
   return sb.substring(0, sb.length() - 1) + "}";
 }
Пример #2
0
  @Test
  public void testCertainSpace() {
    KMeansPlusPlusClusterer.EmptyClusterStrategy[] strategies = {
      KMeansPlusPlusClusterer.EmptyClusterStrategy.LARGEST_VARIANCE,
      KMeansPlusPlusClusterer.EmptyClusterStrategy.LARGEST_POINTS_NUMBER,
      KMeansPlusPlusClusterer.EmptyClusterStrategy.FARTHEST_POINT
    };
    for (KMeansPlusPlusClusterer.EmptyClusterStrategy strategy : strategies) {
      int numberOfVariables = 27;
      // initialise testvalues
      int position1 = 1;
      int position2 = position1 + numberOfVariables;
      int position3 = position2 + numberOfVariables;
      int position4 = position3 + numberOfVariables;
      // testvalues will be multiplied
      int multiplier = 1000000;

      DoublePoint[] breakingPoints = new DoublePoint[numberOfVariables];
      // define the space which will break the cluster algorithm
      for (int i = 0; i < numberOfVariables; i++) {
        int points[] = {position1, position2, position3, position4};
        // multiply the values
        for (int j = 0; j < points.length; j++) {
          points[j] = points[j] * multiplier;
        }
        DoublePoint DoublePoint = new DoublePoint(points);
        breakingPoints[i] = DoublePoint;
        position1 = position1 + numberOfVariables;
        position2 = position2 + numberOfVariables;
        position3 = position3 + numberOfVariables;
        position4 = position4 + numberOfVariables;
      }

      for (int n = 2; n < 27; ++n) {
        KMeansPlusPlusClusterer<DoublePoint> transformer =
            new KMeansPlusPlusClusterer<DoublePoint>(
                n, 100, new EuclideanDistance(), random, strategy);

        List<? extends Cluster<DoublePoint>> clusters =
            transformer.cluster(Arrays.asList(breakingPoints));

        Assert.assertEquals(n, clusters.size());
        int sum = 0;
        for (Cluster<DoublePoint> cluster : clusters) {
          sum += cluster.getPoints().size();
        }
        Assert.assertEquals(numberOfVariables, sum);
      }
    }
  }