Success!  Woo hoo.

On Jun 26, 2009, at 10:42 PM, Grant Ingersoll wrote:

So, the problem I'm having lies in the RandomSeedGenerator in that it is writing out a Cluster, which calls Cluster.write() and does:
AbstractVector.writeVector(out, computeCentroid());

Now computeCentroid() does:
if (numPoints == 0)
     return pointTotal;
   else if (centroid == null) {
     // lazy compute new centroid
     centroid = pointTotal.divide(numPoints);
     Vector stds = pointSquaredTotal.times(numPoints).minus(
pointTotal.times(pointTotal)).assign(new SquareRootFunction())
         .divide(numPoints);
     std = stds.zSum() / 2;
   }
   return centroid;

In the case of the RandomSeedGenerator, numPoints is always == 0 because the Cluster doesn't have any points added to it. Furthermore, pointTotal is an empty Vector of the same size as the center, due to the Cluster constructor:
   super();
   this.id = nextClusterId++;
   this.center = center;
   this.numPoints = 0;
   this.pointTotal = center.like();
   this.pointSquaredTotal = center.like();

The semantics of constructing a Cluster are odd to me. Do I always have to immediately add a point to the Cluster in order for it to be "real", despite the fact that I added a Center? Isn't adding a Center effectively giving the Cluster one point?


On Jun 26, 2009, at 8:45 PM, Grant Ingersoll wrote:

Still no dice.

On Jun 26, 2009, at 7:59 PM, Grant Ingersoll wrote:

We need to make that handled separately then from the various jobs. That was one of the things that was different about the KMeansJob call.

On Jun 26, 2009, at 7:45 PM, Jeff Eastman wrote:

Found the call in the syntheticcontrol/kmeans.Job had true for the overwrite output flag. Don't think that was your problem, but something similar must be at work.



Jeff Eastman wrote:
Running the latest trunk, I get a file not found exception running synthetic control on the $output/data file. Looks like output got deleted somewhere but have not discovered where yet. Perhaps Canopy is broken or KMeans is purging output?


Grant Ingersoll wrote:
I'm running trunk. Using the data at http://people.apache.org/wikipedia/n2.tar.gz (a dump of 2302 documents from a Lucene index of Wikipedia. The chunks file in that same directory contains the original files). Vectors are normalized using L2.

When I run K-Means on it via: org.apache.mahout.clustering.kmeans.KMeansDriver --input /Users/ grantingersoll/projects/lucene/solr/wikipedia/devWorks/n2/part- full.txt --clusters /Users/grantingersoll/projects/lucene/solr/ wikipedia/devWorks/n2/clusters --k 10 --output /Users/ grantingersoll/projects/lucene/solr/wikipedia/devWorks/n2/k- output --distance org.apache.mahout.utils.CosineDistanceMeasure

I get the two directories seen in n2-output. The clusters-0 and clusters-1 files both contain a single vector which is all 0.

I've also tried SquaredEuclidean, but to no avail.

Any insight into what I'm doing wrong would be appreciated.

Thanks,
Grant







--------------------------
Grant Ingersoll
http://www.lucidimagination.com/

Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids) using Solr/Lucene:
http://www.lucidimagination.com/search


--------------------------
Grant Ingersoll
http://www.lucidimagination.com/

Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids) using Solr/Lucene:
http://www.lucidimagination.com/search


--------------------------
Grant Ingersoll
http://www.lucidimagination.com/

Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids) using Solr/Lucene:
http://www.lucidimagination.com/search


--------------------------
Grant Ingersoll
http://www.lucidimagination.com/

Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids) using Solr/Lucene:
http://www.lucidimagination.com/search

Reply via email to