package quickml.supervised.tree.regressionTree.reducers.reducerFactories; import quickml.data.instances.RegressionInstance; import quickml.supervised.tree.reducers.Reducer; import quickml.supervised.tree.reducers.ReducerFactory; import quickml.supervised.tree.regressionTree.reducers.RTNumBranchReducer; import quickml.supervised.tree.regressionTree.valueCounters.MeanValueCounter; import java.io.Serializable; import java.util.List; import java.util.Map; import static quickml.supervised.tree.constants.ForestOptions.NUM_NUMERIC_BINS; import static quickml.supervised.tree.constants.ForestOptions.NUM_SAMPLES_PER_NUMERIC_BIN; /** * Created by alexanderhawk on 7/9/15. */ public class RTNumBranchReducerFactory<I extends RegressionInstance> implements ReducerFactory<I, MeanValueCounter>{ int numSamplesPerBin; int numNumericBins; @Override public Reducer<I, MeanValueCounter> getReducer(List<I> trainingData) { return new RTNumBranchReducer<>(trainingData, numSamplesPerBin, numNumericBins); } @Override public void updateBuilderConfig(Map<String, Serializable> cfg) { if (cfg.containsKey(NUM_SAMPLES_PER_NUMERIC_BIN.name())) { numSamplesPerBin = (int) cfg.get(NUM_SAMPLES_PER_NUMERIC_BIN.name()); } if (cfg.containsKey(NUM_NUMERIC_BINS.name())) { numNumericBins = (int) cfg.get(NUM_NUMERIC_BINS.name()); } } }