[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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -242,7 +242,14 @@ public class Booster implements Serializable, KryoSerializable {
String stringFormat = evalSet(evalMatrixs, evalNames, iter); String stringFormat = evalSet(evalMatrixs, evalNames, iter);
String[] metricPairs = stringFormat.split("\t"); String[] metricPairs = stringFormat.split("\t");
for (int i = 1; i < metricPairs.length; i++) { 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; return stringFormat;
} }