You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sm...@apache.org on 2015/04/05 18:12:28 UTC

mahout git commit: MAHOUT-1605: Make VisualizerTest locale independent, this closes apache/mahout#107

Repository: mahout
Updated Branches:
  refs/heads/master 3a476e44f -> d8e0568e7


MAHOUT-1605: Make VisualizerTest locale independent, this closes apache/mahout#107


Project: http://git-wip-us.apache.org/repos/asf/mahout/repo
Commit: http://git-wip-us.apache.org/repos/asf/mahout/commit/d8e0568e
Tree: http://git-wip-us.apache.org/repos/asf/mahout/tree/d8e0568e
Diff: http://git-wip-us.apache.org/repos/asf/mahout/diff/d8e0568e

Branch: refs/heads/master
Commit: d8e0568e7ff45e5fcbccf4a5aaa2df6059c4aade
Parents: 3a476e4
Author: Suneel Marthi <su...@gmail.com>
Authored: Sun Apr 5 12:14:21 2015 -0400
Committer: Suneel Marthi <su...@gmail.com>
Committed: Sun Apr 5 12:14:21 2015 -0400

----------------------------------------------------------------------
 CHANGELOG                                       |  2 +
 .../classifier/df/tools/VisualizerTest.java     | 94 ++++++++++----------
 2 files changed, 49 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mahout/blob/d8e0568e/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 9b4acce..a4bda4a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,8 @@ Mahout Change Log
 
 Release 0.10.0 - unreleased
 
+  MAHOUT-1605: Make VisualizerTest locale independent (Frank Rosner, Anand Avati via smarthi)
+
   MAHOUT-1652: Java 7 upgrade (smarthi)
 
   MAHOUT-1635: Getting an exception when I provide classification labels manually for Naive Bayes (apalumbo)

http://git-wip-us.apache.org/repos/asf/mahout/blob/d8e0568e/mr/src/test/java/org/apache/mahout/classifier/df/tools/VisualizerTest.java
----------------------------------------------------------------------
diff --git a/mr/src/test/java/org/apache/mahout/classifier/df/tools/VisualizerTest.java b/mr/src/test/java/org/apache/mahout/classifier/df/tools/VisualizerTest.java
index 482682d..eacce36 100644
--- a/mr/src/test/java/org/apache/mahout/classifier/df/tools/VisualizerTest.java
+++ b/mr/src/test/java/org/apache/mahout/classifier/df/tools/VisualizerTest.java
@@ -17,9 +17,6 @@
 
 package org.apache.mahout.classifier.df.tools;
 
-import java.util.List;
-import java.util.Random;
-
 import org.apache.mahout.classifier.df.DecisionForest;
 import org.apache.mahout.classifier.df.builder.DecisionTreeBuilder;
 import org.apache.mahout.classifier.df.data.Data;
@@ -36,10 +33,16 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.collect.Lists;
+import java.text.DecimalFormat;
+import java.util.List;
+import java.util.Random;
+import java.util.ArrayList;
 
 public final class VisualizerTest extends MahoutTestCase {
   
+  private static final char DECIMAL_SEPARATOR =
+      ((DecimalFormat) DecimalFormat.getInstance()).getDecimalFormatSymbols().getDecimalSeparator();
+  
   private static final String[] TRAIN_DATA = {"sunny,85,85,FALSE,no",
       "sunny,80,90,TRUE,no", "overcast,83,86,FALSE,yes",
       "rainy,70,96,FALSE,yes", "rainy,68,80,FALSE,yes", "rainy,65,70,TRUE,no",
@@ -51,12 +54,12 @@ public final class VisualizerTest extends MahoutTestCase {
   private static final String[] TEST_DATA = {"rainy,70,96,TRUE,-",
       "overcast,64,65,TRUE,-", "sunny,75,90,TRUE,-",};
   
-  private static final String[] ATTR_NAMES = {"outlook", "temperature",
+  private static final String[] ATTRIBUTE_NAMES = {"outlook", "temperature",
       "humidity", "windy", "play"};
   
-  private Random rng;
+  private Random randomNumberGenerator;
   
-  private Data data;
+  private Data trainingData;
   
   private Data testData;
   
@@ -65,16 +68,13 @@ public final class VisualizerTest extends MahoutTestCase {
   public void setUp() throws Exception {
     super.setUp();
     
-    rng = RandomUtils.getRandom(1);
+    randomNumberGenerator = RandomUtils.getRandom(1);
     
-    // Dataset
     Dataset dataset = DataLoader
         .generateDataset("C N N C L", false, TRAIN_DATA);
     
-    // Training data
-    data = DataLoader.loadData(dataset, TRAIN_DATA);
+    trainingData = DataLoader.loadData(dataset, TRAIN_DATA);
     
-    // Test data
     testData = DataLoader.loadData(dataset, TEST_DATA);
   }
   
@@ -82,42 +82,42 @@ public final class VisualizerTest extends MahoutTestCase {
   public void testTreeVisualize() throws Exception {
     // build tree
     DecisionTreeBuilder builder = new DecisionTreeBuilder();
-    builder.setM(data.getDataset().nbAttributes() - 1);
-    Node tree = builder.build(rng, data);
+    builder.setM(trainingData.getDataset().nbAttributes() - 1);
+    Node tree = builder.build(randomNumberGenerator, trainingData);
 
-    String visualization = TreeVisualizer.toString(tree, data.getDataset(), ATTR_NAMES);
+    String visualization = TreeVisualizer.toString(tree, trainingData.getDataset(), ATTRIBUTE_NAMES);
 
     assertTrue(
-        ("\n" +
+        (String.format("\n" +
             "outlook = rainy\n" +
             "|   windy = FALSE : yes\n" +
             "|   windy = TRUE : no\n" +
             "outlook = sunny\n" +
-            "|   humidity < 77.5 : yes\n" +
-            "|   humidity >= 77.5 : no\n" +
-            "outlook = overcast : yes").equals(visualization) ||
-        ("\n" +
+            "|   humidity < 77%s5 : yes\n" +
+            "|   humidity >= 77%s5 : no\n" +
+                       "outlook = overcast : yes", DECIMAL_SEPARATOR, DECIMAL_SEPARATOR)).equals(visualization) ||
+        (String.format("\n" +
             "outlook = rainy\n" +
             "|   windy = TRUE : no\n" +
             "|   windy = FALSE : yes\n" +
             "outlook = overcast : yes\n" +
             "outlook = sunny\n" +
-            "|   humidity < 77.5 : yes\n" +
-            "|   humidity >= 77.5 : no").equals(visualization));
+            "|   humidity < 77%s5 : yes\n" +
+            "|   humidity >= 77%s5 : no", DECIMAL_SEPARATOR, DECIMAL_SEPARATOR)).equals(visualization));
   }
   
   @Test
   public void testPredictTrace() throws Exception {
     // build tree
     DecisionTreeBuilder builder = new DecisionTreeBuilder();
-    builder.setM(data.getDataset().nbAttributes() - 1);
-    Node tree = builder.build(rng, data);
+    builder.setM(trainingData.getDataset().nbAttributes() - 1);
+    Node tree = builder.build(randomNumberGenerator, trainingData);
     
     String[] prediction = TreeVisualizer.predictTrace(tree, testData,
-        ATTR_NAMES);
+			ATTRIBUTE_NAMES);
     Assert.assertArrayEquals(new String[] {
         "outlook = rainy -> windy = TRUE -> no", "outlook = overcast -> yes",
-        "outlook = sunny -> (humidity = 90) >= 77.5 -> no"}, prediction);
+        String.format("outlook = sunny -> (humidity = 90) >= 77%s5 -> no", DECIMAL_SEPARATOR)}, prediction);
   }
   
   @Test
@@ -127,12 +127,12 @@ public final class VisualizerTest extends MahoutTestCase {
         new CategoricalNode(0, new double[] {0, 1, 2}, new Node[] {
             new NumericalNode(1, 71, new Leaf(0), new Leaf(1)), new Leaf(1),
             new Leaf(0)}));
-    List<Node> trees = Lists.newArrayList();
+    List<Node> trees = new ArrayList<>();
     trees.add(root);
 
     // Forest
     DecisionForest forest = new DecisionForest(trees);
-    String visualization = ForestVisualizer.toString(forest, data.getDataset(), null);
+    String visualization = ForestVisualizer.toString(forest, trainingData.getDataset(), null);
     assertTrue(
         ("Tree[1]:\n2 < 90 : yes\n2 >= 90\n" +
             "|   0 = rainy\n" +
@@ -149,7 +149,7 @@ public final class VisualizerTest extends MahoutTestCase {
             "|   0 = overcast : yes\n" +
             "|   0 = sunny : no\n").equals(visualization));
 
-    visualization = ForestVisualizer.toString(forest, data.getDataset(), ATTR_NAMES);
+    visualization = ForestVisualizer.toString(forest, trainingData.getDataset(), ATTRIBUTE_NAMES);
     assertTrue(
         ("Tree[1]:\n" +
             "humidity < 90 : yes\n" +
@@ -171,41 +171,41 @@ public final class VisualizerTest extends MahoutTestCase {
   
   @Test
   public void testLeafless() throws Exception {
-    List<Instance> instances = Lists.newArrayList();
-    for (int i = 0; i < data.size(); i++) {
-      if (data.get(i).get(0) != 0.0d) {
-        instances.add(data.get(i));
+    List<Instance> instances = new ArrayList<>();
+    for (int i = 0; i < trainingData.size(); i++) {
+      if (trainingData.get(i).get(0) != 0.0d) {
+        instances.add(trainingData.get(i));
       }
     }
-    Data lessData = new Data(data.getDataset(), instances);
+    Data lessData = new Data(trainingData.getDataset(), instances);
     
     // build tree
     DecisionTreeBuilder builder = new DecisionTreeBuilder();
-    builder.setM(data.getDataset().nbAttributes() - 1);
+    builder.setM(trainingData.getDataset().nbAttributes() - 1);
     builder.setMinSplitNum(0);
     builder.setComplemented(false);
-    Node tree = builder.build(rng, lessData);
+    Node tree = builder.build(randomNumberGenerator, lessData);
 
-    String visualization = TreeVisualizer.toString(tree, data.getDataset(), ATTR_NAMES);
+    String visualization = TreeVisualizer.toString(tree, trainingData.getDataset(), ATTRIBUTE_NAMES);
     assertTrue(
-        ("\noutlook = sunny\n" +
-            "|   humidity < 77.5 : yes\n" +
-            "|   humidity >= 77.5 : no\n" +
-            "outlook = overcast : yes").equals(visualization) ||
-        ("\noutlook = overcast : yes\n" +
+        (String.format("\noutlook = sunny\n" +
+            "|   humidity < 77%s5 : yes\n" +
+            "|   humidity >= 77%s5 : no\n" +
+            "outlook = overcast : yes", DECIMAL_SEPARATOR, DECIMAL_SEPARATOR)).equals(visualization) ||
+        (String.format("\noutlook = overcast : yes\n" +
             "outlook = sunny\n" +
-            "|   humidity < 77.5 : yes\n" +
-            "|   humidity >= 77.5 : no").equals(visualization));
+            "|   humidity < 77%s5 : yes\n" +
+            "|   humidity >= 77%s5 : no", DECIMAL_SEPARATOR, DECIMAL_SEPARATOR)).equals(visualization));
   }
   
   @Test
   public void testEmpty() throws Exception {
-    Data emptyData = new Data(data.getDataset());
+    Data emptyData = new Data(trainingData.getDataset());
     
     // build tree
     DecisionTreeBuilder builder = new DecisionTreeBuilder();
-    Node tree = builder.build(rng, emptyData);
+    Node tree = builder.build(randomNumberGenerator, emptyData);
 
-    assertEquals(" : unknown", TreeVisualizer.toString(tree, data.getDataset(), ATTR_NAMES));
+    assertEquals(" : unknown", TreeVisualizer.toString(tree, trainingData.getDataset(), ATTRIBUTE_NAMES));
   }
 }