@Override public Output getOutput() { for (Serializable serializable : rawModel.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (serializable instanceof Output) { return (Output)serializable; } } return null; }
@Override public MiningSchema getMiningSchema() { for (Serializable serializable: rawModel.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (serializable instanceof MiningSchema) { return (MiningSchema)serializable; } } return null; }
public void sheetStart(String worksheetName) { //this.worksheetName = worksheetName; expectations.clear(); cellRangeList = null; _characteristic = null; scorecard = ScorecardPMMLUtils.createScorecard(); output = new Output(); characteristics = new Characteristics(); miningSchema = new MiningSchema(); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(miningSchema); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(output); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(characteristics); }
protected static AggregationStrategy getScoringStrategy( Scorecard scorecard ) { String scoringStrategyName = ScorecardPMMLUtils.getExtensionValue(scorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), ScorecardPMMLExtensionNames.SCORECARD_SCORING_STRATEGY); return PMML4Helper.resolveAggregationStrategy( scoringStrategyName ); } }
private void checkForMissingAttributes() { for (Object obj :scorecard.getExtensionsAndCharacteristicsAndMiningSchemas()){ if (obj instanceof Characteristics){ Characteristics characteristics = (Characteristics)obj; for (Characteristic characteristic : characteristics.getCharacteristics()){ String newCellRef = ScorecardPMMLUtils.getExtensionValue(characteristic.getExtensions(), "cellRef"); if ( characteristic.getAttributes().size() == 0 ) { parseErrors.add(new ScorecardError(newCellRef, "Missing Attribute Bins for Characteristic '"+characteristic.getName()+"'.")); } } } } }
private void createAndSetOutput(Scorecard pmmlScorecard) { Extension classExtension = ScorecardPMMLUtils.getExtension(pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), PMMLExtensionNames.EXTERNAL_CLASS); Extension fieldExtension = ScorecardPMMLUtils.getExtension(pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), ScorecardPMMLExtensionNames.SCORECARD_RESULTANT_SCORE_FIELD); Extension reasonCodeExtension = ScorecardPMMLUtils.getExtension(pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), ScorecardPMMLExtensionNames.SCORECARD_RESULTANT_REASONCODES_FIELD); for (Object obj : pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (obj instanceof Output) { Output output = (Output)obj; outputField.setDisplayName("Final Score"); if ( fieldExtension != null ) { pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(fieldExtension); outputField.setName(fieldExtension.getValue()); } else { pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(classExtension); outputField.getExtensions().add( classExtension ); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(reasonCodeExtension); reasonCodeField.getExtensions().add( classExtension ); reasonCodeField.setName( reasonCodeExtension.getValue() );
private void validateBaselineScores() { for (Object obj :scorecard.getExtensionsAndCharacteristicsAndMiningSchemas()){ Double scorecardBaseline = scorecard.getBaselineScore(); if (obj instanceof Characteristics){ Characteristics characteristics = (Characteristics)obj; for (Characteristic characteristic : characteristics.getCharacteristics()){ Double charBaseline = characteristic.getBaselineScore(); if ( (charBaseline == null || charBaseline.doubleValue() == 0) && ((scorecardBaseline == null || scorecardBaseline.doubleValue() == 0)) ){ String newCellRef = createDataTypeCellRef(ScorecardPMMLUtils.getExtensionValue(characteristic.getExtensions(), "cellRef"),2); parseErrors.add(new ScorecardError(newCellRef, "Characteristic is missing Baseline Score")); } } } } }
repositionExternalClassExtensions(pmmlScorecard); Extension scorecardPackage = ScorecardPMMLUtils.getExtension(pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), PMMLExtensionNames.MODEL_PACKAGE ); if ( scorecardPackage != null) { pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(scorecardPackage); Extension importsExt = ScorecardPMMLUtils.getExtension(pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), PMMLExtensionNames.MODEL_IMPORTS ); if ( importsExt != null) { pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(importsExt); Extension agendaGroupExt = ScorecardPMMLUtils.getExtension(pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), PMMLExtensionNames.AGENDA_GROUP ); if ( agendaGroupExt != null) { pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(agendaGroupExt); Extension ruleFlowGroupExt = ScorecardPMMLUtils.getExtension(pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas(), PMMLExtensionNames.RULEFLOW_GROUP); if ( ruleFlowGroupExt != null) { pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(ruleFlowGroupExt);
private void removeAttributeFieldExtension(Scorecard pmmlScorecard) { for (Object obj : pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (obj instanceof Characteristics) { Characteristics characteristics = (Characteristics) obj; for (org.dmg.pmml.pmml_4_2.descr.Characteristic characteristic : characteristics.getCharacteristics()) { for (Attribute attribute : characteristic.getAttributes()) { Extension fieldExtension = ScorecardPMMLUtils.getExtension(attribute.getExtensions(), ScorecardPMMLExtensionNames.CHARACTERTISTIC_FIELD); if ( fieldExtension != null ) { attribute.getExtensions().remove(fieldExtension); //break; } } } } } }
private void checkCharacteristics(PMML pmml) { if (pmml != null && pmml.getAssociationModelsAndBaselineModelsAndClusteringModels() != null && !pmml.getAssociationModelsAndBaselineModelsAndClusteringModels().isEmpty()) { for (Serializable s : pmml.getAssociationModelsAndBaselineModelsAndClusteringModels()) { if (s instanceof Scorecard) { Scorecard scard = (Scorecard) s; if (scard.getExtensionsAndCharacteristicsAndMiningSchemas() != null && !scard.getExtensionsAndCharacteristicsAndMiningSchemas().isEmpty()) { for (Serializable sz : scard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (sz instanceof Characteristics) { Characteristics characteristics = (Characteristics) sz; if (characteristics.getCharacteristics() == null || characteristics.getCharacteristics().isEmpty()) { Characteristic ch = new Characteristic(); ch.setBaselineScore(0.0); ch.setName("placeholder"); Attribute attr = new Attribute(); attr.setFalse(new False()); ch.getAttributes().add(attr); characteristics.getCharacteristics().add(ch); } } } } } } } } }
private void removeEmptyExtensions(Scorecard pmmlScorecard) { for (Object obj : pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (obj instanceof Characteristics) { Characteristics characteristics = (Characteristics) obj; for (org.dmg.pmml.pmml_4_2.descr.Characteristic characteristic : characteristics.getCharacteristics()) { List<Extension> toRemoveExtensionsList = new ArrayList<Extension>(); for (Extension extension : characteristic.getExtensions()) { if (StringUtils.isEmpty(extension.getValue())) { toRemoveExtensionsList.add(extension); } } for (Extension extension : toRemoveExtensionsList) { characteristic.getExtensions().remove(extension); } for (Attribute attribute : characteristic.getAttributes()) { List<Extension> toRemoveExtensionsList2 = new ArrayList<Extension>(); for (Extension extension : attribute.getExtensions()) { if (StringUtils.isEmpty(extension.getValue())) { toRemoveExtensionsList2.add(extension); } } for (Extension extension : toRemoveExtensionsList2) { attribute.getExtensions().remove(extension); } } } } } }
private void checkForInvalidDataTypes() { for (Object obj :scorecard.getExtensionsAndCharacteristicsAndMiningSchemas()){ if (obj instanceof Characteristics){ Characteristics characteristics = (Characteristics)obj;
private void validateWeights() { for (Object obj :scorecard.getExtensionsAndCharacteristicsAndMiningSchemas()){ if (obj instanceof Characteristics){ Characteristics characteristics = (Characteristics)obj; for (Characteristic characteristic : characteristics.getCharacteristics()){ for (Attribute attribute : characteristic.getAttributes()){ String newCellRef = createDataTypeCellRef(ScorecardPMMLUtils.getExtensionValue(attribute.getExtensions(), "cellRef"),2); String weight = ScorecardPMMLUtils.getExtensionValue(attribute.getExtensions(), ScorecardPMMLExtensionNames.CHARACTERTISTIC_WEIGHT); if ( StringUtils.isEmpty(weight) || !isDouble(weight)){ parseErrors.add(new ScorecardError(newCellRef, "Attribute is missing weight or specified weight is not a double.")); } } } } } }
private void createAndSetPredicates(Scorecard pmmlScorecard) { for (Object obj : pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (obj instanceof Characteristics) { Characteristics characteristics = (Characteristics) obj; for (org.dmg.pmml.pmml_4_2.descr.Characteristic characteristic : characteristics.getCharacteristics()) { String dataType = ScorecardPMMLUtils.getExtensionValue(characteristic.getExtensions(), ScorecardPMMLExtensionNames.CHARACTERTISTIC_DATATYPE); Extension predicateExtension = null; for (Attribute attribute : characteristic.getAttributes()) { String predicateAsString = ""; String field = ScorecardPMMLUtils.getExtensionValue(attribute.getExtensions(), ScorecardPMMLExtensionNames.CHARACTERTISTIC_FIELD); for (Extension extension : attribute.getExtensions()) { if ("predicateResolver".equalsIgnoreCase(extension.getName())) { predicateAsString = extension.getValue(); predicateExtension = extension; break; } } setPredicatesForAttribute(attribute, dataType, field, predicateAsString); attribute.getExtensions().remove(predicateExtension); } } } } }
private void validateReasonCodes() { for (Object obj :scorecard.getExtensionsAndCharacteristicsAndMiningSchemas()){ if (obj instanceof Characteristics){ Characteristics characteristics = (Characteristics)obj; for (Characteristic characteristic : characteristics.getCharacteristics()){ String charReasonCode = characteristic.getReasonCode(); if (charReasonCode == null || StringUtils.isEmpty(charReasonCode)){ for (Attribute attribute : characteristic.getAttributes()){ String newCellRef = createDataTypeCellRef(ScorecardPMMLUtils.getExtensionValue(attribute.getExtensions(), "cellRef"),3); String attrReasonCode = attribute.getReasonCode(); if ( attrReasonCode == null || StringUtils.isEmpty(attrReasonCode)){ parseErrors.add(new ScorecardError(newCellRef, "Attribute is missing Reason Code")); } } } } } } }
private void repositionExternalClassExtensions(Scorecard pmmlScorecard) { Characteristics characteristics = null; for (Object obj : pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if ( obj instanceof Characteristics ) { characteristics = (Characteristics) obj; for (Object obj : pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if ( obj instanceof MiningSchema ) { MiningSchema schema = (MiningSchema)obj;
Extension extension = new Extension(); extension.setName( ScorecardPMMLExtensionNames.SCORECARD_SCORING_STRATEGY); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); addExpectation(currentRowCtr, currentColCtr + 1, "value", extension, null); Extension extension = new Extension(); extension.setName( PMMLExtensionNames.EXTERNAL_CLASS ); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); addExpectation(currentRowCtr, currentColCtr + 1, "value", extension, null); Extension extension = new Extension(); extension.setName( ScorecardPMMLExtensionNames.SCORECARD_RESULTANT_SCORE_FIELD); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); addExpectation(currentRowCtr, currentColCtr + 1, "value", extension, null); Extension extension = new Extension(); extension.setName( ScorecardPMMLExtensionNames.SCORECARD_RESULTANT_REASONCODES_FIELD); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); addExpectation(currentRowCtr, currentColCtr + 1, "value", extension, null); Extension extension = new Extension(); extension.setName( PMMLExtensionNames.MODEL_IMPORTS); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); addExpectation(currentRowCtr, currentColCtr + 1, "value", extension, null); Extension extension = new Extension(); extension.setName( PMMLExtensionNames.MODEL_PACKAGE); scorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); addExpectation(currentRowCtr, currentColCtr + 1, "value", extension, "Scorecard Package is missing");
extension.setValue(model.getFactName()); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); extension.setName(PMMLExtensionNames.AGENDA_GROUP); extension.setValue(agendaGroup); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); extension.setName(PMMLExtensionNames.RULEFLOW_GROUP); extension.setValue(agendaGroup); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); List<String> imports = new ArrayList<String>(); StringBuilder importBuilder = new StringBuilder(); extension.setName(ScorecardPMMLExtensionNames.SCORECARD_RESULTANT_SCORE_FIELD); extension.setValue(model.getFieldName()); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); String pkgName = model.getPackageName(); extension.setValue(!(pkgName == null || pkgName.isEmpty()) ? pkgName : null); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(extension); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(miningSchema); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(output); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().add(characteristics); return new ScorecardPMMLGenerator().generateDocument(pmmlScorecard);
pmml.setDataDictionary(dataDictionary); int ctr = 0; for (Object obj : pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (obj instanceof Characteristics) { Characteristics characteristics = (Characteristics) obj;