package quickml.data;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import quickml.data.instances.Instance;
import java.util.HashSet;
/**
* Created by alexanderhawk on 5/1/14.
*/
public class NegativeWeightsFilter {
//TODO[mk] is this being used?
//parametrize training data or subtype it to have right params
public static <R,L> Iterable<? extends Instance<R, L>> filterNegativeWeights(Iterable<? extends Instance<R, L>> trainingData) {
final HashSet<R> instanceLookUp = new HashSet<R>();
for (Instance<R,L> instance : trainingData)
if (instance.getWeight() < 0)
instanceLookUp.add(instance.getAttributes());
Predicate<Instance<R,L>> predicate = new Predicate<Instance<R, L>>() {
@Override
public boolean apply(final Instance<R, L> instance) {
if (instanceLookUp.contains(instance.getAttributes()))
return false;
else
return true;
}
};
return Iterables.filter(trainingData, predicate);
}
}