You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by je...@apache.org on 2010/07/10 04:32:39 UTC

svn commit: r962745 - in /mahout/trunk/core/src/main/java/org/apache/mahout/clustering: ./ canopy/ dirichlet/ dirichlet/models/ fuzzykmeans/ kmeans/ meanshift/

Author: jeastman
Date: Sat Jul 10 02:32:38 2010
New Revision: 962745

URL: http://svn.apache.org/viewvc?rev=962745&view=rev
Log:
The rest of: More refactoring to clean up the clustering display examples

Modified:
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/Cluster.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/DirichletCluster.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/L1Model.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/KMeansClusterer.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/Cluster.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/Cluster.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/Cluster.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/Cluster.java Sat Jul 10 02:32:38 2010
@@ -46,6 +46,14 @@ public interface Cluster {
    * @return a Vector
    */
   Vector getCenter();
+  
+  /**
+   * Get the "radius" of the Cluster as a Vector. Usually the radius is the standard deviation expressed
+   * as a Vector of size equal to the center. Some clusters may return zero values if not appropriate.
+   * 
+   * @return aVector
+   */
+  Vector getRadius();
 
   /**
    * Get an integer denoting the number of points observed by this cluster

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java Sat Jul 10 02:32:38 2010
@@ -127,4 +127,9 @@ public class Canopy extends ClusterBase 
   public Vector computeCentroid() {
     return getPointTotal().divide(getNumPoints());
   }
+
+  @Override
+  public Vector getRadius() {
+    return getCenter().like();
+  }
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/DirichletCluster.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/DirichletCluster.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/DirichletCluster.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/DirichletCluster.java Sat Jul 10 02:32:38 2010
@@ -128,4 +128,9 @@ public class DirichletCluster<O> impleme
     return model.getNumPoints();
   }
 
+  @Override
+  public Vector getRadius() {
+    return model.getRadius();
+  }
+
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java Sat Jul 10 02:32:38 2010
@@ -209,4 +209,9 @@ public class AsymmetricSampledNormalMode
   public int getNumPoints() {
     return s0;
   }
+
+  @Override
+  public Vector getRadius() {
+    return getStdDev();
+  }
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/L1Model.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/L1Model.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/L1Model.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/L1Model.java Sat Jul 10 02:32:38 2010
@@ -135,4 +135,9 @@ public class L1Model implements Model<Ve
     return counter;
   }
 
+  @Override
+  public Vector getRadius() {
+    return null;
+  }
+
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java Sat Jul 10 02:32:38 2010
@@ -192,4 +192,9 @@ public class NormalModel implements Mode
   public int getNumPoints() {
     return s0;
   }
+
+  @Override
+  public Vector getRadius() {
+    return mean.like().assign(getStdDev());
+  }
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java Sat Jul 10 02:32:38 2010
@@ -240,6 +240,8 @@ public class SoftCluster extends Cluster
   /** Compute the centroid and set the center to it. */
   public void recomputeCenter() {
     this.setCenter(computeCentroid());
+    // set a reasonable value, for consistency with other Clusters
+    setNumPoints((int) weightedPointTotal.zSum());
     pointProbSum = 0;
     weightedPointTotal = getCenter().like();
   }
@@ -261,4 +263,9 @@ public class SoftCluster extends Cluster
     return formatCluster(this);
   }
 
+  @Override
+  public Vector getRadius() {
+    return getCenter().like().assign(std());
+  }
+
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java Sat Jul 10 02:32:38 2010
@@ -209,9 +209,6 @@ public class Cluster extends ClusterBase
     std = getStd();
     setCenter(computeCentroid());
     centroid = null;
-    setNumPoints(0);
-    this.setPointTotal(getCenter().like());
-    this.pointSquaredTotal = getCenter().like();
   }
   
   /**
@@ -247,4 +244,9 @@ public class Cluster extends ClusterBase
     return stds.zSum() / stds.size();
   }
   
+  @Override
+  public Vector getRadius() {
+    return getCenter().like().assign(getStd());
+  }
+
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/KMeansClusterer.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/KMeansClusterer.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/KMeansClusterer.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/KMeansClusterer.java Sat Jul 10 02:32:38 2010
@@ -118,10 +118,8 @@ public class KMeansClusterer {
     boolean converged = false;
     int iteration = 0;
     while (!converged && iteration < maxIter) {
-      //System.out.println("iteration: " + iteration);
       List<Cluster> next = new ArrayList<Cluster>();
-      List<Cluster> cs = clustersList.get(iteration++);
-      for (Cluster c : cs) {
+      for (Cluster c : clustersList.get(iteration++)) {
         next.add(new Cluster(c.getCenter()));
       }
       clustersList.add(next);

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java?rev=962745&r1=962744&r2=962745&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java Sat Jul 10 02:32:38 2010
@@ -247,5 +247,10 @@ public class MeanShiftCanopy extends Clu
     Gson gson = gBuilder.create();
     return gson.fromJson(formattedString, MeanShiftCanopy.class);
   }
+
+  @Override
+  public Vector getRadius() {
+    return getCenter().like();
+  }
   
 }