package quickml.supervised.tree.regressionTree.branchFinders.branchFinderBuilders;
import com.google.common.base.Optional;
import quickml.supervised.tree.attributeValueIgnoringStrategies.AttributeValueIgnoringStrategy;
import quickml.supervised.tree.branchFinders.branchFinderBuilders.BranchFinderBuilder;
import quickml.supervised.tree.constants.BranchType;
import quickml.supervised.tree.nodes.Branch;
import quickml.supervised.tree.regressionTree.attributeValueIgnoringStrategies.RegTreeAttributeValueIgnoringStrategyBuilder;
import quickml.supervised.tree.regressionTree.branchFinders.RTNumBranchFinder;
import quickml.supervised.tree.regressionTree.valueCounters.MeanValueCounter;
import java.util.Set;
/**
* Created by alexanderhawk on 4/5/15.
*/
public class RTNumBranchFinderBuilder extends RTBranchFinderBuilder {
private static final long serialVersionUID = 0L;
@Override
public BranchFinderBuilder<MeanValueCounter> createBranchFinderBuilder() {
return new RTNumBranchFinderBuilder();
}
@Override
public BranchType getBranchType() {
return BranchType.RT_NUMERIC;
}
@Override
public RTNumBranchFinder buildBranchFinder(MeanValueCounter meanValueCounter, Set<String> candidateAttributes) {
AttributeValueIgnoringStrategy<MeanValueCounter> attributeValueIgnoringStrategy;
if(attributeValueIgnoringStrategyBuilder==null) {
RegTreeAttributeValueIgnoringStrategyBuilder regTreeAttributeValueIgnoringStrategyBuilder = new RegTreeAttributeValueIgnoringStrategyBuilder(getMinAttributeOccurences());
attributeValueIgnoringStrategy = regTreeAttributeValueIgnoringStrategyBuilder.createAttributeValueIgnoringStrategy(meanValueCounter);//TODO
} else {
attributeValueIgnoringStrategy = attributeValueIgnoringStrategyBuilder.createAttributeValueIgnoringStrategy(meanValueCounter); //TODO make an attributeValueIgnoringStrategy that takes a MeanValueCounter that informs upon the general ratio of interesting target values and uninteresting values.
}
return new RTNumBranchFinder(candidateAttributes, branchingConditions,
scorerFactory, attributeValueIgnoringStrategy,
attributeIgnoringStrategy);
}
}