Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jpmml中的类型错误_Java_Pmml - Fatal编程技术网

Java jpmml中的类型错误

Java jpmml中的类型错误,java,pmml,Java,Pmml,我正在测试jpmml evaluator。我有以下代码: PMML pmml = readPMML(new File(file)); ModelEvaluatorFactory mef = ModelEvaluatorFactory.newInstance(); ModelEvaluator<?> modelEvaluator = mef.newModelManager(pmml); Evaluator eval = (Evaluator)modelEvaluator; List&

我正在测试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));

我理解这个错误,但我不明白它为什么会触发。我已确保我的
args
不为null,并且不包含任何null值。为什么
字段
也没有问题。我想可能我没有正确地转换double值,但是使用
String.valueOf()
而不是
double.toString
并没有解决问题。这里有我遗漏的东西吗?

如何处理
System.out.println(args)看起来像什么?它必须包含一个
null
值,否则您将不会得到此异常。我在打印参数时得到此信息:
{CAPITAL=ContinuousValue{opType=CONTINUOUS,dataType=DOUBLE,value=151.0},NBTER=ContinuousValue{opType=CONTINUOUS,dataType=DOUBLE,value=5.0},ARRIER=categricalvalue{opType=CATEGORICAL,dataType=STRING,value=1.0},EFFECTI=ContinuousValue{opType=CONTINUOUS,dataType=DOUBLE,value=152.0}
一个值为“1.0”的分类字符串字段看起来可疑(
ARRIER=CategoricalValue{opType=categorical,dataType=string,value=1.0
),当其他三个字段是连续的双精度字段时。再次,请将此TypeCheckException的堆栈跟踪粘贴到某个位置(前5行应该足够了)。这样就很容易看到其中涉及哪些组件。无论如何,您的PMML文档可能有问题。
org.jpmml.evaluator.TypeCheckException: Expected STRING, but got null