All Downloads are FREE. Search and download functionalities are using the official Maven repository.

weka.clusterers.forOPTICSAndDBScan.Databases.Database Maven / Gradle / Ivy

Go to download

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.

There is a newer version: 3.8.6
Show newest version
/*
 *    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