@Test public void testReadWrite() throws Exception { Path tempModelFile = Files.createTempFile(getTempDir(), "model", ".pmml"); PMML model = buildDummyModel(); PMMLUtils.write(model, tempModelFile); assertTrue(Files.exists(tempModelFile)); PMML model2 = PMMLUtils.read(tempModelFile); List<Model> models = model2.getModels(); assertEquals(1, models.size()); assertInstanceOf(models.get(0), TreeModel.class); TreeModel treeModel = (TreeModel) models.get(0); assertEquals(123.0, treeModel.getNode().getRecordCount().doubleValue()); assertEquals(MiningFunction.CLASSIFICATION, treeModel.getMiningFunction()); }
@Override public void enterTreeModel(TreeModel treeModel){ this.miningFunction = treeModel.getMiningFunction(); }
@Override public VisitorAction visit(TreeModel treeModel){ MiningFunction miningFunction = treeModel.getMiningFunction(); if(miningFunction != null){ switch(miningFunction){ case REGRESSION: this.mathContext = treeModel.getMathContext(); break; default: this.mathContext = null; break; } } // End if if(this.mathContext == null){ return VisitorAction.SKIP; } return super.visit(treeModel); }
@Override public VisitorAction visit(TreeModel treeModel){ MiningFunction miningFunction = treeModel.getMiningFunction(); if(miningFunction != null){ switch(miningFunction){ case REGRESSION: this.mathContext = treeModel.getMathContext(); break; default: this.mathContext = null; break; } } // End if if(this.mathContext == null){ return VisitorAction.SKIP; } return super.visit(treeModel); }
@Override public void enterTreeModel(TreeModel treeModel){ TreeModel.MissingValueStrategy missingValueStrategy = treeModel.getMissingValueStrategy(); TreeModel.NoTrueChildStrategy noTrueChildStrategy = treeModel.getNoTrueChildStrategy(); TreeModel.SplitCharacteristic splitCharacteristic = treeModel.getSplitCharacteristic(); if(!(TreeModel.MissingValueStrategy.NONE).equals(missingValueStrategy) || !(TreeModel.NoTrueChildStrategy.RETURN_NULL_PREDICTION).equals(noTrueChildStrategy) || !(TreeModel.SplitCharacteristic.BINARY_SPLIT).equals(splitCharacteristic)){ throw new IllegalArgumentException(); } this.miningFunction = treeModel.getMiningFunction(); this.replacedPredicates.clear(); }
@Override public VisitorAction visit(Node node){ TreeModel treeModel = getTreeModel(); MiningFunction miningFunction = treeModel.getMiningFunction(); switch(miningFunction){ case REGRESSION: if(node.hasScoreDistributions()){ List<ScoreDistribution> scoreDistributions = node.getScoreDistributions(); scoreDistributions.clear(); } break; default: break; } return super.visit(node); }
@Override public void enterTreeModel(TreeModel treeModel){ TreeModel.MissingValueStrategy missingValueStrategy = treeModel.getMissingValueStrategy(); TreeModel.NoTrueChildStrategy noTrueChildStrategy = treeModel.getNoTrueChildStrategy(); TreeModel.SplitCharacteristic splitCharacteristic = treeModel.getSplitCharacteristic(); if(!(TreeModel.MissingValueStrategy.NONE).equals(missingValueStrategy) || !(TreeModel.NoTrueChildStrategy.RETURN_NULL_PREDICTION).equals(noTrueChildStrategy) || !(TreeModel.SplitCharacteristic.BINARY_SPLIT).equals(splitCharacteristic)){ throw new IllegalArgumentException(); } this.miningFunction = treeModel.getMiningFunction(); }