You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sq...@apache.org on 2013/03/12 20:03:55 UTC
svn commit: r1455669 -
/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java
Author: squinn
Date: Tue Mar 12 19:03:55 2013
New Revision: 1455669
URL: http://svn.apache.org/r1455669
Log:
Added SSVD power iteration parameter to spectral kmeans cli. Updated the parameter names to match those in the SSVDcli.
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java
Modified: mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java?rev=1455669&r1=1455668&r2=1455669&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/clustering/spectral/kmeans/SpectralKMeansDriver.java Tue Mar 12 19:03:55 2013
@@ -54,6 +54,7 @@ public class SpectralKMeansDriver extend
public static final int REDUCERS = 10;
public static final int BLOCKHEIGHT = 30000;
public static final int OVERSAMPLING = 15;
+ public static final int POWERITERS = 0;
public static void main(String[] args) throws Exception {
ToolRunner.run(new SpectralKMeansDriver(), args);
@@ -73,9 +74,10 @@ public class SpectralKMeansDriver extend
addOption(DefaultOptionCreator.maxIterationsOption().create());
addOption(DefaultOptionCreator.overwriteOption().create());
addFlag("usessvd", "ssvd", "Uses SSVD as the eigensolver. Default is the Lanczos solver.");
- addOption("ssvdreducers", "r", "Number of reducers for SSVD", String.valueOf(REDUCERS));
- addOption("ssvdblockheight", "h", "Block height for SSVD", String.valueOf(BLOCKHEIGHT));
- addOption("ssvdoversampling", "p", "Oversampling parameter for SSVD", String.valueOf(OVERSAMPLING));
+ addOption("reduceTasks", "t", "Number of reducers for SSVD", String.valueOf(REDUCERS));
+ addOption("outerProdBlockHeight", "oh", "Block height of outer products for SSVD", String.valueOf(BLOCKHEIGHT));
+ addOption("oversampling", "p", "Oversampling parameter for SSVD", String.valueOf(OVERSAMPLING));
+ addOption("powerIter", "q", "Additional power iterations for SSVD", String.valueOf(POWERITERS));
Map<String, List<String>> parsedArgs = parseArguments(arg0);
if (parsedArgs == null) {
@@ -97,11 +99,12 @@ public class SpectralKMeansDriver extend
Path tempdir = new Path(getOption("tempDir"));
boolean ssvd = parsedArgs.containsKey("--usessvd");
if (ssvd) {
- int reducers = Integer.parseInt(getOption("ssvdreducers"));
- int blockheight = Integer.parseInt(getOption("ssvdblockheight"));
+ int reducers = Integer.parseInt(getOption("reduceTasks"));
+ int blockheight = Integer.parseInt(getOption("outerProdBlockHeight"));
int oversampling = Integer.parseInt(getOption("oversampling"));
+ int poweriters = Integer.parseInt(getOption("powerIter"));
run(conf, input, output, numDims, clusters, measure, convergenceDelta,
- maxIterations, tempdir, true, reducers, blockheight, oversampling);
+ maxIterations, tempdir, true, reducers, blockheight, oversampling, poweriters);
} else {
run(conf, input, output, numDims, clusters, measure, convergenceDelta,
maxIterations, tempdir, false);
@@ -122,7 +125,7 @@ public class SpectralKMeansDriver extend
Path tempDir,
boolean ssvd) throws IOException, InterruptedException, ClassNotFoundException {
run(conf, input, output, numDims, clusters, measure, convergenceDelta,
- maxIterations, tempDir, ssvd, REDUCERS, BLOCKHEIGHT, OVERSAMPLING);
+ maxIterations, tempDir, ssvd, REDUCERS, BLOCKHEIGHT, OVERSAMPLING, POWERITERS);
}
/**
@@ -138,6 +141,10 @@ public class SpectralKMeansDriver extend
* @param maxIterations the int maximum number of iterations for the k-Means calculations
* @param tempDir Temporary directory for intermediate calculations
* @param ssvd Flag to indicate the eigensolver to use
+ * @param numReducers
+ * @param blockHeight
+ * @param oversampling
+ * @param poweriters
*/
public static void run(
Configuration conf,
@@ -152,7 +159,8 @@ public class SpectralKMeansDriver extend
boolean ssvd,
int numReducers,
int blockHeight,
- int oversampling)
+ int oversampling,
+ int poweriters)
throws IOException, InterruptedException, ClassNotFoundException {
Path outputCalc = new Path(tempDir, "calculations");
@@ -200,7 +208,7 @@ public class SpectralKMeansDriver extend
solveIt.setComputeV(false);
solveIt.setComputeU(true);
solveIt.setOverwrite(true);
- solveIt.setQ(0);
+ solveIt.setQ(poweriters);
//solveIt.setBroadcast(false);
solveIt.run();
data = new Path(solveIt.getUPath());