package pl.piotrsukiennik.whowhen.classification.label.filter;
import pl.piotrsukiennik.whowhen.classification.filter.FilteringClassificationResult;
import pl.piotrsukiennik.whowhen.classification.filter.IFilteringClassifier;
import pl.piotrsukiennik.whowhen.classification.label.IFeaturesLabeller;
import pl.piotrsukiennik.whowhen.classification.label.LabelledIndexIntervals;
import java.util.ArrayList;
import java.util.List;
/**
* @author Piotr Sukiennik
*/
public class FilteringLabeller implements IFeaturesLabeller {
private IFilteringClassifier filteringClassifier;
private String name;
public FilteringLabeller( IFilteringClassifier filteringClassifier ) {
this.filteringClassifier = filteringClassifier;
this.name = this.filteringClassifier.getClass().getSimpleName().replaceAll( "[a-z]*", "" ) + "filtered";
}
public LabelledIndexIntervals label( List<double[]> input ) {
LabelledIndexIntervals labelledIndexIntervals = new LabelledIndexIntervals();
List<double[]> result = new ArrayList<double[]>();
for ( int i = 0; i < input.size(); i++ ) {
double[] vector = input.get( i );
FilteringClassificationResult filteringClassificationResult = filteringClassifier.filters( vector );
if ( !filteringClassificationResult.isFilterable() ) {
result.add( vector );
}
labelledIndexIntervals.applyLabel( filteringClassificationResult.getLabel(), i );
}
labelledIndexIntervals.setResultData( result );
return labelledIndexIntervals;
}
public String getName() {
return name;
}
}