adjust the API signature as well as the docs
This commit is contained in:
@@ -67,7 +67,7 @@ public class BasicWalkThrough {
|
||||
int round = 2;
|
||||
|
||||
//train a boost model
|
||||
Booster booster = XGBoost.train(params, trainMat, round, watches, null, null);
|
||||
Booster booster = XGBoost.train(trainMat, params, round, watches, null, null);
|
||||
|
||||
//predict
|
||||
float[][] predicts = booster.predict(testMat);
|
||||
@@ -111,7 +111,7 @@ public class BasicWalkThrough {
|
||||
HashMap<String, DMatrix> watches2 = new HashMap<String, DMatrix>();
|
||||
watches2.put("train", trainMat2);
|
||||
watches2.put("test", testMat2);
|
||||
Booster booster3 = XGBoost.train(params, trainMat2, round, watches2, null, null);
|
||||
Booster booster3 = XGBoost.train(trainMat2, params, round, watches2, null, null);
|
||||
float[][] predicts3 = booster3.predict(testMat2);
|
||||
|
||||
//check predicts
|
||||
|
||||
@@ -48,7 +48,7 @@ public class BoostFromPrediction {
|
||||
watches.put("test", testMat);
|
||||
|
||||
//train xgboost for 1 round
|
||||
Booster booster = XGBoost.train(params, trainMat, 1, watches, null, null);
|
||||
Booster booster = XGBoost.train(trainMat, params, 1, watches, null, null);
|
||||
|
||||
float[][] trainPred = booster.predict(trainMat, true);
|
||||
float[][] testPred = booster.predict(testMat, true);
|
||||
@@ -57,6 +57,6 @@ public class BoostFromPrediction {
|
||||
testMat.setBaseMargin(testPred);
|
||||
|
||||
System.out.println("result of running from initial prediction");
|
||||
Booster booster2 = XGBoost.train(params, trainMat, 1, watches, null, null);
|
||||
Booster booster2 = XGBoost.train(trainMat, params, 1, watches, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class CrossValidation {
|
||||
//set additional eval_metrics
|
||||
String[] metrics = null;
|
||||
|
||||
String[] evalHist = XGBoost.crossValidation(params, trainMat, round, nfold, metrics, null,
|
||||
String[] evalHist = XGBoost.crossValidation(trainMat, params, round, nfold, metrics, null,
|
||||
null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,6 +163,6 @@ public class CustomObjective {
|
||||
|
||||
//train a booster
|
||||
System.out.println("begin to train the booster model");
|
||||
Booster booster = XGBoost.train(params, trainMat, round, watches, obj, eval);
|
||||
Booster booster = XGBoost.train(trainMat, params, round, watches, obj, eval);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,6 @@ public class ExternalMemory {
|
||||
int round = 2;
|
||||
|
||||
//train a boost model
|
||||
Booster booster = XGBoost.train(params, trainMat, round, watches, null, null);
|
||||
Booster booster = XGBoost.train(trainMat, params, round, watches, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class GeneralizedLinearModel {
|
||||
|
||||
//train a booster
|
||||
int round = 4;
|
||||
Booster booster = XGBoost.train(params, trainMat, round, watches, null, null);
|
||||
Booster booster = XGBoost.train(trainMat, params, round, watches, null, null);
|
||||
|
||||
float[][] predicts = booster.predict(testMat);
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public class PredictFirstNtree {
|
||||
|
||||
//train a booster
|
||||
int round = 3;
|
||||
Booster booster = XGBoost.train(params, trainMat, round, watches, null, null);
|
||||
Booster booster = XGBoost.train(trainMat, params, round, watches, null, null);
|
||||
|
||||
//predict use 1 tree
|
||||
float[][] predicts1 = booster.predict(testMat, false, 1);
|
||||
|
||||
@@ -49,7 +49,7 @@ public class PredictLeafIndices {
|
||||
|
||||
//train a booster
|
||||
int round = 3;
|
||||
Booster booster = XGBoost.train(params, trainMat, round, watches, null, null);
|
||||
Booster booster = XGBoost.train(trainMat, params, round, watches, null, null);
|
||||
|
||||
//predict using first 2 tree
|
||||
float[][] leafindex = booster.predictLeaf(testMat, 2);
|
||||
|
||||
@@ -43,7 +43,7 @@ class BasicWalkThrough {
|
||||
|
||||
val round = 2
|
||||
// train a model
|
||||
val booster = XGBoost.train(params.toMap, trainMax, round, watches.toMap)
|
||||
val booster = XGBoost.train(trainMax, params.toMap, round, watches.toMap)
|
||||
// predict
|
||||
val predicts = booster.predict(testMax)
|
||||
// save model to model path
|
||||
@@ -78,7 +78,7 @@ class BasicWalkThrough {
|
||||
val watches2 = new mutable.HashMap[String, DMatrix]
|
||||
watches2 += "train" -> trainMax2
|
||||
watches2 += "test" -> testMax2
|
||||
val booster3 = XGBoost.train(params.toMap, trainMax2, round, watches2.toMap, null, null)
|
||||
val booster3 = XGBoost.train(trainMax2, params.toMap, round, watches2.toMap, null, null)
|
||||
val predicts3 = booster3.predict(testMax2)
|
||||
println(checkPredicts(predicts, predicts3))
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class BoostFromPrediction {
|
||||
|
||||
val round = 2
|
||||
// train a model
|
||||
val booster = XGBoost.train(params.toMap, trainMat, round, watches.toMap)
|
||||
val booster = XGBoost.train(trainMat, params.toMap, round, watches.toMap)
|
||||
|
||||
val trainPred = booster.predict(trainMat, true)
|
||||
val testPred = booster.predict(testMat, true)
|
||||
@@ -48,6 +48,6 @@ class BoostFromPrediction {
|
||||
testMat.setBaseMargin(testPred)
|
||||
|
||||
System.out.println("result of running from initial prediction")
|
||||
val booster2 = XGBoost.train(params.toMap, trainMat, 1, watches.toMap, null, null)
|
||||
val booster2 = XGBoost.train(trainMat, params.toMap, 1, watches.toMap, null, null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,6 @@ class CrossValidation {
|
||||
val metrics: Array[String] = null
|
||||
|
||||
val evalHist: Array[String] =
|
||||
XGBoost.crossValidation(params.toMap, trainMat, round, nfold, metrics, null, null)
|
||||
XGBoost.crossValidation(trainMat, params.toMap, round, nfold, metrics, null, null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,8 +150,8 @@ class CustomObjective {
|
||||
|
||||
val round = 2
|
||||
// train a model
|
||||
val booster = XGBoost.train(params.toMap, trainMat, round, watches.toMap)
|
||||
XGBoost.train(params.toMap, trainMat, round, watches.toMap, new LogRegObj, new EvalError)
|
||||
val booster = XGBoost.train(trainMat, params.toMap, round, watches.toMap)
|
||||
XGBoost.train(trainMat, params.toMap, round, watches.toMap, new LogRegObj, new EvalError)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ class ExternalMemory {
|
||||
|
||||
val round = 2
|
||||
// train a model
|
||||
val booster = XGBoost.train(params.toMap, trainMat, round, watches.toMap)
|
||||
val booster = XGBoost.train(trainMat, params.toMap, round, watches.toMap)
|
||||
|
||||
val trainPred = booster.predict(trainMat, true)
|
||||
val testPred = booster.predict(testMat, true)
|
||||
@@ -54,6 +54,6 @@ class ExternalMemory {
|
||||
testMat.setBaseMargin(testPred)
|
||||
|
||||
System.out.println("result of running from initial prediction")
|
||||
val booster2 = XGBoost.train(params.toMap, trainMat, 1, watches.toMap, null, null)
|
||||
val booster2 = XGBoost.train(trainMat, params.toMap, 1, watches.toMap, null, null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ class GeneralizedLinearModel {
|
||||
watches += "test" -> testMat
|
||||
|
||||
val round = 4
|
||||
val booster = XGBoost.train(params.toMap, trainMat, 1, watches.toMap, null, null)
|
||||
val booster = XGBoost.train(trainMat, params.toMap, 1, watches.toMap, null, null)
|
||||
val predicts = booster.predict(testMat)
|
||||
val eval = new CustomEval
|
||||
println(s"error=${eval.eval(predicts, testMat)}")
|
||||
|
||||
@@ -38,7 +38,7 @@ class PredictFirstNTree {
|
||||
|
||||
val round = 3
|
||||
// train a model
|
||||
val booster = XGBoost.train(params.toMap, trainMat, round, watches.toMap)
|
||||
val booster = XGBoost.train(trainMat, params.toMap, round, watches.toMap)
|
||||
|
||||
// predict use 1 tree
|
||||
val predicts1 = booster.predict(testMat, false, 1)
|
||||
|
||||
@@ -39,7 +39,7 @@ class PredictLeafIndices {
|
||||
watches += "test" -> testMat
|
||||
|
||||
val round = 3
|
||||
val booster = XGBoost.train(params.toMap, trainMat, round, watches.toMap)
|
||||
val booster = XGBoost.train(trainMat, params.toMap, round, watches.toMap)
|
||||
|
||||
// predict using first 2 tree
|
||||
val leafIndex = booster.predictLeaf(testMat, 2)
|
||||
|
||||
@@ -56,7 +56,7 @@ object XGBoost {
|
||||
val trainMat = new DMatrix(dataIter, null)
|
||||
val watches = List("train" -> trainMat).toMap
|
||||
val round = 2
|
||||
val booster = XGBoostScala.train(paramMap, trainMat, round, watches, null, null)
|
||||
val booster = XGBoostScala.train(trainMat, paramMap, round, watches, null, null)
|
||||
Rabit.shutdown()
|
||||
collector.collect(new XGBoostModel(booster))
|
||||
}
|
||||
|
||||
@@ -56,9 +56,10 @@ object XGBoost extends Serializable {
|
||||
trainingSamples =>
|
||||
rabitEnv.put("DMLC_TASK_ID", TaskContext.getPartitionId().toString)
|
||||
Rabit.init(rabitEnv.asJava)
|
||||
val dMatrix = new DMatrix(new JDMatrix(trainingSamples, null))
|
||||
val booster = SXGBoost.train(xgBoostConfMap, dMatrix, round,
|
||||
watches = new mutable.HashMap[String, DMatrix]{put("train", dMatrix)}.toMap, obj, eval)
|
||||
val trainingSet = new DMatrix(new JDMatrix(trainingSamples, null))
|
||||
val booster = SXGBoost.train(trainingSet, xgBoostConfMap, round,
|
||||
watches = new mutable.HashMap[String, DMatrix]{put("train", trainingSet)}.toMap,
|
||||
obj, eval)
|
||||
Rabit.shutdown()
|
||||
Iterator(booster)
|
||||
}.cache()
|
||||
|
||||
@@ -60,8 +60,8 @@ public class XGBoost {
|
||||
/**
|
||||
* Train a booster with given parameters.
|
||||
*
|
||||
* @param params Booster params.
|
||||
* @param dtrain Data to be trained.
|
||||
* @param params Booster params.
|
||||
* @param round Number of boosting iterations.
|
||||
* @param watches a group of items to be evaluated during training, this allows user to watch
|
||||
* performance on the validation set.
|
||||
@@ -70,11 +70,13 @@ public class XGBoost {
|
||||
* @return trained booster
|
||||
* @throws XGBoostError native error
|
||||
*/
|
||||
public static Booster train(Map<String, Object> params,
|
||||
DMatrix dtrain, int round,
|
||||
Map<String, DMatrix> watches,
|
||||
IObjective obj,
|
||||
IEvaluation eval) throws XGBoostError {
|
||||
public static Booster train(
|
||||
DMatrix dtrain,
|
||||
Map<String, Object> params,
|
||||
int round,
|
||||
Map<String, DMatrix> watches,
|
||||
IObjective obj,
|
||||
IEvaluation eval) throws XGBoostError {
|
||||
|
||||
//collect eval matrixs
|
||||
String[] evalNames;
|
||||
@@ -139,8 +141,8 @@ public class XGBoost {
|
||||
/**
|
||||
* Cross-validation with given parameters.
|
||||
*
|
||||
* @param params Booster params.
|
||||
* @param data Data to be trained.
|
||||
* @param params Booster params.
|
||||
* @param round Number of boosting iterations.
|
||||
* @param nfold Number of folds in CV.
|
||||
* @param metrics Evaluation metrics to be watched in CV.
|
||||
@@ -150,8 +152,8 @@ public class XGBoost {
|
||||
* @throws XGBoostError native error
|
||||
*/
|
||||
public static String[] crossValidation(
|
||||
Map<String, Object> params,
|
||||
DMatrix data,
|
||||
Map<String, Object> params,
|
||||
int round,
|
||||
int nfold,
|
||||
String[] metrics,
|
||||
|
||||
@@ -28,8 +28,8 @@ object XGBoost {
|
||||
/**
|
||||
* Train a booster given parameters.
|
||||
*
|
||||
* @param params Parameters.
|
||||
* @param dtrain Data to be trained.
|
||||
* @param params Parameters.
|
||||
* @param round Number of boosting iterations.
|
||||
* @param watches a group of items to be evaluated during training, this allows user to watch
|
||||
* performance on the validation set.
|
||||
@@ -39,8 +39,8 @@ object XGBoost {
|
||||
*/
|
||||
@throws(classOf[XGBoostError])
|
||||
def train(
|
||||
params: Map[String, Any],
|
||||
dtrain: DMatrix,
|
||||
params: Map[String, Any],
|
||||
round: Int,
|
||||
watches: Map[String, DMatrix] = Map[String, DMatrix](),
|
||||
obj: ObjectiveTrait = null,
|
||||
@@ -49,10 +49,11 @@ object XGBoost {
|
||||
|
||||
val jWatches = watches.map{case (name, matrix) => (name, matrix.jDMatrix)}
|
||||
val xgboostInJava = JXGBoost.train(
|
||||
dtrain.jDMatrix,
|
||||
params.map{
|
||||
case (key: String, value) => (key, value.toString)
|
||||
}.toMap[String, AnyRef].asJava,
|
||||
dtrain.jDMatrix, round, jWatches.asJava,
|
||||
round, jWatches.asJava,
|
||||
obj, eval)
|
||||
new Booster(xgboostInJava)
|
||||
}
|
||||
@@ -60,8 +61,8 @@ object XGBoost {
|
||||
/**
|
||||
* Cross-validation with given parameters.
|
||||
*
|
||||
* @param params Booster params.
|
||||
* @param data Data to be trained.
|
||||
* @param params Booster params.
|
||||
* @param round Number of boosting iterations.
|
||||
* @param nfold Number of folds in CV.
|
||||
* @param metrics Evaluation metrics to be watched in CV.
|
||||
@@ -71,17 +72,17 @@ object XGBoost {
|
||||
*/
|
||||
@throws(classOf[XGBoostError])
|
||||
def crossValidation(
|
||||
params: Map[String, Any],
|
||||
data: DMatrix,
|
||||
params: Map[String, Any],
|
||||
round: Int,
|
||||
nfold: Int = 5,
|
||||
metrics: Array[String] = null,
|
||||
obj: ObjectiveTrait = null,
|
||||
eval: EvalTrait = null): Array[String] = {
|
||||
JXGBoost.crossValidation(params.map{
|
||||
case (key: String, value) => (key, value.toString)
|
||||
}.toMap[String, AnyRef].asJava,
|
||||
data.jDMatrix, round, nfold, metrics, obj, eval)
|
||||
JXGBoost.crossValidation(
|
||||
data.jDMatrix, params.map{ case (key: String, value) => (key, value.toString)}.
|
||||
toMap[String, AnyRef].asJava,
|
||||
round, nfold, metrics, obj, eval)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -94,7 +94,7 @@ public class BoosterImplTest {
|
||||
int round = 5;
|
||||
|
||||
//train a boost model
|
||||
return XGBoost.train(paramMap, trainMat, round, watches, null, null);
|
||||
return XGBoost.train(trainMat, paramMap, round, watches, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -177,6 +177,6 @@ public class BoosterImplTest {
|
||||
//do 5-fold cross validation
|
||||
int round = 2;
|
||||
int nfold = 5;
|
||||
String[] evalHist = XGBoost.crossValidation(param, trainMat, round, nfold, null, null, null);
|
||||
String[] evalHist = XGBoost.crossValidation(trainMat, param, round, nfold, null, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ class ScalaBoosterImplSuite extends FunSuite {
|
||||
val watches = List("train" -> trainMat, "test" -> testMat).toMap
|
||||
|
||||
val round = 2
|
||||
XGBoost.train(paramMap, trainMat, round, watches, null, null)
|
||||
XGBoost.train(trainMat, paramMap, round, watches, null, null)
|
||||
}
|
||||
|
||||
test("basic operation of booster") {
|
||||
@@ -126,6 +126,6 @@ class ScalaBoosterImplSuite extends FunSuite {
|
||||
"objective" -> "binary:logistic", "gamma" -> "1.0", "eval_metric" -> "error").toMap
|
||||
val round = 2
|
||||
val nfold = 5
|
||||
XGBoost.crossValidation(params, trainMat, round, nfold, null, null, null)
|
||||
XGBoost.crossValidation(trainMat, params, round, nfold, null, null, null)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user