protected Value<V> ensureValue(K key){ Value<V> value = get(key); if(value == null){ ValueFactory<V> valueFactory = getValueFactory(); value = valueFactory.newValue(); put(key, value); } return value; } }
void putConfidence(String category, Value<V> confidence){ ValueMap<String, V> confidences = getConfidences(); if(confidences == null){ confidences = new ValueMap<>(); setConfidences(confidences); } confidences.put(category, confidence); }
public void put(String key, Value<V> value){ ValueMap<String, V> values = getValues(); if(values.containsKey(key)){ throw new EvaluationException("Value for key " + PMMLException.formatKey(key) + " has already been defined"); } values.put(key, value); }
private <V extends Number> AffinityDistribution<V> createAffinityDistribution(List<InstanceResult<V>> instanceResults, Function<Integer, String> function, Object result){ NearestNeighborModel nearestNeighborModel = getModel(); ComparisonMeasure comparisonMeasure = nearestNeighborModel.getComparisonMeasure(); ValueMap<String, V> values = new ValueMap<>(2 * instanceResults.size()); for(InstanceResult<V> instanceResult : instanceResults){ values.put(function.apply(instanceResult.getId()), instanceResult.getValue()); } Measure measure = MeasureUtil.ensureMeasure(comparisonMeasure); if(measure instanceof Similarity){ return new AffinityDistribution<>(Classification.Type.SIMILARITY, values, result); } else if(measure instanceof Distance){ return new AffinityDistribution<>(Classification.Type.DISTANCE, values, result); } else { throw new UnsupportedElementException(measure); } }
private ValueMap<String, V> averageMap(List<HasProbability> hasProbabilities){ if(hasProbabilities.size() == 1){ HasProbability hasProbability = hasProbabilities.get(0); ValueFactory<V> valueFactory = getValueFactory(); ValueMap<String, V> result = new ValueMap<>(); Set<String> categories = hasProbability.getCategories(); for(String category : categories){ Double probability = hasProbability.getProbability(category); Value<V> value = valueFactory.newValue(probability); result.put(category, value); } return result; } else { ProbabilityAggregator<V> aggregator = new ProbabilityAggregator<V>(0){ @Override public ValueFactory<V> getValueFactory(){ return ProbabilityAggregator.this.getValueFactory(); } }; for(HasProbability hasProbability : hasProbabilities){ aggregator.add(hasProbability); } return aggregator.averageMap(); } }
values.put(targetCategory, value);
values.put(targetCategory, value);
values.put(targetCategory, value);
values.put(targetCategory, value);