我正在测试jpmml-evaluator。我有以下代码:
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));
我在评估线上得到了这个错误:
org.jpmml.evaluator.TypeCheckException: Expected STRING, but got null
我理解错误,但我无法理解为什么会发生错误。我确保我的args
不为空,并且不包含任何空值。 fields
也没问题。我想也许我没有正确地转换我的双值,但使用String.valueOf()
代替Double.toString
并没有解决问题。这里有什么我想念的吗?