[jvm-packages] Exposed train-time evaluation metrics (#2836)
* [jvm-packages] Exposed train-time evaluation metrics
They are accessible via 'XGBoostModel.summary'. The summary is not
serialized with the model and is only available after the training.
* Addressed review comments
* Extracted model-related tests into 'XGBoostModelSuite'
* Added tests for copying the 'XGBoostModel'
* [jvm-packages] Fixed a subtle bug in train/test split
Iterator.partition (naturally) assumes that the predicate is deterministic
but this is not the case for
r.nextDouble() <= trainTestRatio
therefore sometimes the DMatrix(...) call got a NoSuchElementException
and crashed the JVM due to lack of exception handling in
XGBoost4jCallbackDataIterNext.
* Make sure train/test objectives are different
This commit is contained in:
@@ -63,6 +63,12 @@ XGB_EXTERN_C int XGBoost4jCallbackDataIterNext(
|
||||
if (jenv->CallBooleanMethod(jiter, hasNext)) {
|
||||
ret_value = 1;
|
||||
jobject batch = jenv->CallObjectMethod(jiter, next);
|
||||
if (batch == nullptr) {
|
||||
CHECK(jenv->ExceptionOccurred());
|
||||
jenv->ExceptionDescribe();
|
||||
return -1;
|
||||
}
|
||||
|
||||
jclass batchClass = jenv->GetObjectClass(batch);
|
||||
jlongArray joffset = (jlongArray)jenv->GetObjectField(
|
||||
batch, jenv->GetFieldID(batchClass, "rowOffset", "[J"));
|
||||
|
||||
Reference in New Issue
Block a user