SAMOA-48: Fix double processing of last even in FilterProcessor
Project: http://git-wip-us.apache.org/repos/asf/incubator-samoa/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-samoa/commit/b84e8ac6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-samoa/tree/b84e8ac6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-samoa/diff/b84e8ac6 Branch: refs/heads/master Commit: b84e8ac6b2a191ac24b78082a37a0b18aa51f98f Parents: dc99c7f Author: Gianmarco De Francisci Morales <[email protected]> Authored: Mon Nov 9 13:57:42 2015 +0200 Committer: Gianmarco De Francisci Morales <[email protected]> Committed: Mon Nov 9 14:41:33 2015 +0200 ---------------------------------------------------------------------- .../java/org/apache/samoa/learners/InstanceContent.java | 12 +++++++++--- .../ensemble/PredictionCombinerProcessor.java | 1 - .../learners/classifiers/trees/FilterProcessor.java | 2 +- .../classifiers/trees/ModelAggregatorProcessor.java | 5 ++--- 4 files changed, 12 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-samoa/blob/b84e8ac6/samoa-api/src/main/java/org/apache/samoa/learners/InstanceContent.java ---------------------------------------------------------------------- diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/InstanceContent.java b/samoa-api/src/main/java/org/apache/samoa/learners/InstanceContent.java index 7a49985..c4e6b84 100644 --- a/samoa-api/src/main/java/org/apache/samoa/learners/InstanceContent.java +++ b/samoa-api/src/main/java/org/apache/samoa/learners/InstanceContent.java @@ -25,6 +25,7 @@ package org.apache.samoa.learners; */ import net.jcip.annotations.Immutable; + import org.apache.samoa.core.SerializableInstance; import org.apache.samoa.instances.Instance; @@ -61,7 +62,7 @@ final public class InstanceContent implements Serializable { * the is training */ public InstanceContent(long index, Instance instance, - boolean isTraining, boolean isTesting) { + boolean isTraining, boolean isTesting) { if (instance != null) { this.instance = new SerializableInstance(instance); } @@ -192,6 +193,11 @@ final public class InstanceContent implements Serializable { this.isLast = isLast; } - - + @Override + public String toString() { + return String + .format( + "InstanceContent [instanceIndex=%s, classifierIndex=%s, evaluationIndex=%s, instance=%s, isTraining=%s, isTesting=%s, isLast=%s]", + instanceIndex, classifierIndex, evaluationIndex, instance, isTraining, isTesting, isLast); + } } http://git-wip-us.apache.org/repos/asf/incubator-samoa/blob/b84e8ac6/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/PredictionCombinerProcessor.java ---------------------------------------------------------------------- diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/PredictionCombinerProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/PredictionCombinerProcessor.java index 8e10094..92a209b 100644 --- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/PredictionCombinerProcessor.java +++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/PredictionCombinerProcessor.java @@ -105,7 +105,6 @@ public class PredictionCombinerProcessor implements Processor { int instanceIndex = (int) inEvent.getInstanceIndex(); addStatisticsForInstanceReceived(instanceIndex, inEvent.getClassifierIndex(), prediction, 1); - if (hasAllVotesArrivedInstance(instanceIndex)) { DoubleVector combinedVote = this.mapVotesforInstanceReceived.get(instanceIndex); if (combinedVote == null) { http://git-wip-us.apache.org/repos/asf/incubator-samoa/blob/b84e8ac6/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FilterProcessor.java ---------------------------------------------------------------------- diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FilterProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FilterProcessor.java index a55b813..2c81fd0 100644 --- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FilterProcessor.java +++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/FilterProcessor.java @@ -78,7 +78,7 @@ final class FilterProcessor implements Processor { this.waitingInstances++; if (this.waitingInstances == this.batchSize || instanceContentEvent.isLastEvent()) { // Send Instances - InstancesContentEvent outputEvent = new InstancesContentEvent(instanceContentEvent); + InstancesContentEvent outputEvent = new InstancesContentEvent(); while (!this.contentEventList.isEmpty()) { InstanceContentEvent ice = this.contentEventList.remove(0); outputEvent.add(ice.getInstanceContent()); http://git-wip-us.apache.org/repos/asf/incubator-samoa/blob/b84e8ac6/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java ---------------------------------------------------------------------- diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java index ce2d4c4..cad40a7 100644 --- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java +++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/trees/ModelAggregatorProcessor.java @@ -20,6 +20,8 @@ package org.apache.samoa.learners.classifiers.trees; * #L% */ +import static org.apache.samoa.moa.core.Utils.maxIndex; + import java.util.HashSet; import java.util.LinkedList; import java.util.List; @@ -39,7 +41,6 @@ import org.apache.samoa.instances.Instance; import org.apache.samoa.instances.Instances; import org.apache.samoa.instances.InstancesHeader; import org.apache.samoa.learners.InstanceContent; -import org.apache.samoa.learners.InstanceContentEvent; import org.apache.samoa.learners.InstancesContentEvent; import org.apache.samoa.learners.ResultContentEvent; import org.apache.samoa.moa.classifiers.core.AttributeSplitSuggestion; @@ -50,8 +51,6 @@ import org.apache.samoa.topology.Stream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.samoa.moa.core.Utils.maxIndex; - /** * Model Aggegator Processor consists of the decision tree model. It connects to local-statistic PI via attribute stream * and control stream. Model-aggregator PI sends the split instances via attribute stream and it sends control messages
