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};
