package quickml.supervised.tree.decisionTree;
import org.javatuples.Pair;
import quickml.data.instances.ClassifierInstance;
import quickml.supervised.tree.TreeBuilderHelper;
import quickml.supervised.tree.decisionTree.treeBuildContexts.DTreeContextBuilder;
import quickml.supervised.tree.decisionTree.treeBuildContexts.DTreeContext;
import quickml.supervised.tree.decisionTree.valueCounters.ClassificationCounter;
import quickml.supervised.tree.nodes.Node;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
/**
* Created by alexanderhawk on 4/20/15.
*/
public class DecisionTreeBuilderHelper<I extends ClassifierInstance> extends TreeBuilderHelper<I, ClassificationCounter> {
DTreeContextBuilder<I> treeBuildContext;
public DecisionTreeBuilderHelper(DTreeContextBuilder<I> treeBuildContext) {
super(treeBuildContext);
this.treeBuildContext = treeBuildContext;
}
public Pair<Node<ClassificationCounter>, Set<Serializable>> computeNodesAndClasses(List<I> trainingData) {
DTreeContext<I> itbc = treeBuildContext.buildContext(trainingData);
Node<ClassificationCounter> root = createNode(null, trainingData, itbc);
return Pair.with(root, itbc.getClassifications());
}
}