public static Scorecard createScorecard(){ Scorecard scorecard = new Scorecard(); //default false, until the spreadsheet enables explicitly. scorecard.setUseReasonCodes(Boolean.FALSE); scorecard.setIsScorable(Boolean.TRUE); scorecard.setFunctionName( MININGFUNCTION.REGRESSION ); return scorecard; }
@Override public Output getOutput() { for (Serializable serializable : rawModel.getExtensionsAndCharacteristicsAndMiningSchemas()) { if (serializable instanceof Output) { return (Output)serializable; } } return null; }
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.setModelName(modelName); pmmlScorecard.setInitialScore(model.getInitialScore()); pmmlScorecard.setUseReasonCodes(model.isUseReasonCodes()); pmmlScorecard.setBaselineScore(model.getBaselineScore()); pmmlScorecard.setReasonCodeAlgorithm(model.getReasonCodesAlgorithm());
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")); } } } } }
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 ); if ( pmmlScorecard.getUseReasonCodes() ) { OutputField reasonCodeField = new OutputField(); reasonCodeField.setDataType( DATATYPE.STRING ); pmmlScorecard.getExtensionsAndCharacteristicsAndMiningSchemas().remove(reasonCodeExtension); reasonCodeField.getExtensions().add( classExtension ); reasonCodeField.setName( reasonCodeExtension.getValue() );
/** * Create an instance of {@link Scorecard } * */ public Scorecard createScorecard() { return new Scorecard(); }
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 static void runAdditionalValidations(Scorecard scorecard, List<ScorecardError> parseErrors) { ExcelScorecardValidator validator = new ExcelScorecardValidator(scorecard, parseErrors); validator.checkForInvalidDataTypes(); validator.checkForMissingAttributes(); if (scorecard.getUseReasonCodes()){ validator.validateReasonCodes(); validator.validateBaselineScores(); } if ( getScoringStrategy(scorecard).toString().startsWith("WEIGHTED")) { validator.validateWeights(); } }
function Scorecard() { this.players = 0; this.playerList = []; //create a new Array() using shorthand []; this.addPlayer = function(name) { this.players++; //add one to the player count. this.playerList.push(name); //add a player to the playerlist using array.push(). } }; var scorecard = new Scorecard(); //first create an instance of Scorecard function formAddPlayer(e) { e.preventDefault(); //e is the submit event. preventDefault stops it from actually posting the form, causing the page to reload. var name = e.target.querySelector("input[name='name']").value //get the value from the input element. scorecard.addPlayer(name); //show the results alert("Player amount: " + scorecard.players + "\nPlayers: \n -" + scorecard.playerList.join("\n -")); //show the results } document.querySelector("form").addEventListener("submit", formAddPlayer, false);
public PMML4Model getModel(Segment segment, MiningSegmentation segmentation) { PMML4Model model = null; if (segment.getMiningModel() != null) { MiningModel mm = segment.getMiningModel(); model = new Miningmodel(mm.getModelName(), mm, segmentation.getOwner(), null); } else if (segment.getRegressionModel() != null) { RegressionModel rm = segment.getRegressionModel(); model = new Regression(rm.getModelName(), rm, segmentation.getOwner(), null); } else if (segment.getScorecard() != null) { Scorecard sc = segment.getScorecard(); model = new ScorecardModel(sc.getModelName(), sc, segmentation.getOwner(), null); } else if (segment.getTreeModel() != null) { TreeModel tm = segment.getTreeModel(); model = new Treemodel(tm.getModelName(), tm, segmentation.getOwner(), null); } return model; }
@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()+"'.")); } } } } }
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.")); } } } } } }