left.addScoreDistributions(new ScoreDistribution("apple", halfCount)); Node right = new Node().setId("r+").setRecordCount(halfCount) .setPredicate(new SimpleSetPredicate(FieldName.create("color"), SimpleSetPredicate.BooleanOperator.IS_NOT_IN, new Array(Array.Type.STRING, "red"))); right.addScoreDistributions(new ScoreDistribution("banana", halfCount));
ScoreDistribution first = scoreDists.get(0); if (numDists == 1) { assertEquals(1.0, first.getConfidence().doubleValue()); } else { assertGreater(first.getConfidence(), 0.0); assertLess(first.getConfidence(), 1.0); ScoreDistribution second = scoreDists.get(1); assertGreater(second.getConfidence(), 0.0); assertLess(second.getConfidence(), 1.0);
double[] categoryCounts = new double[targetEncoding.size()]; for (ScoreDistribution dist : scoreDistributions) { int encoding = targetEncoding.get(dist.getValue()); categoryCounts[encoding] = dist.getRecordCount();
ScoreDistribution distribution = new ScoreDistribution(value, recordCount); distribution.setConfidence(probability); modelNode.addScoreDistributions(distribution);
@Override public ElementKey createKey(ScoreDistribution scoreDistribution){ Object[] content = {scoreDistribution.getValue(), scoreDistribution.getRecordCount(), scoreDistribution.getProbability(), scoreDistribution.getConfidence()}; return new ElementKey(content); } };
@Override public Node encode(Node node, int offset){ String score = categories.get(this.classes.get(offset) - 1); Integer recordCount = n.getValue(offset); node .setScore(score) .setRecordCount(recordCount.doubleValue()); if(hasScoreDistribution){ node = NodeUtil.toComplexNode(node); List<ScoreDistribution> scoreDistributions = node.getScoreDistributions(); for(int i = 0; i < categories.size(); i++){ List<? extends Number> recordCounts = this.recordCounts.get(i); ScoreDistribution scoreDistribution = new ScoreDistribution() .setValue(categories.get(i)) .setRecordCount(recordCounts.get(offset).doubleValue()); scoreDistributions.add(scoreDistribution); } } return node; } };
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = org.dmg.pmml.PMMLObject.traverse(visitor, getExtensions()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
private ScoreDistribution intern(ScoreDistribution scoreDistribution){ if(scoreDistribution == null || scoreDistribution.hasExtensions()){ return scoreDistribution; } return this.cache.intern(scoreDistribution); } }
public List<ScoreDistribution> createScoreDistribution(CategoricalLabel categoricalLabel, double[] recordCounts){ List<ScoreDistribution> result = new ArrayList<>(); for(int i = 0; i < categoricalLabel.size(); i++){ String value = categoricalLabel.getValue(i); double recordCount = recordCounts[i]; ScoreDistribution scoreDistribution = new InternableScoreDistribution() .setValue(value) .setRecordCount(recordCount); scoreDistribution = intern(scoreDistribution); result.add(scoreDistribution); } return result; }
@Override public ElementKey createKey(ScoreDistribution scoreDistribution){ Object[] content = {scoreDistribution.getValue(), scoreDistribution.getRecordCount(), scoreDistribution.getProbability(), scoreDistribution.getConfidence()}; return new ElementKey(content); } };
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = org.dmg.pmml.PMMLObject.traverse(visitor, getExtensions()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
private ScoreDistribution intern(ScoreDistribution scoreDistribution){ if(scoreDistribution == null || scoreDistribution.hasExtensions()){ return scoreDistribution; } return this.cache.intern(scoreDistribution); } }
ScoreDistribution scoreDistribution = scoreDistributions.get(i); Double probability = scoreDistribution.getProbability(); double recordCount = scoreDistribution.getRecordCount(); if(recordCount != 0d){ sum.add(recordCount); result.put(scoreDistribution.getValue(), value); Double confidence = scoreDistribution.getConfidence(); if(confidence != null){ value = valueFactory.newValue(confidence); result.putConfidence(scoreDistribution.getValue(), value);
/** * Create an instance of {@link ScoreDistribution } * */ public ScoreDistribution createScoreDistribution() { return new ScoreDistribution(); }
double[] categoryCounts = new double[targetEncoding.size()]; for (ScoreDistribution dist : scoreDistributions) { int encoding = targetEncoding.get(dist.getValue()); categoryCounts[encoding] = dist.getRecordCount();
/** * Create an instance of {@link ScoreDistribution } * */ public ScoreDistribution createScoreDistribution() { return new ScoreDistribution(); }
@Override public Node encode(Node node, Number splitValue, RNumberVector<?> terminalClassCount){ if(splitValue.doubleValue() != 0d || (terminalClassCount == null || terminalClassCount.size() != levels.size())){ throw new IllegalArgumentException(); } node = NodeUtil.toComplexNode(node); List<ScoreDistribution> scoreDistributions = node.getScoreDistributions(); Double maxProbability = null; for(int i = 0; i < terminalClassCount.size(); i++){ String value = levels.getValue(i); Double probability = ValueUtil.asDouble(terminalClassCount.getValue(i)); if(maxProbability == null || (maxProbability).compareTo(probability) < 0){ node.setScore(value); maxProbability = probability; } ScoreDistribution scoreDisctibution = new ScoreDistribution(value, probability); scoreDistributions.add(scoreDisctibution); } return node; } };
ScoreDistribution scoreDistribution = new ScoreDistribution(value, probability);
ScoreDistribution scoreDistribution = new ScoreDistribution(ValueUtil.formatValue(classes.get(i)), probabilities[i]);
@Override public void encode(Node node, LeafNode leafNode){ int index = ValueUtil.asInt(leafNode.prediction()); node.setScore(this.categoricalLabel.getValue(index)); ImpurityCalculator impurityCalculator = leafNode.impurityStats(); node.setRecordCount((double)impurityCalculator.count()); double[] stats = impurityCalculator.stats(); for(int i = 0; i < stats.length; i++){ ScoreDistribution scoreDistribution = new ScoreDistribution(this.categoricalLabel.getValue(i), stats[i]); node.addScoreDistributions(scoreDistribution); } } };