@Override public List<PMMLOutputField> getOutputFields() { List<PMMLOutputField> fields = new ArrayList<>(); for (String key : outputFieldMap.keySet()) { OutputField of = outputFieldMap.get(key); fields.add(new PMMLOutputField(of, null, this.getModelId())); } Map<String, MiningField> includeFromMining = getFilteredMiningFieldMap(true, FIELDUSAGETYPE.PREDICTED, FIELDUSAGETYPE.TARGET); Map<String, PMMLDataField> dataDictionary = getOwner().getDataDictionaryMap(); if (includeFromMining != null && !includeFromMining.isEmpty()) { for (String key : includeFromMining.keySet()) { MiningField field = includeFromMining.get(key); PMMLDataField df = dataDictionary.get(key); fields.add(new PMMLOutputField(field, df.getRawDataField(), this.getModelId())); } } return fields; }
public Map<String, String> getJavaClasses(InputStream stream) { Map<String, String> javaClasses = new HashMap<>(); PMML pmml = loadModel(PMML, stream); if (pmml != null && results.isEmpty()) { PMML4Unit unit = new PMML4UnitImpl(pmml); if (unit != null) { List<PMML4Model> models = unit.getModels(); models.forEach(model -> { Map.Entry<String, String> inputPojo = model.getMappedMiningPojo(); Map.Entry<String, String> ruleUnit = model.getMappedRuleUnit(); Map.Entry<String, String> outcome = null; if (model.getModelType() == PMML4ModelType.TREE) { outcome = ((Treemodel) model).getTreeNodeJava(); } if (inputPojo != null) { javaClasses.put(inputPojo.getKey(), inputPojo.getValue()); } if (ruleUnit != null) { javaClasses.put(ruleUnit.getKey(), ruleUnit.getValue()); } if (outcome != null) { javaClasses.put(outcome.getKey(), outcome.getValue()); } }); } } return javaClasses; }
private String getRuleUnitClass(PMML4Unit unit) { PMML4Model root = unit.getRootModel(); return root.getRuleUnitClassName(); }
helper.setResolver(classLoader); PMML4Unit unit = new PMML4UnitImpl(pmml); if (unit.containsMiningModel()) { Miningmodel rootModel = unit.getRootMiningModel(); resources = buildResourcesFromModel(pmml, rootModel, null, classLoader, module); } else { PMML4Model rootModel = unit.getRootModel(); if (rootModel != null) { helper.setPack(rootModel.getModelPackageName()); PMMLResource resource = new PMMLResource(helper.getPack()); StringBuilder bldr = new StringBuilder(this.compile(pmml, classLoader)); String extBeanMiningRules = unit.getModelExternalMiningBeansRules(rootModel.getModelId()); if (extBeanMiningRules != null) { bldr.append(extBeanMiningRules);
public String getModelPackageName() { String pkgName = ""; if (this.getParentModel() != null) { pkgName = this.getParentModel().getModelPackageName(); } else { pkgName = this.getOwner().getRootPackage(); } return pkgName.concat("." + this.getModelId()); }
public List<PMML4Model> getModels(PMML4Unit owner) { List<PMML4Model> pmml4Models = new ArrayList<>(); owner.getRawPMML().getAssociationModelsAndBaselineModelsAndClusteringModels() .forEach(serializable -> { if (serializable instanceof Scorecard) { Scorecard sc = (Scorecard) serializable; ScorecardModel model = new ScorecardModel(sc.getModelName(), sc, null, owner); pmml4Models.add(model); } else if (serializable instanceof RegressionModel) { RegressionModel rm = (RegressionModel) serializable; Regression model = new Regression(rm.getModelName(), rm, null, owner); pmml4Models.add(model); } else if (serializable instanceof TreeModel) { TreeModel tm = (TreeModel) serializable; Treemodel model = new Treemodel(tm.getModelName(), tm, null, owner); pmml4Models.add(model); } else if (serializable instanceof MiningModel) { MiningModel mm = (MiningModel) serializable; Miningmodel model = new Miningmodel(mm.getModelName(), mm, null, owner); pmml4Models.add(model); } }); return pmml4Models; } }
public String getDRL() { if (pmmlDocument != null) { PMML4Unit pmmlUnit = new PMML4UnitImpl(pmmlDocument); compiler.getHelper().setPack(pmmlUnit.getRootPackage()); } String drl = compiler.generateTheory(pmmlDocument); if (!compiler.getResults().isEmpty()) { for (KnowledgeBuilderResult res : compiler.getResults()) { logger.error(res.getMessage()); } compiler.clearResults(); } return drl; }
public DataDictionary getDataDictionary() { if (this.getParentModel() == null) { return this.getOwner().getRawPMML().getDataDictionary(); } return this.getParentModel().getDataDictionary(); }
protected void initMiningFieldMap() throws IllegalArgumentException { MiningSchema schema = getMiningSchema(); boolean addExternalBeanRefs = isUseExternalBeanRefs(schema); miningFieldMap = new HashMap<>(); externalMiningFields = new ArrayList<>(); for (MiningField field : schema.getMiningFields()) { miningFieldMap.put(field.getName(), field); if (addExternalBeanRefs) { Extension ext = getExternalClassInfo(field.getExtensions()); if (ext != null) { ExternalBeanRef ref; try { ref = new ExternalBeanRef(field.getName(), ext.getValue(), ModelUsage.MINING); if (ExternalBeanDefinition.DEFAULT_BEAN_PKG.equals(ref.getBeanPackageName()) && this.getOwner().getRootPackage() != null) { ref.setBeanPackageName(this.getOwner().getRootPackage()); } externalMiningFields.add(ref); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Error while initializing the MiningField map. ",e); } } } } }
@Override public List<PMMLMiningField> getMiningFields() { List<PMMLMiningField> fields = new ArrayList<>(); Map<String, MiningField> excludesTargetMap = miningFieldMap; Map<String, PMMLDataField> dataDictionary = getOwner().getDataDictionaryMap(); for (String key : excludesTargetMap.keySet()) { PMMLDataField df = dataDictionary.get(key); MiningField mf = miningFieldMap.get(key); if (df != null) { fields.add(new PMMLMiningField(mf, df.getRawDataField(), this.getModelId(), true)); } else { PMMLMiningField fld = new PMMLMiningField(mf, this.getModelId()); if (this.getParentModel() != null) { PMML4Model ultimateParentModel = this.getParentModel(); if (ultimateParentModel instanceof Miningmodel) { while (ultimateParentModel.getParentModel() != null) { ultimateParentModel = ultimateParentModel.getParentModel(); } PMMLOutputField ofld = ((Miningmodel) ultimateParentModel).findOutputField(fld.getName()); if (ofld != null) { fld.setType(ofld.getType()); fields.add(fld); } } } } } return fields; }