Package org.apache.mahout.matrix

Examples of org.apache.mahout.matrix.Vector


      System.out.println("test k= " + k);

      List<SoftCluster> clusterList = new ArrayList<SoftCluster>();
      // pick k initial cluster centers at random
      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));
        SoftCluster cluster = new SoftCluster(vec);
        // add the center so the centroid will be correct upon output
        cluster.addPoint(cluster.getCenter(), 1);

        clusterList.add(cluster);
View Full Code Here


              .forName("UTF-8")));
*/
      SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf, new Path("testdata/clusters/part-00000"),
          Text.class, SoftCluster.class);
      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));

        SoftCluster cluster = new SoftCluster(vec);
        // add the center so the centroid will be correct upon output
        cluster.addPoint(cluster.getCenter(), 1);
        /*writer.write(cluster.getIdentifier() + '\t'
View Full Code Here

      System.out.println("testKFuzzyKMeansMRJob k= " + k);
      // pick k initial cluster centers at random
      List<SoftCluster> clusterList = new ArrayList<SoftCluster>();

      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));

        SoftCluster cluster = new SoftCluster(vec);
        cluster.addPoint(cluster.getCenter(), 1);
        clusterList.add(cluster);
      }

      // run mapper
      FuzzyKMeansMapper mapper = new FuzzyKMeansMapper();
      mapper.config(clusterList);

      DummyOutputCollector<Text, FuzzyKMeansInfo> mapCollector = new DummyOutputCollector<Text, FuzzyKMeansInfo>();
      for (Vector point : points) {
        mapper.map(new Text(), point, mapCollector,
            null);
      }

      // now verify mapper output
      assertEquals("Mapper Keys", k + 1, mapCollector.getData().size());

      Map<Vector, Double> pointTotalProbMap = new HashMap<Vector, Double>();

      for (String key : mapCollector.getKeys()) {
        // SoftCluster cluster = SoftCluster.decodeCluster(key);
        List<FuzzyKMeansInfo> values = mapCollector.getValue(key);

        for (FuzzyKMeansInfo value : values) {

          Double val = pointTotalProbMap.get(value.getVector());
          double probVal = 0.0;
          if (val != null) {
            probVal = val;
          }

          pointTotalProbMap.put(value.getVector(), probVal + value.getProbability());
        }
      }

      for (Map.Entry<Vector, Double> entry : pointTotalProbMap.entrySet()) {
        Vector key = entry.getKey();
        double value = round(entry.getValue(), 1);

        assertEquals("total Prob for Point:" + key, 1.0, value);
      }
    }
View Full Code Here

      System.out.println("testKFuzzyKMeansMRJob k= " + k);
      // pick k initial cluster centers at random
      List<SoftCluster> clusterList = new ArrayList<SoftCluster>();

      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));

        SoftCluster cluster = new SoftCluster(vec);
        cluster.addPoint(cluster.getCenter(), 1);
        clusterList.add(cluster);
      }
View Full Code Here

      System.out.println("testKFuzzyKMeansMRJob k= " + k);
      // pick k initial cluster centers at random
      List<SoftCluster> clusterList = new ArrayList<SoftCluster>();

      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));

        SoftCluster cluster = new SoftCluster(vec, i);
        // cluster.addPoint(cluster.getCenter(), 1);
        clusterList.add(cluster);
      }

      // run mapper
      FuzzyKMeansMapper mapper = new FuzzyKMeansMapper();
      mapper.config(clusterList);

      DummyOutputCollector<Text, FuzzyKMeansInfo> mapCollector = new DummyOutputCollector<Text, FuzzyKMeansInfo>();
      for (Vector point : points) {
        mapper.map(new Text(), point, mapCollector,
            null);
      }

      // run combiner
      DummyOutputCollector<Text, FuzzyKMeansInfo> combinerCollector = new DummyOutputCollector<Text, FuzzyKMeansInfo>();
      FuzzyKMeansCombiner combiner = new FuzzyKMeansCombiner();

      for (String key : mapCollector.getKeys()) {

        List<FuzzyKMeansInfo> values = mapCollector.getValue(key);
        combiner.reduce(new Text(key), values.iterator(), combinerCollector,
            null);
      }

      // run reducer
      DummyOutputCollector<Text, SoftCluster> reducerCollector = new DummyOutputCollector<Text, SoftCluster>();
      FuzzyKMeansReducer reducer = new FuzzyKMeansReducer();
      reducer.config(clusterList);

      for (String key : combinerCollector.getKeys()) {
        List<FuzzyKMeansInfo> values = combinerCollector.getValue(key);
        reducer
            .reduce(new Text(key), values.iterator(), reducerCollector, null);
      }

      // now verify the reducer output
      assertEquals("Reducer Output", k + 1, combinerCollector.getData().size());

      // compute the reference result after one iteration and compare
      List<SoftCluster> reference = new ArrayList<SoftCluster>();
      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));
        reference.add(new SoftCluster(vec, i));
      }
      iterateReference(points, reference, measure);
      for (SoftCluster key : reference) {
        String clusterId = key.getIdentifier();
View Full Code Here

      System.out.println("testKFuzzyKMeansMRJob k= " + k);
      // pick k initial cluster centers at random
      List<SoftCluster> clusterList = new ArrayList<SoftCluster>();

      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));

        SoftCluster cluster = new SoftCluster(vec, i);
        cluster.addPoint(cluster.getCenter(), 1);
        clusterList.add(cluster);
      }

      // run mapper
      FuzzyKMeansMapper mapper = new FuzzyKMeansMapper();
      mapper.config(clusterList);

      DummyOutputCollector<Text, FuzzyKMeansInfo> mapCollector = new DummyOutputCollector<Text, FuzzyKMeansInfo>();
      for (Vector point : points) {
        mapper.map(new Text(), point, mapCollector,
            null);
      }
      for (SoftCluster softCluster : clusterList) {
        softCluster.recomputeCenter();
      }
      // run combiner
      DummyOutputCollector<Text, FuzzyKMeansInfo> combinerCollector = new DummyOutputCollector<Text, FuzzyKMeansInfo>();
      FuzzyKMeansCombiner combiner = new FuzzyKMeansCombiner();
      //combiner.configure();
      for (String key : mapCollector.getKeys()) {

        List<FuzzyKMeansInfo> values = mapCollector.getValue(key);
        combiner.reduce(new Text(key), values.iterator(), combinerCollector,
            null);
      }

      // run reducer
      DummyOutputCollector<Text, SoftCluster> reducerCollector = new DummyOutputCollector<Text, SoftCluster>();
      FuzzyKMeansReducer reducer = new FuzzyKMeansReducer();
      reducer.config(clusterList);

      for (String key : combinerCollector.getKeys()) {
        List<FuzzyKMeansInfo> values = combinerCollector.getValue(key);
        reducer
            .reduce(new Text(key), values.iterator(), reducerCollector, null);
      }

      // run clusterMapper
      List<SoftCluster> reducerCluster = new ArrayList<SoftCluster>();

      for (String key : reducerCollector.getKeys()) {
        List<SoftCluster> values = reducerCollector.getValue(key);
        reducerCluster.add(values.get(0));
      }
      for (SoftCluster softCluster : reducerCluster) {
        softCluster.recomputeCenter();
      }

      DummyOutputCollector<Text, FuzzyKMeansOutput> clusterMapperCollector = new DummyOutputCollector<Text, FuzzyKMeansOutput>();
      FuzzyKMeansClusterMapper clusterMapper = new FuzzyKMeansClusterMapper();
      clusterMapper.config(reducerCluster);
      for (Vector point : points) {
        clusterMapper.map(new Text(), point,
            clusterMapperCollector, null);
      }

      // now run for one iteration of referencefuzzykmeans and compare the
      // results
      // compute the reference result after one iteration and compare
      List<SoftCluster> reference = new ArrayList<SoftCluster>();
      for (int i = 0; i < k + 1; i++) {
        Vector vec = tweakValue(points.get(i));
        reference.add(new SoftCluster(vec, i));
      }
      Map<String, String> pointClusterInfo = new HashMap<String, String>();
      referenceFuzzyKMeans(points, reference, pointClusterInfo,
          EuclideanDistanceMeasure.class.getName(), 0.001, 1);
View Full Code Here

  public static List<Vector> getPoints(double[][] raw) {
    List<Vector> points = new ArrayList<Vector>();
    for (int i = 0; i < raw.length; i++) {
      double[] fr = raw[i];
      Vector vec = new SparseVector(String.valueOf(i), fr.length);
      vec.assign(fr);
      points.add(vec);
    }
    return points;
  }
View Full Code Here

    for (int k = 0; k < points.size(); k++) {
      System.out.println("Test k=" + (k + 1) + ':');
      // pick k initial cluster centers at random
      List<Cluster> clusters = new ArrayList<Cluster>();
      for (int i = 0; i < k + 1; i++) {
        Vector vec = points.get(i);
        clusters.add(new VisibleCluster(vec));
      }
      // iterate clusters until they converge
      int maxIter = 10;
      referenceKmeans(points, clusters, measure, maxIter);
View Full Code Here

    for (int k = 0; k < points.size(); k++) {
      // pick k initial cluster centers at random
      DummyOutputCollector<Text, KMeansInfo> collector = new DummyOutputCollector<Text, KMeansInfo>();
      List<Cluster> clusters = new ArrayList<Cluster>();
      for (int i = 0; i < k + 1; i++) {
        Vector vec = points.get(i);

        Cluster cluster = new Cluster(vec);
        // add the center so the centroid will be correct upon output
        cluster.addPoint(cluster.getCenter());
        clusters.add(cluster);
      }
      mapper.config(clusters);
      // map the data
      for (Vector point : points) {
        mapper.map(new Text(), point, collector,
            null);
      }
      // now combine the data
      KMeansCombiner combiner = new KMeansCombiner();
      DummyOutputCollector<Text, KMeansInfo> collector2 = new DummyOutputCollector<Text, KMeansInfo>();
      for (String key : collector.getKeys()) {
        combiner.reduce(new Text(key), collector.getValue(key).iterator(),
            collector2, null);
      }

      assertEquals("Number of map results", k + 1, collector2.getData().size());
      // now verify that all points are accounted for
      int count = 0;
      Vector total = new DenseVector(2);
      for (String key : collector2.getKeys()) {
        List<KMeansInfo> values = collector2.getValue(key);
        assertEquals("too many values", 1, values.size());
        //String value = values.get(0).toString();
        KMeansInfo info = values.get(0);

        count += info.getPoints();
        total = total.plus(info.getPointTotal());
      }
      assertEquals("total points", 9, count);
      assertEquals("point total[0]", 27, (int) total.get(0));
      assertEquals("point total[1]", 27, (int) total.get(1));
    }
  }
View Full Code Here

      System.out.println("K = " + k);
      // pick k initial cluster centers at random
      DummyOutputCollector<Text, KMeansInfo> collector = new DummyOutputCollector<Text, KMeansInfo>();
      List<Cluster> clusters = new ArrayList<Cluster>();
      for (int i = 0; i < k + 1; i++) {
        Vector vec = points.get(i);
        Cluster cluster = new Cluster(vec, i);
        // add the center so the centroid will be correct upon output
        // cluster.addPoint(cluster.getCenter());
        clusters.add(cluster);
      }
      mapper.config(clusters);
      // map the data
      for (Vector point : points) {
        mapper.map(new Text(), point, collector,
            null);
      }
      // now combine the data
      KMeansCombiner combiner = new KMeansCombiner();
      DummyOutputCollector<Text, KMeansInfo> collector2 = new DummyOutputCollector<Text, KMeansInfo>();
      for (String key : collector.getKeys()) {
        combiner.reduce(new Text(key), collector.getValue(key).iterator(),
            collector2, null);
      }

      // now reduce the data
      KMeansReducer reducer = new KMeansReducer();
      reducer.config(clusters);
      DummyOutputCollector<Text, Cluster> collector3 = new DummyOutputCollector<Text, Cluster>();
      for (String key : collector2.getKeys()) {
        reducer.reduce(new Text(key), collector2.getValue(key).iterator(),
            collector3, null);
      }

      assertEquals("Number of map results", k + 1, collector3.getData().size());

      // compute the reference result after one iteration and compare
      List<Cluster> reference = new ArrayList<Cluster>();
      for (int i = 0; i < k + 1; i++) {
        Vector vec = points.get(i);
        reference.add(new Cluster(vec, i));
      }
      boolean converged = iterateReference(points, reference,
          euclideanDistanceMeasure);
      if (k == 8) {
View Full Code Here

TOP

Related Classes of org.apache.mahout.matrix.Vector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.