[jvm-packages] XGBoost Spark should deal with NaN when parsing evaluation output (#5546)

This commit is contained in:
Liang-Chi Hsieh
2020-04-19 23:10:30 -07:00
committed by GitHub
parent b809f5d8b8
commit 397d8f0ee7

View File

@@ -242,7 +242,14 @@ public class Booster implements Serializable, KryoSerializable {
String stringFormat = evalSet(evalMatrixs, evalNames, iter);
String[] metricPairs = stringFormat.split("\t");
for (int i = 1; i < metricPairs.length; i++) {
metricsOut[i - 1] = Float.valueOf(metricPairs[i].split(":")[1]);
String value = metricPairs[i].split(":")[1];
if (value.equalsIgnoreCase("nan")) {
metricsOut[i - 1] = Float.NaN;
} else if (value.equalsIgnoreCase("-nan")) {
metricsOut[i - 1] = -Float.NaN;
} else {
metricsOut[i - 1] = Float.valueOf(value);
}
}
return stringFormat;
}