diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/Booster.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/Booster.java index 4dd53c5d6..64c89ae06 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/Booster.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/Booster.java @@ -59,7 +59,7 @@ public final class Booster { * init Booster from dMatrixs * @param params parameters * @param dMatrixs DMatrix array - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public Booster(Iterable> params, DMatrix[] dMatrixs) throws XGBoostError { init(dMatrixs); @@ -73,7 +73,7 @@ public final class Booster { * load model from modelPath * @param params parameters * @param modelPath booster modelPath (model generated by booster.saveModel) - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public Booster(Iterable> params, String modelPath) throws XGBoostError { init(null); @@ -103,7 +103,7 @@ public final class Booster { * set parameter * @param key param name * @param value param value - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public final void setParam(String key, String value) throws XGBoostError { ErrorHandle.checkCall(XgboostJNI.XGBoosterSetParam(handle, key, value)); @@ -112,7 +112,7 @@ public final class Booster { /** * set parameters * @param params parameters key-value map - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void setParams(Iterable> params) throws XGBoostError { if(params!=null) { @@ -127,7 +127,7 @@ public final class Booster { * Update (one iteration) * @param dtrain training data * @param iter current iteration number - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void update(DMatrix dtrain, int iter) throws XGBoostError { ErrorHandle.checkCall(XgboostJNI.XGBoosterUpdateOneIter(handle, iter, dtrain.getHandle())); @@ -138,7 +138,7 @@ public final class Booster { * @param dtrain training data * @param iter current iteration number * @param obj customized objective class - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void update(DMatrix dtrain, int iter, IObjective obj) throws XGBoostError { float[][] predicts = predict(dtrain, true); @@ -151,7 +151,7 @@ public final class Booster { * @param dtrain training data * @param grad first order of gradient * @param hess seconde order of gradient - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void boost(DMatrix dtrain, float[] grad, float[] hess) throws XGBoostError { if(grad.length != hess.length) { @@ -166,7 +166,7 @@ public final class Booster { * @param evalNames name for eval dmatrixs, used for check results * @param iter current eval iteration * @return eval information - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String evalSet(DMatrix[] evalMatrixs, String[] evalNames, int iter) throws XGBoostError { long[] handles = dMatrixs2handles(evalMatrixs); @@ -177,12 +177,12 @@ public final class Booster { /** * evaluate with given customized Evaluation class - * @param evalMatrixs - * @param evalNames - * @param iter - * @param eval + * @param evalMatrixs evaluation matrix + * @param evalNames evaluation names + * @param iter number of interations + * @param eval custom evaluator * @return eval information - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String evalSet(DMatrix[] evalMatrixs, String[] evalNames, int iter, IEvaluation eval) throws XGBoostError { String evalInfo = ""; @@ -202,7 +202,7 @@ public final class Booster { * @param evalNames name for eval dmatrixs, used for check results * @param iter current eval iteration * @return eval information - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String evalSet(long[] dHandles, String[] evalNames, int iter) throws XGBoostError { String[] evalInfo = new String[1]; @@ -213,11 +213,11 @@ public final class Booster { /** * evaluate with given dmatrix, similar to evalSet - * @param evalMat - * @param evalName - * @param iter + * @param evalMat evaluation matrix + * @param evalName evaluation name + * @param iter number of iterations * @return eval information - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String eval(DMatrix evalMat, String evalName, int iter) throws XGBoostError { DMatrix[] evalMats = new DMatrix[] {evalMat}; @@ -227,10 +227,10 @@ public final class Booster { /** * base function for Predict - * @param data - * @param outPutMargin - * @param treeLimit - * @param predLeaf + * @param data data + * @param outPutMargin output margin + * @param treeLimit limit number of trees + * @param predLeaf prediction minimum to keep leafs * @return predict results */ private synchronized float[][] pred(DMatrix data, boolean outPutMargin, int treeLimit, boolean predLeaf) throws XGBoostError { @@ -259,7 +259,7 @@ public final class Booster { * Predict with data * @param data dmatrix storing the input * @return predict result - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public float[][] predict(DMatrix data) throws XGBoostError { return pred(data, false, 0, false); @@ -270,7 +270,7 @@ public final class Booster { * @param data dmatrix storing the input * @param outPutMargin Whether to output the raw untransformed margin value. * @return predict result - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public float[][] predict(DMatrix data, boolean outPutMargin) throws XGBoostError { return pred(data, outPutMargin, 0, false); @@ -282,7 +282,7 @@ public final class Booster { * @param outPutMargin Whether to output the raw untransformed margin value. * @param treeLimit Limit number of trees in the prediction; defaults to 0 (use all trees). * @return predict result - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public float[][] predict(DMatrix data, boolean outPutMargin, int treeLimit) throws XGBoostError { return pred(data, outPutMargin, treeLimit, false); @@ -297,7 +297,7 @@ public final class Booster { Note that the leaf index of a tree is unique per tree, so you may find leaf 1 in both tree 1 and tree 0. * @return predict result - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public float[][] predict(DMatrix data , int treeLimit, boolean predLeaf) throws XGBoostError { return pred(data, false, treeLimit, predLeaf); @@ -305,7 +305,7 @@ public final class Booster { /** * save model to modelPath - * @param modelPath + * @param modelPath model path */ public void saveModel(String modelPath) { XgboostJNI.XGBoosterSaveModel(handle, modelPath); @@ -319,7 +319,7 @@ public final class Booster { * get the dump of the model as a string array * @param withStats Controls whether the split statistics are output. * @return dumped model information - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String[] getDumpInfo(boolean withStats) throws XGBoostError { int statsFlag = 0; @@ -336,7 +336,7 @@ public final class Booster { * @param featureMap featureMap file * @param withStats Controls whether the split statistics are output. * @return dumped model information - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String[] getDumpInfo(String featureMap, boolean withStats) throws XGBoostError { int statsFlag = 0; @@ -353,10 +353,10 @@ public final class Booster { * @param modelPath file to save dumped model info * @param withStats bool Controls whether the split statistics are output. - * @throws FileNotFoundException - * @throws UnsupportedEncodingException - * @throws IOException - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws FileNotFoundException file not found + * @throws UnsupportedEncodingException unsupported feature + * @throws IOException error with model writing + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void dumpModel(String modelPath, boolean withStats) throws FileNotFoundException, UnsupportedEncodingException, IOException, XGBoostError { File tf = new File(modelPath); @@ -380,10 +380,10 @@ public final class Booster { * @param featureMap featureMap file * @param withStats bool Controls whether the split statistics are output. - * @throws FileNotFoundException - * @throws UnsupportedEncodingException - * @throws IOException - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws FileNotFoundException exception + * @throws UnsupportedEncodingException exception + * @throws IOException exception + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void dumpModel(String modelPath, String featureMap, boolean withStats) throws FileNotFoundException, UnsupportedEncodingException, IOException, XGBoostError { File tf = new File(modelPath); @@ -404,7 +404,7 @@ public final class Booster { /** * get importance of each feature * @return featureMap key: feature index, value: feature importance score - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public Map getFeatureScore() throws XGBoostError { String[] modelInfos = getDumpInfo(false); @@ -433,7 +433,7 @@ public final class Booster { * get importance of each feature * @param featureMap file to save dumped model info * @return featureMap key: feature index, value: feature importance score - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public Map getFeatureScore(String featureMap) throws XGBoostError { String[] modelInfos = getDumpInfo(featureMap, false); diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/DMatrix.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/DMatrix.java index 1a4f4dd28..625ae7d66 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/DMatrix.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/DMatrix.java @@ -51,8 +51,8 @@ public class DMatrix { /** * init DMatrix from file (svmlight format) - * @param dataPath - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @param dataPath path of data file + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public DMatrix(String dataPath) throws XGBoostError { if(dataPath == null) { @@ -69,7 +69,7 @@ public class DMatrix { * @param indices Indices (colIndexs for CSR or rowIndexs for CSC) * @param data non zero values (sequence by row for CSR or by col for CSC) * @param st sparse matrix type (CSR or CSC) - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public DMatrix(long[] headers, int[] indices, float[] data, SparseType st) throws XGBoostError { long[] out = new long[1]; @@ -90,7 +90,7 @@ public class DMatrix { * @param data data values * @param nrow number of rows * @param ncol number of columns - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public DMatrix(float[] data, int nrow, int ncol) throws XGBoostError { long[] out = new long[1]; @@ -110,7 +110,8 @@ public class DMatrix { /** * set label of dmatrix - * @param labels + * @param labels labels + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void setLabel(float[] labels) throws XGBoostError { ErrorHandle.checkCall(XgboostJNI.XGDMatrixSetFloatInfo(handle, "label", labels)); @@ -118,8 +119,8 @@ public class DMatrix { /** * set weight of each instance - * @param weights - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @param weights weights + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void setWeight(float[] weights) throws XGBoostError { ErrorHandle.checkCall(XgboostJNI.XGDMatrixSetFloatInfo(handle, "weight", weights)); @@ -128,8 +129,8 @@ public class DMatrix { /** * if specified, xgboost will start from this init margin * can be used to specify initial prediction to boost from - * @param baseMargin - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @param baseMargin base margin + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void setBaseMargin(float[] baseMargin) throws XGBoostError { ErrorHandle.checkCall(XgboostJNI.XGDMatrixSetFloatInfo(handle, "base_margin", baseMargin)); @@ -138,8 +139,8 @@ public class DMatrix { /** * if specified, xgboost will start from this init margin * can be used to specify initial prediction to boost from - * @param baseMargin - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @param baseMargin base margin + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void setBaseMargin(float[][] baseMargin) throws XGBoostError { float[] flattenMargin = flatten(baseMargin); @@ -148,8 +149,8 @@ public class DMatrix { /** * Set group sizes of DMatrix (used for ranking) - * @param group - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @param group group size as array + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void setGroup(int[] group) throws XGBoostError { ErrorHandle.checkCall(XgboostJNI.XGDMatrixSetGroup(handle, group)); @@ -170,7 +171,7 @@ public class DMatrix { /** * get label values * @return label - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public float[] getLabel() throws XGBoostError { return getFloatInfo("label"); @@ -179,7 +180,7 @@ public class DMatrix { /** * get weight of the DMatrix * @return weights - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public float[] getWeight() throws XGBoostError { return getFloatInfo("weight"); @@ -188,7 +189,7 @@ public class DMatrix { /** * get base margin of the DMatrix * @return base margin - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public float[] getBaseMargin() throws XGBoostError { return getFloatInfo("base_margin"); @@ -196,9 +197,9 @@ public class DMatrix { /** * Slice the DMatrix and return a new DMatrix that only contains `rowIndex`. - * @param rowIndex + * @param rowIndex row index * @return sliced new DMatrix - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public DMatrix slice(int[] rowIndex) throws XGBoostError { long[] out = new long[1]; @@ -211,7 +212,7 @@ public class DMatrix { /** * get the row number of DMatrix * @return number of rows - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public long rowNum() throws XGBoostError { long[] rowNum = new long[1]; @@ -221,12 +222,16 @@ public class DMatrix { /** * save DMatrix to filePath - * @param filePath + * @param filePath file path */ public void saveBinary(String filePath) { XgboostJNI.XGDMatrixSaveBinary(handle, filePath, 1); } + /** + * Get the handle + * @return native handler id + */ public long getHandle() { return handle; } diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/IEvaluation.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/IEvaluation.java index a02746dfa..3793bff41 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/IEvaluation.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/IEvaluation.java @@ -16,21 +16,26 @@ package org.dmlc.xgboost4j; /** - * interface for customized evaluation + * interface for customized evaluation + * * @author hzx */ -public interface IEvaluation { - /** - * get evaluate metric - * @return evalMetric - */ - public abstract String getMetric(); - - /** - * evaluate with predicts and data - * @param predicts - * @param dmat - * @return - */ - public abstract float eval(float[][] predicts, DMatrix dmat); +public interface IEvaluation { + /** + * get evaluate metric + * + * @return evalMetric + */ + public abstract String getMetric(); + + /** + * evaluate with predicts and data + * + * @param predicts + * predictions as array + * @param dmat + * data matrix to evaluate + * @return result of the metric + */ + public abstract float eval(float[][] predicts, DMatrix dmat); } diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/CVPack.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/CVPack.java index a9b932f0d..bf05ea828 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/CVPack.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/CVPack.java @@ -37,7 +37,7 @@ public class CVPack { * @param dtrain train data * @param dtest test data * @param params parameters - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public CVPack(DMatrix dtrain, DMatrix dtest, Iterable> params) throws XGBoostError { dmats = new DMatrix[] {dtrain, dtest}; @@ -50,7 +50,7 @@ public class CVPack { /** * update one iteration * @param iter iteration num - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void update(int iter) throws XGBoostError { booster.update(dtrain, iter); @@ -60,7 +60,7 @@ public class CVPack { * update one iteration * @param iter iteration num * @param obj customized objective - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public void update(int iter, IObjective obj) throws XGBoostError { booster.update(dtrain, iter, obj); @@ -69,8 +69,8 @@ public class CVPack { /** * evaluation * @param iter iteration num - * @return - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @return evaluation + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String eval(int iter) throws XGBoostError { return booster.evalSet(dmats, names, iter); @@ -80,8 +80,8 @@ public class CVPack { * evaluation * @param iter iteration num * @param eval customized eval - * @return - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @return evaluation + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public String eval(int iter, IEvaluation eval) throws XGBoostError { return booster.evalSet(dmats, names, iter, eval); diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/ErrorHandle.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/ErrorHandle.java index 688cd2719..aad9f6174 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/ErrorHandle.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/ErrorHandle.java @@ -21,8 +21,7 @@ import org.apache.commons.logging.LogFactory; import org.dmlc.xgboost4j.wrapper.XgboostJNI; /** - * error handle for Xgboost - * @author hzx + * Error handle for Xgboost. */ public class ErrorHandle { private static final Log logger = LogFactory.getLog(ErrorHandle.class); @@ -38,9 +37,9 @@ public class ErrorHandle { } /** - * check the return value of C API + * Check the return value of C API. * @param ret return valud of xgboostJNI C API call - * @throws org.dmlc.xgboost4j.util.XGBoostError + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public static void checkCall(int ret) throws XGBoostError { if(ret != 0) { diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Initializer.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Initializer.java index 709eaffab..5dbbe4b28 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Initializer.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Initializer.java @@ -44,8 +44,8 @@ public class Initializer { /** * load native library, this method will first try to load library from java.library.path, then try to load library in jar package. - * @param libName - * @throws IOException + * @param libName library path + * @throws IOException exception */ private static void smartLoad(String libName) throws IOException { addNativeDir(nativePath); @@ -63,9 +63,9 @@ public class Initializer { } /** - * add libPath to java.library.path, then native library in libPath would be load properly - * @param libPath - * @throws IOException + * Add libPath to java.library.path, then native library in libPath would be load properly + * @param libPath library path + * @throws IOException exception */ public static void addNativeDir(String libPath) throws IOException { try { diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/NativeUtils.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/NativeUtils.java index c0f199005..77e299fa2 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/NativeUtils.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/NativeUtils.java @@ -25,10 +25,11 @@ import java.io.OutputStream; /** * Simple library class for working with JNI (Java Native Interface) - * - * @see http://adamheinrich.com/2012/how-to-load-native-jni-library-from-jar - * - * @author Adam Heirnich <adam@adamh.cz>, http://www.adamh.cz + *

+ * See + * http://adamheinrich.com/2012/how-to-load-native-jni-library-from-jar + *

+ * Author Adam Heirnich <adam@adamh.cz>, http://www.adamh.cz */ public class NativeUtils { @@ -40,14 +41,17 @@ public class NativeUtils { /** * Loads library from current JAR archive - * - * The file from JAR is copied into system temporary directory and then loaded. The temporary file is deleted after exiting. + *

+ * The file from JAR is copied into system temporary directory and then loaded. + * The temporary file is deleted after exiting. * Method uses String as filename because the pathname is "abstract", not system-dependent. + *

+ * The restrictions of {@link File#createTempFile(java.lang.String, java.lang.String)} apply to {@code path}. * * @param path The filename inside JAR as absolute path (beginning with '/'), e.g. /package/File.ext * @throws IOException If temporary file creation or read/write operation fails * @throws IllegalArgumentException If source file (param path) does not exist - * @throws IllegalArgumentException If the path is not absolute or if the filename is shorter than three characters (restriction of {@see File#createTempFile(java.lang.String, java.lang.String)}). + * @throws IllegalArgumentException If the path is not absolute or if the filename is shorter than three characters */ public static void loadLibraryFromJar(String path) throws IOException { diff --git a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Trainer.java b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Trainer.java index e5ac8502a..994a8b4ac 100644 --- a/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Trainer.java +++ b/java/xgboost4j/src/main/java/org/dmlc/xgboost4j/util/Trainer.java @@ -45,6 +45,7 @@ public class Trainer { * @param obj customized objective (set to null if not used) * @param eval customized evaluation (set to null if not used) * @return trained booster + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public static Booster train(Iterable> params, DMatrix dtrain, int round, Iterable> watchs, IObjective obj, IEvaluation eval) throws XGBoostError { @@ -111,6 +112,7 @@ public class Trainer { * @param obj customized objective (set to null if not used) * @param eval customized evaluation (set to null if not used) * @return evaluation history + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public static String[] crossValiation(Iterable> params, DMatrix data, int round, int nfold, String[] metrics, IObjective obj, IEvaluation eval) throws XGBoostError { CVPack[] cvPacks = makeNFold(data, nfold, params, metrics); @@ -148,6 +150,7 @@ public class Trainer { * @param params booster parameters * @param evalMetrics Evaluation metrics * @return CV package array + * @throws org.dmlc.xgboost4j.util.XGBoostError native error */ public static CVPack[] makeNFold(DMatrix data, int nfold, Iterable> params, String[] evalMetrics) throws XGBoostError { List samples = genRandPermutationNums(0, (int) data.rowNum());