package quickml.supervised.tree.decisionTree.branchFinders.branchFinderBuilders; import quickml.supervised.tree.attributeValueIgnoringStrategies.AttributeValueIgnoringStrategy; import quickml.supervised.tree.constants.BranchType; import quickml.supervised.tree.decisionTree.attributeValueIgnoringStrategies.MultiClassAttributeValueIgnoringStrategyBuilder; import quickml.supervised.tree.decisionTree.branchFinders.DTNClassCatBranchFinder; import quickml.supervised.tree.decisionTree.valueCounters.ClassificationCounter; import java.util.Set; /** * Created by alexanderhawk on 4/26/15. */ public class DTCatBranchFinderBuilder extends DTBranchFinderBuilder { @Override public DTCatBranchFinderBuilder createBranchFinderBuilder() { return new DTCatBranchFinderBuilder(); } @Override public DTNClassCatBranchFinder buildBranchFinder(ClassificationCounter classificationCounts, Set<String> candidateAttributes) { AttributeValueIgnoringStrategy<ClassificationCounter> attributeValueIgnoringStrategy; if (getAttributeValueIgnoringStrategyBuilder() == null) { MultiClassAttributeValueIgnoringStrategyBuilder multiClassAttributeValueIgnoringStrategyBuilder = new MultiClassAttributeValueIgnoringStrategyBuilder(getMinAttributeOccurences()); attributeValueIgnoringStrategy = multiClassAttributeValueIgnoringStrategyBuilder.createAttributeValueIgnoringStrategy(classificationCounts); } else { attributeValueIgnoringStrategy = attributeValueIgnoringStrategyBuilder.createAttributeValueIgnoringStrategy(classificationCounts); } return new DTNClassCatBranchFinder(candidateAttributes, branchingConditions, scorerFactory, attributeValueIgnoringStrategy, attributeIgnoringStrategy); } @Override public BranchType getBranchType() { return BranchType.CATEGORICAL; } }