package quickml.supervised.classifier.downsampling;
import com.google.common.base.Predicate;
import quickml.collections.MapUtils;
import quickml.data.instances.InstanceWithAttributesMap;
import java.io.Serializable;
/**
* Created by ian on 4/23/14.
*/
class RandomDroppingInstanceFilter implements Predicate<InstanceWithAttributesMap<Serializable>> {
private final Serializable classificationToDrop;
private final double dropProbability;
public RandomDroppingInstanceFilter(Serializable classificationToDrop, double dropProbability) {
this.classificationToDrop = classificationToDrop;
this.dropProbability = dropProbability;
}
@Override
public boolean apply(final InstanceWithAttributesMap<Serializable> Instance) {
if (Instance.getLabel().equals(classificationToDrop)) {
final double rand = MapUtils.random.nextDouble();
return rand > dropProbability;
} else {
return true;
}
}
}