0

我正在测试 jpmml 评估器。我有以下代码:

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

我理解这个错误,但我不知道它为什么会触发。我确保 myargs不为空,并且不包含任何空值。没有问题,为什么fields。我想也许我没有正确转换我的双精度值,但是使用String.valueOf()而不是Double.toString没有解决问题。我在这里缺少什么吗?

4

0 回答 0