- java.lang.Object
-
- org.ojalgo.data.cluster.GeneralisedKMeans<T>
-
- All Implemented Interfaces:
ClusteringAlgorithm<T>
public final class GeneralisedKMeans<T> extends java.lang.Object implements ClusteringAlgorithm<T>
Contains the outline of the k-means algorithm, but designed for customisation.- Works with any type of data
- Allows for custom distance calculations
- Allows for custom centroid initialisation and updating
-
-
Field Summary
Fields Modifier and Type Field Description private static NumberContextACCURACYprivate java.util.function.Function<java.util.Collection<T>,java.util.List<T>>myCentroidInitialiserprivate java.util.function.Function<java.util.Collection<T>,T>myCentroidUpdaterprivate java.util.function.ToDoubleBiFunction<T,T>myDistanceCalculator
-
Constructor Summary
Constructors Constructor Description GeneralisedKMeans(java.util.function.Function<java.util.Collection<T>,java.util.List<T>> centroidInitialiser, java.util.function.Function<java.util.Collection<T>,T> centroidUpdater, java.util.function.ToDoubleBiFunction<T,T> distanceCalculator)You have to configure how distances are measured and how centroids are derived.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<java.util.Set<T>>cluster(java.util.Collection<T> input)Partitions the given items into clusters.
-
-
-
Field Detail
-
ACCURACY
private static final NumberContext ACCURACY
-
myCentroidUpdater
private final java.util.function.Function<java.util.Collection<T>,T> myCentroidUpdater
-
-
Constructor Detail
-
GeneralisedKMeans
public GeneralisedKMeans(java.util.function.Function<java.util.Collection<T>,java.util.List<T>> centroidInitialiser, java.util.function.Function<java.util.Collection<T>,T> centroidUpdater, java.util.function.ToDoubleBiFunction<T,T> distanceCalculator)
You have to configure how distances are measured and how centroids are derived.- Parameters:
centroidInitialiser- The initialisation function should return a list of k centroids. This function determines 'K'.centroidUpdater- The update function should return a new centroid based on a collection of points (the set of items in a cluster).distanceCalculator- A function that calculates the distance between two points.
-
-
Method Detail
-
cluster
public java.util.List<java.util.Set<T>> cluster(java.util.Collection<T> input)
Description copied from interface:ClusteringAlgorithmPartitions the given items into clusters.- Specified by:
clusterin interfaceClusteringAlgorithm<T>- Parameters:
input- The items to cluster; must not benull. May be empty.- Returns:
- A list of clusters; each element of the list is a
Set<T>representing one cluster and containing its members. Sets are non-empty and pairwise disjoint; ordering is unspecified.
-
-