weka.clusterers.forOPTICSAndDBScan.Databases.Database 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 2 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, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* Copyright (C) 2004
* & Matthias Schubert ([email protected])
* & Zhanna Melnikova-Albrecht ([email protected])
* & Rainer Holzmann ([email protected])
*/
package weka.clusterers.forOPTICSAndDBScan.Databases;
import weka.clusterers.forOPTICSAndDBScan.DataObjects.DataObject;
import weka.core.Instances;
import java.util.Iterator;
import java.util.List;
/**
*
* Database.java
* Authors: Rainer Holzmann, Zhanna Melnikova-Albrecht, Matthias Schubert
* Date: Aug 20, 2004
* Time: 1:03:43 PM
* $ Revision 1.4 $
*
*
* @author Matthias Schubert ([email protected])
* @author Zhanna Melnikova-Albrecht ([email protected])
* @author Rainer Holzmann ([email protected])
* @version $Revision: 1.2 $
*/
public interface Database {
// *****************************************************************************************************************
// methods
// *****************************************************************************************************************
/**
* Select a dataObject from the database
* @param key The key that is associated with the dataObject
* @return dataObject
*/
DataObject getDataObject(String key);
/**
* Returns the size of the database (the number of dataObjects in the database)
* @return size
*/
int size();
/**
* Returns an iterator over all the keys
* @return iterator
*/
Iterator keyIterator();
/**
* Returns an iterator over all the dataObjects in the database
* @return iterator
*/
Iterator dataObjectIterator();
/**
* Tests if the database contains the dataObject_Query
* @param dataObject_Query The query-object
* @return true if the database contains dataObject_Query, else false
*/
boolean contains(DataObject dataObject_Query);
/**
* Inserts a new dataObject into the database
* @param dataObject
*/
void insert(DataObject dataObject);
/**
* Returns the original instances delivered from WEKA
* @return instances
*/
Instances getInstances();
/**
* Sets the minimum and maximum values for each attribute in different arrays
* by walking through every DataObject of the database
*/
void setMinMaxValues();
/**
* Returns the array of minimum-values for each attribute
* @return attributeMinValues
*/
double[] getAttributeMinValues();
/**
* Returns the array of maximum-values for each attribute
* @return attributeMaxValues
*/
double[] getAttributeMaxValues();
/**
* Performs an epsilon range query for this dataObject
* @param epsilon Specifies the range for the query
* @param queryDataObject The dataObject that is used as query-object for epsilon range query
* @return List with all the DataObjects that are within the specified range
*/
List epsilonRangeQuery(double epsilon, DataObject queryDataObject);
/**
* Emits the k next-neighbours and performs an epsilon-range-query at the parallel.
* The returned list contains two elements:
* At index=0 --> list with all k next-neighbours;
* At index=1 --> list with all dataObjects within epsilon;
* @param k number of next neighbours
* @param epsilon Specifies the range for the query
* @param dataObject the start object
* @return list with the k-next neighbours (PriorityQueueElements) and a list
* with candidates from the epsilon-range-query (EpsilonRange_ListElements)
*/
List k_nextNeighbourQuery(int k, double epsilon, DataObject dataObject);
/**
* Calculates the coreDistance for the specified DataObject.
* The returned list contains three elements:
* At index=0 --> list with all k next-neighbours;
* At index=1 --> list with all dataObjects within epsilon;
* At index=2 --> coreDistance as Double-value
* @param minPoints minPoints-many neighbours within epsilon must be found to have a non-undefined coreDistance
* @param epsilon Specifies the range for the query
* @param dataObject Calculate coreDistance for this dataObject
* @return list with the k-next neighbours (PriorityQueueElements) and a list
* with candidates from the epsilon-range-query (EpsilonRange_ListElements) and
* the double-value for the calculated coreDistance
*/
List coreDistance(int minPoints, double epsilon, DataObject dataObject);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy