weka.clusterers.FilteredClusterer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of weka-stable Show documentation
Show all versions of weka-stable Show documentation
The Waikato Environment for Knowledge Analysis (WEKA), a machine
learning workbench. This is the stable version. Apart from bugfixes, this version
does not receive any other updates.
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/*
* FilteredClusterer.java
* Copyright (C) 2006-2012 University of Waikato, Hamilton, New Zealand
*
*/
package weka.clusterers;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Vector;
import weka.core.Capabilities;
import weka.core.Capabilities.Capability;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.Option;
import weka.core.OptionHandler;
import weka.core.RevisionUtils;
import weka.core.Utils;
import weka.filters.Filter;
import weka.filters.SupervisedFilter;
/**
* Class for running an arbitrary clusterer on data
* that has been passed through an arbitrary filter. Like the clusterer, the
* structure of the filter is based exclusively on the training data and test
* instances will be processed by the filter without changing their structure.
*
*
*
* Valid options are:
*
*
*
* -F <filter specification>
* Full class name of filter to use, followed
* by filter options.
* eg: "weka.filters.unsupervised.attribute.Remove -V -R 1,2"
* (default: weka.filters.AllFilter)
*
*
*
* -W
* Full name of base clusterer.
* (default: weka.clusterers.SimpleKMeans)
*
*
*
* Options specific to clusterer weka.clusterers.SimpleKMeans:
*
*
*
* -N <num>
* number of clusters.
* (default 2).
*
*
*
* -V
* Display std. deviations for centroids.
*
*
*
* -M
* Replace missing values with mean/mode.
*
*
*
* -S <num>
* Random number seed.
* (default 10)
*
*
*
*
* Based on code from the FilteredClassifier by Len Trigg.
*
* @author Len Trigg ([email protected])
* @author FracPete (fracpete at waikato dot ac dot nz)
* @version $Revision: 10203 $
* @see weka.classifiers.meta.FilteredClassifier
*/
public class FilteredClusterer extends SingleClustererEnhancer {
/** for serialization. */
private static final long serialVersionUID = 1420005943163412943L;
/** The filter. */
protected Filter m_Filter;
/** The instance structure of the filtered instances. */
protected Instances m_FilteredInstances;
/**
* Default constructor.
*/
public FilteredClusterer() {
m_Clusterer = new SimpleKMeans();
m_Filter = new weka.filters.AllFilter();
}
/**
* Returns a string describing this clusterer.
*
* @return a description of the clusterer suitable for displaying in the
* explorer/experimenter gui
*/
public String globalInfo() {
return "Class for running an arbitrary clusterer on data that has been passed "
+ "through an arbitrary filter. Like the clusterer, the structure of the filter "
+ "is based exclusively on the training data and test instances will be processed "
+ "by the filter without changing their structure.";
}
/**
* String describing default filter.
*
* @return the default filter classname
*/
protected String defaultFilterString() {
return weka.filters.AllFilter.class.getName();
}
/**
* Returns an enumeration describing the available options.
*
* @return an enumeration of all the available options.
*/
@Override
public Enumeration