Package elki.clustering.trivial
Class ByLabelClustering
- java.lang.Object
-
- elki.clustering.trivial.ByLabelClustering
-
- All Implemented Interfaces:
Algorithm
,ClusteringAlgorithm<Clustering<Model>>
- Direct Known Subclasses:
ByLabelOrAllInOneClustering
@Title("Clustering by label") @Description("Cluster points by a (pre-assigned!) label. For comparing results with a reference clustering.") @Priority(-100) public class ByLabelClustering extends java.lang.Object implements ClusteringAlgorithm<Clustering<Model>>
Pseudo clustering using labels.This "algorithm" puts elements into the same cluster when they agree in their labels. I.e. it just uses a predefined clustering, and is mostly useful for testing and evaluation (e.g., comparing the result of a real algorithm to a reference result / golden standard).
If an assignment of an object to multiple clusters is desired, the labels of the object indicating the clusters need to be separated by blanks and the flag
ByLabelClustering.Par.MULTIPLE_ID
needs to be set.TODO: handling of data sets with no labels?
- Since:
- 0.2
- Author:
- Erich Schubert
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ByLabelClustering.Par
Parameterization class.-
Nested classes/interfaces inherited from interface elki.Algorithm
Algorithm.Utils
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
multiple
Allow multiple cluster assignment.private java.util.regex.Pattern
noisepattern
Pattern to recognize noise clusters by.
-
Constructor Summary
Constructors Constructor Description ByLabelClustering()
Constructor without parametersByLabelClustering(boolean multiple, java.util.regex.Pattern noisepattern)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
assign(java.util.HashMap<java.lang.String,DBIDs> labelMap, java.lang.String label, DBIDRef id)
Assigns the specified id to the labelMap according to its labelClustering<Model>
autorun(Database database)
Try to auto-run the algorithm on a database by calling a method calledrun
, with an optionalDatabase
first, and with data relations as specified byAlgorithm.getInputTypeRestriction()
.TypeInformation[]
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.private java.util.HashMap<java.lang.String,DBIDs>
multipleAssignment(Relation<?> data)
Assigns the objects of the database to multiple clusters according to their labels.Clustering<Model>
run(Relation<?> relation)
Run the actual clustering algorithm.private java.util.HashMap<java.lang.String,DBIDs>
singleAssignment(Relation<?> data)
Assigns the objects of the database to single clusters according to their labels.
-
-
-
Method Detail
-
getInputTypeRestriction
public TypeInformation[] getInputTypeRestriction()
Description copied from interface:Algorithm
Get the input type restriction used for negotiating the data query.- Specified by:
getInputTypeRestriction
in interfaceAlgorithm
- Returns:
- Type restriction
-
autorun
public Clustering<Model> autorun(Database database)
Description copied from interface:Algorithm
Try to auto-run the algorithm on a database by calling a method calledrun
, with an optionalDatabase
first, and with data relations as specified byAlgorithm.getInputTypeRestriction()
.- Specified by:
autorun
in interfaceAlgorithm
- Specified by:
autorun
in interfaceClusteringAlgorithm<Clustering<Model>>
- Parameters:
database
- the database to run the algorithm on- Returns:
- the Result computed by this algorithm
-
run
public Clustering<Model> run(Relation<?> relation)
Run the actual clustering algorithm.- Parameters:
relation
- The data input we use
-
singleAssignment
private java.util.HashMap<java.lang.String,DBIDs> singleAssignment(Relation<?> data)
Assigns the objects of the database to single clusters according to their labels.- Parameters:
data
- the database storing the objects- Returns:
- a mapping of labels to ids
-
multipleAssignment
private java.util.HashMap<java.lang.String,DBIDs> multipleAssignment(Relation<?> data)
Assigns the objects of the database to multiple clusters according to their labels.- Parameters:
data
- the database storing the objects- Returns:
- a mapping of labels to ids
-
assign
private void assign(java.util.HashMap<java.lang.String,DBIDs> labelMap, java.lang.String label, DBIDRef id)
Assigns the specified id to the labelMap according to its label- Parameters:
labelMap
- the mapping of label to idslabel
- the label of the object to be assignedid
- the id of the object to be assigned
-
-