Class OPTICS

All Implemented Interfaces:
Serializable, Cloneable, Clusterer, CapabilitiesHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler

public class OPTICS extends AbstractClusterer implements OptionHandler, TechnicalInformationHandler
Basic implementation of OPTICS clustering algorithm that should *not* be used as a reference for runtime benchmarks: more sophisticated implementations exist! Clustering of new instances is not supported. More info:

Mihael Ankerst, Markus M. Breunig, Hans-Peter Kriegel, Joerg Sander: OPTICS: Ordering Points To Identify the Clustering Structure. In: ACM SIGMOD International Conference on Management of Data, 49-60, 1999.

BibTeX:

 @inproceedings{Ankerst1999,
    author = {Mihael Ankerst and Markus M. Breunig and Hans-Peter Kriegel and Joerg Sander},
    booktitle = {ACM SIGMOD International Conference on Management of Data},
    pages = {49-60},
    publisher = {ACM Press},
    title = {OPTICS: Ordering Points To Identify the Clustering Structure},
    year = {1999}
 }
 

Valid options are:

 -E <double>
  epsilon (default = 0.9)
 -M <int>
  minPoints (default = 6)
 -I <String>
  index (database) used for OPTICS (default = weka.clusterers.forOPTICSAndDBScan.Databases.SequentialDatabase)
 -D <String>
  distance-type (default = weka.clusterers.forOPTICSAndDBScan.DataObjects.EuclideanDataObject)
 -F
  write results to OPTICS_#TimeStamp#.TXT - File
 -no-gui
  suppress the display of the GUI after building the clusterer
 -db-output <file>
  The file to save the generated database to. If a directory
  is provided, the database doesn't get saved.
  The generated file can be viewed with the OPTICS Visualizer:
    java weka.clusterers.forOPTICSAndDBScan.OPTICS_GUI.OPTICS_Visualizer [file.ser]
  (default: .)
Version:
$Revision: 9434 $
Author:
Matthias Schubert (schubert@dbs.ifi.lmu.de), Zhanna Melnikova-Albrecht (melnikov@cip.ifi.lmu.de), Rainer Holzmann (holzmann@cip.ifi.lmu.de)
See Also:
  • Constructor Details

    • OPTICS

      public OPTICS()
  • Method Details

    • getCapabilities

      public Capabilities getCapabilities()
      Returns default capabilities of the clusterer.
      Specified by:
      getCapabilities in interface CapabilitiesHandler
      Specified by:
      getCapabilities in interface Clusterer
      Overrides:
      getCapabilities in class AbstractClusterer
      Returns:
      the capabilities of this clusterer
      See Also:
    • buildClusterer

      public void buildClusterer(Instances instances) throws Exception
      Generate Clustering via OPTICS
      Specified by:
      buildClusterer in interface Clusterer
      Specified by:
      buildClusterer in class AbstractClusterer
      Parameters:
      instances - The instances that need to be clustered
      Throws:
      Exception - If clustering was not successful
    • clusterInstance

      public int clusterInstance(Instance instance) throws Exception
      Classifies a given instance.
      Specified by:
      clusterInstance in interface Clusterer
      Overrides:
      clusterInstance in class AbstractClusterer
      Parameters:
      instance - The instance to be assigned to a cluster
      Returns:
      int The number of the assigned cluster as an integer
      Throws:
      Exception - If instance could not be clustered successfully
    • numberOfClusters

      public int numberOfClusters() throws Exception
      Returns the number of clusters.
      Specified by:
      numberOfClusters in interface Clusterer
      Specified by:
      numberOfClusters in class AbstractClusterer
      Returns:
      int The number of clusters generated for a training dataset.
      Throws:
      Exception - If number of clusters could not be returned successfully
    • listOptions

      public Enumeration listOptions()
      Returns an enumeration of all the available options.
      Specified by:
      listOptions in interface OptionHandler
      Returns:
      Enumeration An enumeration of all available options.
    • setOptions

      public void setOptions(String[] options) throws Exception
      Sets the OptionHandler's options using the given list. All options will be set (or reset) during this call (i.e. incremental setting of options is not possible).

      Valid options are:

       -E <double>
        epsilon (default = 0.9)
       -M <int>
        minPoints (default = 6)
       -I <String>
        index (database) used for OPTICS (default = weka.clusterers.forOPTICSAndDBScan.Databases.SequentialDatabase)
       -D <String>
        distance-type (default = weka.clusterers.forOPTICSAndDBScan.DataObjects.EuclideanDataObject)
       -F
        write results to OPTICS_#TimeStamp#.TXT - File
       -no-gui
        suppress the display of the GUI after building the clusterer
       -db-output <file>
        The file to save the generated database to. If a directory
        is provided, the database doesn't get saved.
        The generated file can be viewed with the OPTICS Visualizer:
          java weka.clusterers.forOPTICSAndDBScan.OPTICS_GUI.OPTICS_Visualizer [file.ser]
        (default: .)
      Specified by:
      setOptions in interface OptionHandler
      Parameters:
      options - The list of options as an array of strings
      Throws:
      Exception - If an option is not supported
    • getOptions

      public String[] getOptions()
      Gets the current option settings for the OptionHandler.
      Specified by:
      getOptions in interface OptionHandler
      Returns:
      String[] The list of current option settings as an array of strings
    • databaseForName

      public Database databaseForName(String database_Type, Instances instances)
      Returns a new Class-Instance of the specified database
      Parameters:
      database_Type - String of the specified database
      instances - Instances that were delivered from WEKA
      Returns:
      Database New constructed Database
    • dataObjectForName

      public DataObject dataObjectForName(String database_distanceType, Instance instance, String key, Database database)
      Returns a new Class-Instance of the specified database
      Parameters:
      database_distanceType - String of the specified distance-type
      instance - The original instance that needs to hold by this DataObject
      key - Key for this DataObject
      database - Link to the database
      Returns:
      DataObject New constructed DataObject
    • setMinPoints

      public void setMinPoints(int minPoints)
      Sets a new value for minPoints
      Parameters:
      minPoints - MinPoints
    • setEpsilon

      public void setEpsilon(double epsilon)
      Sets a new value for epsilon
      Parameters:
      epsilon - Epsilon
    • getEpsilon

      public double getEpsilon()
      Returns the value of epsilon
      Returns:
      double Epsilon
    • getMinPoints

      public int getMinPoints()
      Returns the value of minPoints
      Returns:
      int MinPoints
    • getDatabase_distanceType

      public String getDatabase_distanceType()
      Returns the distance-type
      Returns:
      String Distance-type
    • getDatabase_Type

      public String getDatabase_Type()
      Returns the type of the used index (database)
      Returns:
      String Index-type
    • setDatabase_distanceType

      public void setDatabase_distanceType(String database_distanceType)
      Sets a new distance-type
      Parameters:
      database_distanceType - The new distance-type
    • setDatabase_Type

      public void setDatabase_Type(String database_Type)
      Sets a new database-type
      Parameters:
      database_Type - The new database-type
    • getWriteOPTICSresults

      public boolean getWriteOPTICSresults()
      Returns the flag for writing actions
      Returns:
      writeOPTICSresults (flag)
    • setWriteOPTICSresults

      public void setWriteOPTICSresults(boolean writeOPTICSresults)
      Sets the flag for writing actions
      Parameters:
      writeOPTICSresults - Results are written to a file if the flag is set
    • getShowGUI

      public boolean getShowGUI()
      Returns the flag for showing the OPTICS visualizer GUI.
      Returns:
      true if the GUI is displayed
    • setShowGUI

      public void setShowGUI(boolean value)
      Sets the flag for displaying the GUI.
      Parameters:
      value - if true, then the OPTICS visualizer GUI will be displayed after building the clusterer
    • getDatabaseOutput

      public File getDatabaseOutput()
      Returns the file to save the database to - if directory, database is not saved.
      Returns:
      the file to save the database to a directory if saving is ignored
    • setDatabaseOutput

      public void setDatabaseOutput(File value)
      Sets the the file to save the generated database to. If a directory is provided, the datbase doesn't get saved.
      Parameters:
      value - the file to save the database to or a directory if saving is to be ignored
    • getResultVector

      public FastVector getResultVector()
      Returns the resultVector
      Returns:
      resultVector
    • epsilonTipText

      public String epsilonTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • minPointsTipText

      public String minPointsTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • database_TypeTipText

      public String database_TypeTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • database_distanceTypeTipText

      public String database_distanceTypeTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • writeOPTICSresultsTipText

      public String writeOPTICSresultsTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • showGUITipText

      public String showGUITipText()
      Returns the tip text for this property.
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • databaseOutputTipText

      public String databaseOutputTipText()
      Returns the tip text for this property.
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • globalInfo

      public String globalInfo()
      Returns a string describing this DataMining-Algorithm
      Returns:
      String Information for the gui-explorer
    • getTechnicalInformation

      public TechnicalInformation getTechnicalInformation()
      Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
      Specified by:
      getTechnicalInformation in interface TechnicalInformationHandler
      Returns:
      the technical information about this class
    • getSERObject

      public SERObject getSERObject()
      Returns the internal database
      Returns:
      the internal database
    • toString

      public String toString()
      Returns a description of the clusterer
      Overrides:
      toString in class Object
      Returns:
      the clusterer as string
    • getRevision

      public String getRevision()
      Returns the revision string.
      Specified by:
      getRevision in interface RevisionHandler
      Overrides:
      getRevision in class AbstractClusterer
      Returns:
      the revision
    • main

      public static void main(String[] args)
      Main Method for testing OPTICS
      Parameters:
      args - Valid parameters are: 'E' epsilon (default = 0.9); 'M' minPoints (default = 6); 'I' index-type (default = weka.clusterers.forOPTICSAndDBScan.Databases.SequentialDatabase); 'D' distance-type (default = weka.clusterers.forOPTICSAndDBScan.DataObjects.EuclideanDataObject); 'F' write results to OPTICS_#TimeStamp#.TXT - File