public abstract class SimpleBatchFilter extends SimpleFilter
true.SomeFilter on a
dataset that is loaded from filename.
import weka.core.*;
import weka.filters.*;
import java.io.*;
...
SomeFilter filter = new SomeFilter();
// set necessary options for the filter
Instances data = new Instances(
new BufferedReader(
new FileReader(filename)));
Instances filteredData = Filter.useFilter(data, filter);
Implementation:
public static void main(String[] args) {
runFilter(new <Filtername>(), args);
}
Example implementation:
import weka.core.*;
import weka.core.Capabilities.*;
import weka.filters.*;
public class SimpleBatch extends SimpleBatchFilter {
public String globalInfo() {
return "A simple batch filter that adds an additional attribute 'bla' at the end containing the index of the processed instance.";
}
public Capabilities getCapabilities() {
Capabilities result = super.getCapabilities();
result.enableAllAttributes();
result.enableAllClasses();
result.enable(Capability.NO_CLASS); // filter doesn't need class to be set
return result;
}
protected Instances determineOutputFormat(Instances inputFormat) {
Instances result = new Instances(inputFormat, 0);
result.insertAttributeAt(new Attribute("bla"), result.numAttributes());
return result;
}
protected Instances process(Instances inst) {
Instances result = new Instances(determineOutputFormat(inst), 0);
for (int i = 0; i < inst.numInstances(); i++) {
double[] values = new double[result.numAttributes()];
for (int n = 0; n < inst.numAttributes(); n++)
values[n] = inst.instance(i).value(n);
values[values.length - 1] = i;
result.add(new DenseInstance(1, values));
}
return result;
}
public static void main(String[] args) {
runFilter(new SimpleBatch(), args);
}
}
Options:SimpleStreamFilter,
input(Instance),
batchFinished(),
Filter.m_FirstBatchDone,
Serialized Form| Constructor and Description |
|---|
SimpleBatchFilter() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
allowAccessToFullInputFormat()
Returns whether to allow the determineOutputFormat(Instances) method access
to the full dataset rather than just the header.
|
boolean |
batchFinished()
Signify that this batch of input to the filter is finished.
|
boolean |
input(Instance instance)
Input an instance for filtering.
|
boolean |
input(Instances instances)
A version of the input(Instance) method that enables input of a whole
dataset represented as an Instances object into the filter.
|
globalInfo, setInputFormatbatchFilterFile, debugTipText, doNotCheckCapabilitiesTipText, filterFile, getCapabilities, getCapabilities, getCopyOfInputFormat, getDebug, getDoNotCheckCapabilities, getOptions, getOutputFormat, getRevision, isFirstBatchDone, isNewBatch, isOutputFormatDefined, listOptions, main, makeCopies, makeCopy, mayRemoveInstanceAfterFirstBatchDone, numPendingOutput, output, outputPeek, postExecution, preExecution, run, runFilter, setDebug, setDoNotCheckCapabilities, setOptions, toString, useFilter, wekaStaticWrapperequals, getClass, hashCode, notify, notifyAll, wait, wait, waitmakeCopypublic boolean allowAccessToFullInputFormat()
public boolean input(Instance instance) throws java.lang.Exception
input in class Filterinstance - the input instancejava.lang.IllegalStateException - if no input structure has been definedjava.lang.Exception - if something goes wrongbatchFinished()public boolean input(Instances instances) throws java.lang.Exception
instances - the input instancesjava.lang.IllegalStateException - if no input structure has been definedjava.lang.Exception - if something goes wrongbatchFinished()public boolean batchFinished()
throws java.lang.Exception
batchFinished in class Filterjava.lang.IllegalStateException - if no input format has been set.java.lang.Exception - if something goes wrongFilter.m_NewBatch,
Filter.m_FirstBatchDone