Repository: ignite
Updated Branches:
  refs/heads/master 777011896 -> 7f6cde195


IGNITE-10528: [ML] Fix incorrect comparing of double values in
ML examples.

This closes #5655


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

Branch: refs/heads/master
Commit: 7f6cde1959ec16faa3244576c82a89ae58b738bc
Parents: 7770118
Author: zaleslaw <[email protected]>
Authored: Thu Dec 13 16:50:57 2018 +0300
Committer: Yury Babak <[email protected]>
Committed: Thu Dec 13 16:50:57 2018 +0300

----------------------------------------------------------------------
 .../apache/ignite/examples/ml/knn/ANNClassificationExample.java | 3 ++-
 .../apache/ignite/examples/ml/knn/KNNClassificationExample.java | 3 ++-
 .../examples/ml/multiclass/OneVsRestClassificationExample.java  | 5 +++--
 .../ml/naivebayes/GaussianNaiveBayesTrainerExample.java         | 3 ++-
 .../bagged/BaggedLogisticRegressionSGDTrainerExample.java       | 4 +---
 .../logistic/binary/LogisticRegressionSGDTrainerExample.java    | 3 ++-
 .../ignite/examples/ml/svm/SVMBinaryClassificationExample.java  | 3 ++-
 .../ml/tree/DecisionTreeClassificationTrainerExample.java       | 3 ++-
 .../ml/tree/randomforest/RandomForestClassificationExample.java | 3 ++-
 .../org/apache/ignite/examples/ml/tutorial/TitanicUtils.java    | 3 +--
 .../apache/ignite/examples/ml/util/MLExamplesCommonArgs.java    | 2 +-
 11 files changed, 20 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/knn/ANNClassificationExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/knn/ANNClassificationExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/knn/ANNClassificationExample.java
index 419eccb..2e74f60 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/knn/ANNClassificationExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/knn/ANNClassificationExample.java
@@ -20,6 +20,7 @@ package org.apache.ignite.examples.ml.knn;
 import java.util.Arrays;
 import java.util.UUID;
 import javax.cache.Cache;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -102,7 +103,7 @@ public class ANNClassificationExample {
                     totalPredictionTime += (endPredictionTime - 
startPredictionTime);
 
                     totalAmount++;
-                    if (groundTruth != prediction)
+                    if (!Precision.equals(groundTruth, prediction, 
Precision.EPSILON))
                         amountOfErrors++;
 
                     System.out.printf(">>> | %.4f\t\t| %.4f\t\t|\n", 
prediction, groundTruth);

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/knn/KNNClassificationExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/knn/KNNClassificationExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/knn/KNNClassificationExample.java
index 647f187..460752b 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/knn/KNNClassificationExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/knn/KNNClassificationExample.java
@@ -19,6 +19,7 @@ package org.apache.ignite.examples.ml.knn;
 
 import java.io.FileNotFoundException;
 import javax.cache.Cache;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -85,7 +86,7 @@ public class KNNClassificationExample {
                     double prediction = knnMdl.apply(inputs);
 
                     totalAmount++;
-                    if (groundTruth != prediction)
+                    if (!Precision.equals(groundTruth, prediction, 
Precision.EPSILON))
                         amountOfErrors++;
 
                     System.out.printf(">>> | %.4f\t\t| %.4f\t\t|\n", 
prediction, groundTruth);

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/multiclass/OneVsRestClassificationExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/multiclass/OneVsRestClassificationExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/multiclass/OneVsRestClassificationExample.java
index d3e030b..1f81c48 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/multiclass/OneVsRestClassificationExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/multiclass/OneVsRestClassificationExample.java
@@ -20,6 +20,7 @@ package org.apache.ignite.examples.ml.multiclass;
 import java.io.FileNotFoundException;
 import java.util.Arrays;
 import javax.cache.Cache;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -125,7 +126,7 @@ public class OneVsRestClassificationExample {
                     totalAmount++;
 
                     // Collect data for model
-                    if (groundTruth != prediction)
+                    if (!Precision.equals(groundTruth, prediction, 
Precision.EPSILON))
                         amountOfErrors++;
 
                     int idx1 = (int)prediction == 1 ? 0 : ((int)prediction == 
3 ? 1 : 2);
@@ -134,7 +135,7 @@ public class OneVsRestClassificationExample {
                     confusionMtx[idx1][idx2]++;
 
                     // Collect data for model with min-max scaling
-                    if (groundTruth != predictionWithMinMaxScaling)
+                    if (!Precision.equals(groundTruth, 
predictionWithMinMaxScaling, Precision.EPSILON))
                         amountOfErrorsWithMinMaxScaling++;
 
                     idx1 = (int)predictionWithMinMaxScaling == 1 ? 0 : 
((int)predictionWithMinMaxScaling == 3 ? 1 : 2);

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/GaussianNaiveBayesTrainerExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/GaussianNaiveBayesTrainerExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/GaussianNaiveBayesTrainerExample.java
index 93b08cb..e711d84 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/GaussianNaiveBayesTrainerExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/naivebayes/GaussianNaiveBayesTrainerExample.java
@@ -20,6 +20,7 @@ package org.apache.ignite.examples.ml.naivebayes;
 import java.io.FileNotFoundException;
 import java.util.Arrays;
 import javax.cache.Cache;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -86,7 +87,7 @@ public class GaussianNaiveBayesTrainerExample {
                     double prediction = mdl.apply(inputs);
 
                     totalAmount++;
-                    if (groundTruth != prediction)
+                    if (!Precision.equals(groundTruth, prediction, 
Precision.EPSILON))
                         amountOfErrors++;
 
                     int idx1 = (int)prediction;

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/bagged/BaggedLogisticRegressionSGDTrainerExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/bagged/BaggedLogisticRegressionSGDTrainerExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/bagged/BaggedLogisticRegressionSGDTrainerExample.java
index 757efd2..3a5941e 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/bagged/BaggedLogisticRegressionSGDTrainerExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/bagged/BaggedLogisticRegressionSGDTrainerExample.java
@@ -97,9 +97,7 @@ public class BaggedLogisticRegressionSGDTrainerExample {
 
             System.out.println(">>> ---------------------------------");
 
-            Arrays.stream(score).forEach(sc -> {
-                System.out.println("\n>>> Accuracy " + sc);
-            });
+            Arrays.stream(score).forEach(sc -> System.out.println("\n>>> 
Accuracy " + sc));
 
             System.out.println(">>> Bagged logistic regression model over 
partitioned dataset usage example completed.");
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/binary/LogisticRegressionSGDTrainerExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/binary/LogisticRegressionSGDTrainerExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/binary/LogisticRegressionSGDTrainerExample.java
index aa62912..8ce46cc 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/binary/LogisticRegressionSGDTrainerExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/regression/logistic/binary/LogisticRegressionSGDTrainerExample.java
@@ -20,6 +20,7 @@ package 
org.apache.ignite.examples.ml.regression.logistic.binary;
 import java.io.FileNotFoundException;
 import java.util.Arrays;
 import javax.cache.Cache;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -98,7 +99,7 @@ public class LogisticRegressionSGDTrainerExample {
                     double prediction = mdl.apply(inputs);
 
                     totalAmount++;
-                    if(groundTruth != prediction)
+                    if (!Precision.equals(groundTruth, prediction, 
Precision.EPSILON))
                         amountOfErrors++;
 
                     int idx1 = (int)prediction;

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/svm/SVMBinaryClassificationExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/svm/SVMBinaryClassificationExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/svm/SVMBinaryClassificationExample.java
index 48e7f9a..a32ec08 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/svm/SVMBinaryClassificationExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/svm/SVMBinaryClassificationExample.java
@@ -20,6 +20,7 @@ package org.apache.ignite.examples.ml.svm;
 import java.io.FileNotFoundException;
 import java.util.Arrays;
 import javax.cache.Cache;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -87,7 +88,7 @@ public class SVMBinaryClassificationExample {
                     double prediction = mdl.apply(inputs);
 
                     totalAmount++;
-                    if(groundTruth != prediction)
+                    if (!Precision.equals(groundTruth, prediction, 
Precision.EPSILON))
                         amountOfErrors++;
 
                     int idx1 = prediction == 0.0 ? 0 : 1;

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/tree/DecisionTreeClassificationTrainerExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/tree/DecisionTreeClassificationTrainerExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/tree/DecisionTreeClassificationTrainerExample.java
index cc212e6..4b44c7f 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/tree/DecisionTreeClassificationTrainerExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/tree/DecisionTreeClassificationTrainerExample.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.examples.ml.tree;
 
 import java.util.Random;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -89,7 +90,7 @@ public class DecisionTreeClassificationTrainerExample {
                 if (i %50 == 1)
                     System.out.printf(">>> test #: %d\t\t predicted: 
%.4f\t\tlabel: %.4f\n", i, prediction, lbl);
 
-                if (prediction == lbl)
+                if (Precision.equals(prediction, lbl, Precision.EPSILON))
                     correctPredictions++;
             }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/tree/randomforest/RandomForestClassificationExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/tree/randomforest/RandomForestClassificationExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/tree/randomforest/RandomForestClassificationExample.java
index ac578df..3ce833d 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/tree/randomforest/RandomForestClassificationExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/tree/randomforest/RandomForestClassificationExample.java
@@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import javax.cache.Cache;
+import org.apache.commons.math3.util.Precision;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -97,7 +98,7 @@ public class RandomForestClassificationExample {
                     double prediction = randomForestMdl.apply(inputs);
 
                     totalAmount++;
-                    if (groundTruth != prediction)
+                    if (!Precision.equals(groundTruth, prediction, 
Precision.EPSILON))
                         amountOfErrors++;
                 }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/TitanicUtils.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/TitanicUtils.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/TitanicUtils.java
index 3a68ecb..1927a8c 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/TitanicUtils.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/tutorial/TitanicUtils.java
@@ -58,8 +58,7 @@ public class TitanicUtils {
 
             for (int i = 0; i < cells.length; i++)
                 try{
-                    if(cells[i].equals("")) data[i] = Double.NaN;
-                    else data[i] = Double.valueOf(cells[i]);
+                    data[i] = "".equals(cells[i]) ? Double.NaN : 
Double.valueOf(cells[i]);
                 } catch (java.lang.NumberFormatException e) {
 
                     try {

http://git-wip-us.apache.org/repos/asf/ignite/blob/7f6cde19/examples/src/main/java/org/apache/ignite/examples/ml/util/MLExamplesCommonArgs.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/ml/util/MLExamplesCommonArgs.java
 
b/examples/src/main/java/org/apache/ignite/examples/ml/util/MLExamplesCommonArgs.java
index 23cbe27..2f4e8c8 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/ml/util/MLExamplesCommonArgs.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/ml/util/MLExamplesCommonArgs.java
@@ -24,7 +24,7 @@ public class MLExamplesCommonArgs {
     /**
      * Unattended argument.
      */
-    public static String UNATTENDED = "unattended";
+    public static final String UNATTENDED = "unattended";
 
     /** Empty args for ML examples. */
     public static final String[] EMPTY_ARGS_ML = new String[] {"--" + 
UNATTENDED};

Reply via email to