org.jpmml.evaluator.ModelEvaluatorFactory Java Examples
The following examples show how to use
org.jpmml.evaluator.ModelEvaluatorFactory.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MLModelRegistryService.java From registry with Apache License 2.0 | 6 votes |
private List<MLModelField> doGetOutputFieldsForPMMLStream(String pmmlContents) throws SAXException, JAXBException { List<MLModelField> fieldNames = new ArrayList<>(); PMMLManager pmmlManager = new PMMLManager(IOUtil.unmarshal(new ByteArrayInputStream(pmmlContents.getBytes()))); Evaluator modelEvaluator = (ModelEvaluator<?>) pmmlManager.getModelManager(null, ModelEvaluatorFactory.getInstance()); modelEvaluator.getPredictedFields().forEach((f) -> fieldNames.add(getModelField(modelEvaluator.getDataField(f)))); modelEvaluator.getOutputFields().forEach((f) -> { OutputField outputField = modelEvaluator.getOutputField(f); ResultFeatureType resultFeatureType = outputField.getFeature(); if (resultFeatureType != ResultFeatureType.PREDICTED_VALUE && resultFeatureType != ResultFeatureType.PREDICTED_DISPLAY_VALUE) { fieldNames.add(getModelField(outputField)); } }); return fieldNames; }
Example #2
Source File: MLModelRegistryService.java From streamline with Apache License 2.0 | 6 votes |
private List<MLModelField> doGetOutputFieldsForPMMLStream(String pmmlContents) throws SAXException, JAXBException, UnsupportedEncodingException { List<MLModelField> fieldNames = new ArrayList<>(); PMMLManager pmmlManager = new PMMLManager(IOUtil.unmarshal(new ByteArrayInputStream(pmmlContents.getBytes("UTF-8")))); Evaluator modelEvaluator = (ModelEvaluator<?>) pmmlManager.getModelManager(null, ModelEvaluatorFactory.getInstance()); modelEvaluator.getPredictedFields().forEach((f) -> fieldNames.add(getModelField(modelEvaluator.getDataField(f)))); modelEvaluator.getOutputFields().forEach((f) -> { OutputField outputField = modelEvaluator.getOutputField(f); ResultFeatureType resultFeatureType = outputField.getFeature(); if (resultFeatureType != ResultFeatureType.PREDICTED_VALUE && resultFeatureType != ResultFeatureType.PREDICTED_DISPLAY_VALUE) { fieldNames.add(getModelField(outputField)); } }); return fieldNames; }
Example #3
Source File: PmmlInferenceExecutionerFactory.java From konduit-serving with Apache License 2.0 | 5 votes |
@Override public InitializedInferenceExecutionerConfig create(ModelStep modelPipelineStepConfig) throws Exception { PmmlStep inferenceConfiguration = (PmmlStep) modelPipelineStepConfig; ParallelInferenceConfig parallelInferenceConfig = modelPipelineStepConfig.getParallelInferenceConfig(); String pmmlConfigPath = inferenceConfiguration.getPath(); ModelEvaluatorFactory modelEvaluatorFactory = ModelEvaluatorFactory.newInstance(); PmmlInferenceExecutioner inferenceExecutioner = new PmmlInferenceExecutioner(); PmmlModelLoader modelLoader1 = new PmmlModelLoader(modelEvaluatorFactory, new File(pmmlConfigPath)); inferenceExecutioner.initialize(modelLoader1, parallelInferenceConfig); return new InitializedInferenceExecutionerConfig(inferenceExecutioner, null, null); }
Example #4
Source File: MLModelRegistryService.java From registry with Apache License 2.0 | 5 votes |
private List<MLModelField> doGetInputFieldsFromPMMLStream(String pmmlContents) throws SAXException, JAXBException { final List<MLModelField> fieldNames = new ArrayList<>(); PMMLManager pmmlManager = new PMMLManager(IOUtil.unmarshal(new ByteArrayInputStream(pmmlContents.getBytes()))); Evaluator modelEvaluator = (ModelEvaluator<?>) pmmlManager.getModelManager(null, ModelEvaluatorFactory.getInstance()); for (FieldName predictedField : modelEvaluator.getActiveFields()) { fieldNames.add(getModelField(modelEvaluator.getDataField(predictedField))); } return fieldNames; }
Example #5
Source File: MLModelRegistryService.java From streamline with Apache License 2.0 | 5 votes |
private List<MLModelField> doGetInputFieldsFromPMMLStream(String pmmlContents) throws SAXException, JAXBException, UnsupportedEncodingException { final List<MLModelField> fieldNames = new ArrayList<>(); PMMLManager pmmlManager = new PMMLManager(IOUtil.unmarshal(new ByteArrayInputStream(pmmlContents.getBytes("UTF-8")))); Evaluator modelEvaluator = (ModelEvaluator<?>) pmmlManager.getModelManager(null, ModelEvaluatorFactory.getInstance()); for (FieldName predictedField: modelEvaluator.getActiveFields()) { fieldNames.add(getModelField(modelEvaluator.getDataField(predictedField))); } return fieldNames; }
Example #6
Source File: ScorePMML.java From Surus with Apache License 2.0 | 4 votes |
private void initialize(Schema inputSchema) throws IOException, SAXException, JAXBException { this.inputTupleSchema = inputSchema; // and, initialize aliasMap: if (this.aliasMap == null) { this.aliasMap = new HashMap<String,Integer>(); for (String alias : this.inputTupleSchema.getAliases()) { this.aliasMap.put(alias,this.inputTupleSchema.getPosition(alias)); // something to cleanup } } // Get PMML Object PMML pmml = null; try { /* * TODO: Make this more robust. Specifically, Angela Ho wanted to refernce a file in the distributed * cache directly. Obviously, my code doesn't support this, because it would try to open * the file with the IOUtil Java object, as opposed to the hadoop.fs.Path object. * * TODO: This try/catch block is a hack for: * (1) checking if execution is being done on "back-end." A check for back-end can be done with * UDFContext.getUDFContext().isFrontend() BUT this does not resolve problems with local-mode. * (2) enables testing in local-mode without failing unit tests. */ // Try reading file from distributed cache. pmml = IOUtil.unmarshal(new File("./"+this.modelName)); System.err.println("Read model from distributed cache!"); } catch (Throwable t) { // If not on the back-end... (and distributed cache not available) ... if (this.modelPath.toLowerCase().startsWith("s3n://") || this.modelPath.toLowerCase().startsWith("s3://")) { // ... read from S3. Path path = new Path(this.modelPath); FileSystem fs = path.getFileSystem(new Configuration()); FSDataInputStream in = fs.open(path); pmml = IOUtil.unmarshal(in); System.err.println("Read model from s3!"); } else { // ... read from local file. pmml = IOUtil.unmarshal(new File(this.modelPath)); System.err.println("Read model from local disk!"); } } // Initialize the pmmlManager PMMLManager pmmlManager = new PMMLManager(pmml); // Initialize the PMML Model Manager ModelManager<?> modelManager = pmmlManager.getModelManager(null, ModelEvaluatorFactory.getInstance()); this.evaluator = (Evaluator)modelManager; // Model Evaluator this.activeFields = evaluator.getActiveFields(); // input columns this.predictedFields = evaluator.getPredictedFields(); // predicted columns this.outputFields = evaluator.getOutputFields(); // derived output columns (based on predicted columns) }
Example #7
Source File: MiningModelEvaluator.java From jpmml-evaluator with GNU Affero General Public License v3.0 | 4 votes |
private ModelEvaluator<?> createSegmentModelEvaluator(String segmentId, Model model){ MiningModel miningModel = getModel(); MiningFunction miningFunction = miningModel.getMiningFunction(); Segmentation segmentation = miningModel.getSegmentation(); Configuration configuration = ensureConfiguration(); ModelEvaluatorFactory modelEvaluatorFactory = configuration.getModelEvaluatorFactory(); ModelEvaluator<?> modelEvaluator = modelEvaluatorFactory.newModelEvaluator(getPMML(), model); Segmentation.MultipleModelMethod multipleModelMethod = segmentation.getMultipleModelMethod(); switch(multipleModelMethod){ case SELECT_FIRST: case SELECT_ALL: case MODEL_CHAIN: { Set<ResultFeature> resultFeatures = getResultFeatures(); if(!resultFeatures.isEmpty()){ modelEvaluator.addResultFeatures(resultFeatures); } } // Falls through default: { Set<ResultFeature> segmentResultFeatures = getSegmentResultFeatures(segmentId); if(segmentResultFeatures != null && !segmentResultFeatures.isEmpty()){ modelEvaluator.addResultFeatures(segmentResultFeatures); } } break; } MiningFunction segmentMiningFunction = model.getMiningFunction(); if((MiningFunction.CLASSIFICATION).equals(miningFunction) && (MiningFunction.CLASSIFICATION).equals(segmentMiningFunction)){ List<TargetField> targetFields = getTargetFields(); List<TargetField> segmentTargetFields = modelEvaluator.getTargetFields(); if(targetFields.size() == 1 && segmentTargetFields.size() == 1){ TargetField targetField = targetFields.get(0); TargetField segmentTargetField = segmentTargetFields.get(0); if(segmentTargetField instanceof DefaultTargetField){ DefaultTargetField defaultTargetField = (DefaultTargetField)segmentTargetField; modelEvaluator.setDefaultDataField(new DataField(Evaluator.DEFAULT_TARGET_NAME, OpType.CATEGORICAL, targetField.getDataType())); } } } modelEvaluator.configure(configuration); return modelEvaluator; }
Example #8
Source File: Openscoring.java From openscoring with GNU Affero General Public License v3.0 | 4 votes |
static private LoadingModelEvaluatorBuilder createLoadingModelEvaluatorBuilder(Config config){ Config modelEvaluatorBuilderConfig = config.getConfig("modelEvaluatorBuilder"); LoadingModelEvaluatorBuilder modelEvaluatorBuilder = new LoadingModelEvaluatorBuilder(); Class<? extends ModelEvaluatorFactory> modelEvaluatorFactoryClazz = loadClass(ModelEvaluatorFactory.class, modelEvaluatorBuilderConfig); modelEvaluatorBuilder.setModelEvaluatorFactory(newInstance(modelEvaluatorFactoryClazz)); Class<? extends ValueFactoryFactory> valueFactoryFactoryClazz = loadClass(ValueFactoryFactory.class, modelEvaluatorBuilderConfig); modelEvaluatorBuilder.setValueFactoryFactory(newInstance(valueFactoryFactoryClazz)); modelEvaluatorBuilder.setOutputFilter(OutputFilters.KEEP_FINAL_RESULTS); // Jackson does not support the JSON serialization of <code>null</code> map keys ResultMapper resultMapper = new ResultMapper(){ private FieldName defaultTargetName = FieldName.create(ModelResponse.DEFAULT_TARGET_NAME); @Override public FieldName apply(FieldName name){ // A "phantom" default target field if(name == null){ return this.defaultTargetName; } return name; } }; modelEvaluatorBuilder.setResultMapper(resultMapper); boolean validate = modelEvaluatorBuilderConfig.getBoolean("validate"); if(validate){ Schema schema; try { schema = JAXBUtil.getSchema(); } catch(SAXException | IOException e){ throw new RuntimeException(e); } modelEvaluatorBuilder .setSchema(schema) .setValidationEventHandler(new SimpleValidationEventHandler()); } boolean locatable = modelEvaluatorBuilderConfig.getBoolean("locatable"); modelEvaluatorBuilder.setLocatable(locatable); VisitorBattery visitors = new VisitorBattery(); List<String> visitorClassNames = modelEvaluatorBuilderConfig.getStringList("visitorClasses"); for(String visitorClassName : visitorClassNames){ Class<?> clazz = loadClass(Object.class, visitorClassName); if((Visitor.class).isAssignableFrom(clazz)){ Class<? extends Visitor> visitorClazz = clazz.asSubclass(Visitor.class); visitors.add(visitorClazz); } else if((VisitorBattery.class).isAssignableFrom(clazz)){ Class<? extends VisitorBattery> visitorBatteryClazz = clazz.asSubclass(VisitorBattery.class); VisitorBattery visitorBattery = newInstance(visitorBatteryClazz); visitors.addAll(visitorBattery); } else { throw new IllegalArgumentException(new ClassCastException(clazz.toString())); } } modelEvaluatorBuilder.setVisitors(visitors); return modelEvaluatorBuilder; }