package quickml.supervised.tree.attributeIgnoringStrategies; import quickml.supervised.tree.nodes.Branch; import java.util.concurrent.ThreadLocalRandom; /** * Created by alexanderhawk on 2/28/15. */ public class IgnoreAttributesWithConstantProbability implements AttributeIgnoringStrategy { private static final long serialVersionUID = 0L; private final double ignoreAttributeProbability; private ThreadLocalRandom random = ThreadLocalRandom.current(); public IgnoreAttributesWithConstantProbability(double ignoreAttributeProbability) { this.ignoreAttributeProbability = ignoreAttributeProbability; } @Override public IgnoreAttributesWithConstantProbability copy(){ return new IgnoreAttributesWithConstantProbability(ignoreAttributeProbability); } @Override public boolean ignoreAttribute(String attribute, Branch parent) { if (random.nextDouble() < ignoreAttributeProbability) { return true; } return false; } public double getIgnoreAttributeProbability() { return ignoreAttributeProbability; } @Override public String toString(){ return "ignoreAttributeProbability = " + ignoreAttributeProbability; } }