package shared.filt;
import dist.ConditionalDistribution;
import dist.Distribution;
import dist.DiscreteDistribution;
import shared.DataSet;
import shared.Instance;
import util.linalg.DenseVector;
/**
* A filter that replaces data with a class distribution
* from a classifier
* @author Andrew Guillory gtg008g@mail.gatech.edu
* @version 1.0
*/
public class DiscreteDistributionFilter implements DataSetFilter {
/**
* The classifier in use
*/
private ConditionalDistribution classifier;
/**
* Make a new classifier filter
* @param classifier the classifier
*/
public DiscreteDistributionFilter(ConditionalDistribution classifier) {
this.classifier = classifier;
}
/**
* @see shared.filt.DataSetFilter#filter(shared.DataSet)
*/
public void filter(DataSet dataSet) {
for (int i = 0; i < dataSet.size(); i++) {
Instance instance = dataSet.get(i);
Distribution dist = classifier.distributionFor(instance);
instance.setData(new DenseVector(
((DiscreteDistribution) dist).getProbabilities()));
}
}
}