I'm testing jpmml-evaluator. I have the following code:
PMML pmml = readPMML(new File(file));
ModelEvaluatorFactory mef = ModelEvaluatorFactory.newInstance();
ModelEvaluator<?> modelEvaluator = mef.newModelManager(pmml);
Evaluator eval = (Evaluator)modelEvaluator;
List<FieldName> active = eval.getActiveFields();
ArrayList<String> input = new ArrayList<String>();
input.add(Double.toString(test_pmml.getXP_TEST_PMML_CAPITAL()));
input.add(Double.toString(test_pmml.getXP_TEST_PMML_NBTER()));
input.add(Double.toString(test_pmml.getXP_TEST_PMML_ARRIER()));
input.add(Double.toString(test_pmml.getXP_TEST_PMML_EFFECTI()));
Map<FieldName, FieldValue> args = new LinkedHashMap<FieldName, FieldValue>();
int i = 0;
for (FieldName field : active) {
FieldValue value = eval.prepare(field, input.get(i));
args.put(field, value);
i++;
}
Map<FieldName, ?> results = eval.evaluate(args);
FieldName target = eval.getTargetField();
System.out.println("target value : " + results.get(target));
And I get this error at the evaluation line :
org.jpmml.evaluator.TypeCheckException: Expected STRING, but got null
I understand the error, but I can't figure why it fires. I've made sure my args
is not null, and doesn't contain any null value. No problems why the fields
either. I thought maybe I wasn't converting my double values correctly, but using String.valueOf()
instead of Double.toString
didn't solve the problem. Is there something I'm missing here ?