/** * Create an instance of {@link SimpleRule } * */ public SimpleRule createSimpleRule() { return new SimpleRule(); }
@Override public SimpleRule addExtensions(Extension... extensions) { getExtensions().addAll(Arrays.asList(extensions)); return this; }
public SimpleRule addScoreDistributions(ScoreDistribution... scoreDistributions) { getScoreDistributions().addAll(Arrays.asList(scoreDistributions)); return this; }
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = PMMLObject.traverse(visitor, getExtensions()); } if (status == VisitorAction.CONTINUE) { status = PMMLObject.traverse(visitor, getPredicate()); } if ((status == VisitorAction.CONTINUE)&&hasScoreDistributions()) { status = PMMLObject.traverse(visitor, getScoreDistributions()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
@Override public RuleSetModel encodeModel(Schema schema){ String defaultScore = getDefaultScore(); List<Object[]> rules = getRules(); Label label = schema.getLabel(); List<? extends Feature> features = schema.getFeatures(); RuleSelectionMethod ruleSelectionMethod = new RuleSelectionMethod(RuleSelectionMethod.Criterion.FIRST_HIT); RuleSet ruleSet = new RuleSet() .addRuleSelectionMethods(ruleSelectionMethod); if(defaultScore != null){ ruleSet .setDefaultConfidence(1d) .setDefaultScore(defaultScore); } for(Object[] rule : rules){ String predicate = TupleUtil.extractElement(rule, 0, String.class); String score = TupleUtil.extractElement(rule, 1, String.class); SimpleRule simpleRule = new SimpleRule() .setPredicate(PredicateTranslator.translate(predicate, features)) .setScore(score); ruleSet.addRules(simpleRule); } RuleSetModel ruleSetModel = new RuleSetModel(MiningFunction.CLASSIFICATION, ModelUtil.createMiningSchema(label), ruleSet); return ruleSetModel; }
result.put(new SimpleRule(defaultScore), defaultScore, value); Value<V> value = valueFactory.newValue(winner.getConfidence()); Double weight = keyRule.getWeight(); if(winner == null || (winner.getWeight() < weight)){ winner = keyRule; if(winner == null || (winner.getWeight() < keyRule.getWeight())){ winner = keyRule; Value<V> value = valueFactory.newValue(winner.getConfidence());
static private void evaluateRule(Rule rule, ListMultimap<String, SimpleRule> firedRules, EvaluationContext context){ Boolean status = PredicateUtil.evaluatePredicateContainer(rule, context); if(status == null || !status.booleanValue()){ return; } // End if if(rule instanceof SimpleRule){ SimpleRule simpleRule = (SimpleRule)rule; firedRules.put(simpleRule.getScore(), simpleRule); } else if(rule instanceof CompoundRule){ CompoundRule compoundRule = (CompoundRule)rule; evaluateRules(compoundRule.getRules(), firedRules, context); } else { throw new UnsupportedElementException(rule); } }
@Override public VisitorAction accept(Visitor visitor) { VisitorAction status = visitor.visit(this); if (status == VisitorAction.CONTINUE) { visitor.pushParent(this); if ((status == VisitorAction.CONTINUE)&&hasExtensions()) { status = PMMLObject.traverse(visitor, getExtensions()); } if (status == VisitorAction.CONTINUE) { status = PMMLObject.traverse(visitor, getPredicate()); } if ((status == VisitorAction.CONTINUE)&&hasScoreDistributions()) { status = PMMLObject.traverse(visitor, getScoreDistributions()); } visitor.popParent(); } if (status == VisitorAction.TERMINATE) { return VisitorAction.TERMINATE; } return VisitorAction.CONTINUE; }
@Override protected void computeResult(DataType dataType){ SimpleRule simpleRule = getEntity(); if(simpleRule != null){ String score = simpleRule.getScore(); if(score == null){ throw new MissingAttributeException(simpleRule, PMMLAttributes.SIMPLERULE_SCORE); } Object result = TypeUtil.parse(dataType, score); super.setResult(result); return; } super.computeResult(dataType); }
/** * Create an instance of {@link SimpleRule } * */ public SimpleRule createSimpleRule() { return new SimpleRule(); }
public SimpleRule addScoreDistributions(ScoreDistribution... scoreDistributions) { getScoreDistributions().addAll(Arrays.asList(scoreDistributions)); return this; }
@Override public SimpleRule addExtensions(Extension... extensions) { getExtensions().addAll(Arrays.asList(extensions)); return this; }