@Test
public void testUpdate() {

    int sampleSize = 100;
    double[] xs = new double[sampleSize];
    double[] ys = new double[sampleSize];
    for (int i = 0; i < sampleSize; i++) {
        xs[i] = i;
        ys[i] = ((int)(xs[i] / 10.0) % 2) == 0 ? -1.0 : 1.0;
    }
    Map<Integer, double[]> learningSample = new HashMap<>();
    for (int i = 0; i < sampleSize; i++)
        learningSample.put(i, new double[] {xs[i], ys[i]});
    IgniteBiFunction<Integer, double[], Vector> fExtr = (k, v) -> VectorUtils.of(v[0]);
    IgniteBiFunction<Integer, double[], Double> lExtr = (k, v) -> v[1];
    GDBTrainer classifTrainer = new GDBBinaryClassifierOnTreesTrainer(0.3, 500, 3, 0.0)
        .withUsingIdx(true)
        .withCheckConvergenceStgyFactory(new MeanAbsValueConvergenceCheckerFactory(0.3));
    GDBTrainer regressTrainer = new GDBRegressionOnTreesTrainer(0.3, 500, 3, 0.0)
        .withUsingIdx(true)
        .withCheckConvergenceStgyFactory(new MeanAbsValueConvergenceCheckerFactory(0.3));
    //testUpdate(learningSample, fExtr, lExtr, classifTrainer);
    //testUpdate(learningSample, fExtr, lExtr, regressTrainer);
}