From ea367dd2f425e3757d911e6ec2e06c2320058722 Mon Sep 17 00:00:00 2001 From: Vladislav Chumak Date: Thu, 3 Jan 2019 21:35:48 +0100 Subject: [PATCH] Removed internal maneuver type "other" + bugfixes --- .../LabelledManeuverModelMetadata.java | 6 ++--- .../ManeuverClassificationResultMapper.java | 25 ------------------- .../ManeuverClassifierModelFactory.java | 13 ++++++---- .../ManeuverClassifierModelMetadata.java | 13 +++++----- ...ManeuverTypeForInternalClassification.java | 5 ---- .../model/store/ContextType.java | 2 +- 6 files changed, 18 insertions(+), 46 deletions(-) delete mode 100644 java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverTypeForInternalClassification.java diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/LabelledManeuverModelMetadata.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/LabelledManeuverModelMetadata.java index 4fc123afba0..8e22b306fb6 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/LabelledManeuverModelMetadata.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/LabelledManeuverModelMetadata.java @@ -3,10 +3,8 @@ package com.sap.sailing.windestimation.model.classifier.maneuver; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.windestimation.data.LabelledManeuverForEstimation; import com.sap.sailing.windestimation.data.ManeuverForEstimation; +import com.sap.sailing.windestimation.data.ManeuverTypeForClassification; import com.sap.sailing.windestimation.model.classifier.LabelExtraction; -import com.sap.sailing.windestimation.model.classifier.maneuver.ManeuverClassifierModelMetadata; -import com.sap.sailing.windestimation.model.classifier.maneuver.ManeuverFeatures; -import com.sap.sailing.windestimation.model.classifier.maneuver.ManeuverTypeForInternalClassification; public class LabelledManeuverModelMetadata extends ManeuverClassifierModelMetadata implements LabelExtraction { @@ -14,7 +12,7 @@ public class LabelledManeuverModelMetadata extends ManeuverClassifierModelMetada private static final long serialVersionUID = -7074647974723150632L; public LabelledManeuverModelMetadata(ManeuverFeatures maneuverFeatures, BoatClass boatClass, - ManeuverTypeForInternalClassification... orderedSupportedTargetValues) { + ManeuverTypeForClassification... orderedSupportedTargetValues) { super(maneuverFeatures, boatClass, orderedSupportedTargetValues); } diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassificationResultMapper.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassificationResultMapper.java index 2c51b6b98c1..eafcd7a5e39 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassificationResultMapper.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassificationResultMapper.java @@ -1,40 +1,15 @@ package com.sap.sailing.windestimation.model.classifier.maneuver; -import com.sap.sailing.windestimation.data.ManeuverCategory; import com.sap.sailing.windestimation.data.ManeuverForEstimation; -import com.sap.sailing.windestimation.data.ManeuverTypeForClassification; import com.sap.sailing.windestimation.model.classifier.ClassificationResultMapper; public class ManeuverClassificationResultMapper implements ClassificationResultMapper { - private double[] mapManeuverTypesForInternalClassificationToManeuverTypesForClassification( - double[] likelihoodPerManeuverType, ManeuverCategory maneuverCategory) { - double[] newLikelihoods = new double[ManeuverTypeForClassification.values().length]; - switch (maneuverCategory) { - case MARK_PASSING: - case REGULAR: - newLikelihoods[ManeuverTypeForClassification.TACK - .ordinal()] = likelihoodPerManeuverType[ManeuverTypeForInternalClassification.TACK.ordinal()]; - newLikelihoods[ManeuverTypeForClassification.JIBE - .ordinal()] = likelihoodPerManeuverType[ManeuverTypeForInternalClassification.JIBE.ordinal()]; - newLikelihoods[ManeuverTypeForClassification.BEAR_AWAY - .ordinal()] = likelihoodPerManeuverType[ManeuverTypeForInternalClassification.OTHER.ordinal()]; - newLikelihoods[ManeuverTypeForClassification.HEAD_UP - .ordinal()] = likelihoodPerManeuverType[ManeuverTypeForInternalClassification.OTHER.ordinal()]; - break; - default: - throw new IllegalArgumentException("Unsupported maneuver category"); - } - return newLikelihoods; - } - @Override public ManeuverWithProbabilisticTypeClassification mapToClassificationResult(double[] likelihoods, ManeuverForEstimation maneuver, ManeuverClassifierModelMetadata modelMetadata) { likelihoods = modelMetadata.getLikelihoodsPerManeuverTypeOrdinal(likelihoods); - likelihoods = mapManeuverTypesForInternalClassificationToManeuverTypesForClassification(likelihoods, - maneuver.getManeuverCategory()); ManeuverWithProbabilisticTypeClassification maneuverClassificationResult = new ManeuverWithProbabilisticTypeClassification( maneuver, likelihoods); return maneuverClassificationResult; diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java index 4ac64727a22..fdcfe49c06e 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java @@ -6,6 +6,7 @@ import java.util.stream.Collectors; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.windestimation.data.ManeuverForEstimation; +import com.sap.sailing.windestimation.data.ManeuverTypeForClassification; import com.sap.sailing.windestimation.model.classifier.ClassifierModelFactory; import com.sap.sailing.windestimation.model.classifier.TrainableClassificationModel; import com.sap.sailing.windestimation.model.classifier.smile.NeuralNetworkClassifier; @@ -13,9 +14,9 @@ import com.sap.sailing.windestimation.model.classifier.smile.NeuralNetworkClassi public class ManeuverClassifierModelFactory implements ClassifierModelFactory { - public static final ManeuverTypeForInternalClassification[] orderedSupportedTargetValues = { - ManeuverTypeForInternalClassification.TACK, ManeuverTypeForInternalClassification.JIBE, - ManeuverTypeForInternalClassification.OTHER }; + public static final ManeuverTypeForClassification[] orderedSupportedTargetValues = { + ManeuverTypeForClassification.TACK, ManeuverTypeForClassification.JIBE, + ManeuverTypeForClassification.HEAD_UP, ManeuverTypeForClassification.BEAR_AWAY }; @Override public TrainableClassificationModel getNewModel( @@ -43,7 +44,8 @@ public class ManeuverClassifierModelFactory return suitableClassifiers; } - private static ManeuverClassifierModelMetadata createModelMetadata(ManeuverFeatures maneuverFeatures, BoatClass boatClass) { + private static ManeuverClassifierModelMetadata createModelMetadata(ManeuverFeatures maneuverFeatures, + BoatClass boatClass) { ManeuverClassifierModelMetadata modelMetadata = new ManeuverClassifierModelMetadata(maneuverFeatures, boatClass, orderedSupportedTargetValues); return modelMetadata; @@ -60,7 +62,8 @@ public class ManeuverClassifierModelFactory ManeuverClassifierModelMetadata modelMetadata = createModelMetadata(possibleFeatures, null); modelMetadataCandidates.add(modelMetadata); if (boatClass != null) { - ManeuverClassifierModelMetadata modelMetadataWithBoatClass = createModelMetadata(possibleFeatures, boatClass); + ManeuverClassifierModelMetadata modelMetadataWithBoatClass = createModelMetadata(possibleFeatures, + boatClass); modelMetadataCandidates.add(modelMetadataWithBoatClass); } } diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java index 119e6d9a7dd..d8c36669cb9 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java @@ -4,6 +4,7 @@ import java.util.Arrays; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.windestimation.data.ManeuverForEstimation; +import com.sap.sailing.windestimation.data.ManeuverTypeForClassification; import com.sap.sailing.windestimation.model.ContextSpecificModelMetadata; import com.sap.sailing.windestimation.model.store.ContextType; @@ -16,16 +17,16 @@ public class ManeuverClassifierModelMetadata extends ContextSpecificModelMetadat private final int numberOfSupportedManeuverTypes; public ManeuverClassifierModelMetadata(ManeuverFeatures maneuverFeatures, BoatClass boatClass, - ManeuverTypeForInternalClassification... orderedSupportedTargetValues) { + ManeuverTypeForClassification... orderedSupportedTargetValues) { super(ContextType.MANEUVER); this.maneuverFeatures = maneuverFeatures; this.boatClass = boatClass; - this.indexToManeuverTypeOrdinalMapping = new int[ManeuverTypeForInternalClassification.values().length]; + this.indexToManeuverTypeOrdinalMapping = new int[ManeuverTypeForClassification.values().length]; for (int i = 0; i < indexToManeuverTypeOrdinalMapping.length; i++) { indexToManeuverTypeOrdinalMapping[i] = -1; } int i = 0; - for (ManeuverTypeForInternalClassification supportedManeuverType : orderedSupportedTargetValues) { + for (ManeuverTypeForClassification supportedManeuverType : orderedSupportedTargetValues) { indexToManeuverTypeOrdinalMapping[supportedManeuverType.ordinal()] = i++; } numberOfSupportedManeuverTypes = i; @@ -45,7 +46,7 @@ public class ManeuverClassifierModelMetadata extends ContextSpecificModelMetadat } public double[] getLikelihoodsPerManeuverTypeOrdinal(double[] likelihoodsFromModel) { - double[] likelihoodsPerManeuverTypes = new double[ManeuverTypeForInternalClassification.values().length]; + double[] likelihoodsPerManeuverTypes = new double[ManeuverTypeForClassification.values().length]; int mappedI = 0; for (int i = 0; i < likelihoodsPerManeuverTypes.length; i++) { int maneuverTypeMapping = indexToManeuverTypeOrdinalMapping[i]; @@ -100,8 +101,8 @@ public class ManeuverClassifierModelMetadata extends ContextSpecificModelMetadat + ", numberOfSupportedManeuverTypes=" + numberOfSupportedManeuverTypes + "]"; } - public ManeuverTypeForInternalClassification getManeuverTypeByMappingIndex(int likelihoodIndex) { - for (ManeuverTypeForInternalClassification maneuverType : ManeuverTypeForInternalClassification.values()) { + public ManeuverTypeForClassification getManeuverTypeByMappingIndex(int likelihoodIndex) { + for (ManeuverTypeForClassification maneuverType : ManeuverTypeForClassification.values()) { if (indexToManeuverTypeOrdinalMapping[maneuverType.ordinal()] == likelihoodIndex) { return maneuverType; } diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverTypeForInternalClassification.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverTypeForInternalClassification.java deleted file mode 100644 index ed992a467f3..00000000000 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverTypeForInternalClassification.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.sap.sailing.windestimation.model.classifier.maneuver; - -public enum ManeuverTypeForInternalClassification { - TACK, JIBE, OTHER -} diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/store/ContextType.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/store/ContextType.java index 4f8ea02b87f..18389db15f1 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/store/ContextType.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/store/ContextType.java @@ -1,7 +1,7 @@ package com.sap.sailing.windestimation.model.store; public enum ContextType { - MANEUVER("maneuver"), TWD_TRANSITION("twdTransition"); + MANEUVER("Maneuver"), TWD_TRANSITION("TwdTransition"); private final String contextName;