MLPACK  1.0.7
kmeans.hpp
Go to the documentation of this file.
1 
22 #ifndef __MLPACK_METHODS_KMEANS_KMEANS_HPP
23 #define __MLPACK_METHODS_KMEANS_KMEANS_HPP
24 
25 #include <mlpack/core.hpp>
26 
28 #include "random_partition.hpp"
30 
32 
33 namespace mlpack {
34 namespace kmeans {
35 
72 template<typename MetricType = metric::SquaredEuclideanDistance,
73  typename InitialPartitionPolicy = RandomPartition,
74  typename EmptyClusterPolicy = MaxVarianceNewCluster>
75 class KMeans
76 {
77  public:
100  KMeans(const size_t maxIterations = 1000,
101  const double overclusteringFactor = 1.0,
102  const MetricType metric = MetricType(),
103  const InitialPartitionPolicy partitioner = InitialPartitionPolicy(),
104  const EmptyClusterPolicy emptyClusterAction = EmptyClusterPolicy());
105 
106 
120  template<typename MatType>
121  void Cluster(const MatType& data,
122  const size_t clusters,
123  arma::Col<size_t>& assignments,
124  const bool initialGuess = false) const;
125 
152  template<typename MatType>
153  void Cluster(const MatType& data,
154  const size_t clusters,
155  arma::Col<size_t>& assignments,
156  MatType& centroids,
157  const bool initialAssignmentGuess = false,
158  const bool initialCentroidGuess = false) const;
159 
165  template<typename MatType>
166  void FastCluster(MatType& data,
167  const size_t clusters,
168  arma::Col<size_t>& assignments) const;
169 
171  double OverclusteringFactor() const { return overclusteringFactor; }
174 
176  size_t MaxIterations() const { return maxIterations; }
178  size_t& MaxIterations() { return maxIterations; }
179 
181  const MetricType& Metric() const { return metric; }
183  MetricType& Metric() { return metric; }
184 
186  const InitialPartitionPolicy& Partitioner() const { return partitioner; }
188  InitialPartitionPolicy& Partitioner() { return partitioner; }
189 
191  const EmptyClusterPolicy& EmptyClusterAction() const
192  { return emptyClusterAction; }
194  EmptyClusterPolicy& EmptyClusterAction() { return emptyClusterAction; }
195 
196  private:
202  MetricType metric;
204  InitialPartitionPolicy partitioner;
206  EmptyClusterPolicy emptyClusterAction;
207 };
208 
209 }; // namespace kmeans
210 }; // namespace mlpack
211 
212 // Include implementation.
213 #include "kmeans_impl.hpp"
214 
215 #endif // __MLPACK_METHODS_MOG_KMEANS_HPP
InitialPartitionPolicy partitioner
Instantiated initial partitioning policy.
Definition: kmeans.hpp:204
double & OverclusteringFactor()
Set the overclustering factor. Must be greater than 1.
Definition: kmeans.hpp:173
double OverclusteringFactor() const
Return the overclustering factor.
Definition: kmeans.hpp:171
LMetric< 2, false > SquaredEuclideanDistance
Definition: lmetric.hpp:99
const InitialPartitionPolicy & Partitioner() const
Get the initial partitioning policy.
Definition: kmeans.hpp:186
size_t maxIterations
Maximum number of iterations before giving up.
Definition: kmeans.hpp:200
const EmptyClusterPolicy & EmptyClusterAction() const
Get the empty cluster policy.
Definition: kmeans.hpp:191
void Cluster(const MatType &data, const size_t clusters, arma::Col< size_t > &assignments, const bool initialGuess=false) const
Perform k-means clustering on the data, returning a list of cluster assignments.
EmptyClusterPolicy emptyClusterAction
Instantiated empty cluster policy.
Definition: kmeans.hpp:206
KMeans(const size_t maxIterations=1000, const double overclusteringFactor=1.0, const MetricType metric=MetricType(), const InitialPartitionPolicy partitioner=InitialPartitionPolicy(), const EmptyClusterPolicy emptyClusterAction=EmptyClusterPolicy())
Create a K-Means object and (optionally) set the parameters which K-Means will be run with...
void FastCluster(MatType &data, const size_t clusters, arma::Col< size_t > &assignments) const
An implementation of k-means using the Pelleg-Moore algorithm; this is known to not work – do not u...
EmptyClusterPolicy & EmptyClusterAction()
Modify the empty cluster policy.
Definition: kmeans.hpp:194
MetricType & Metric()
Modify the distance metric.
Definition: kmeans.hpp:183
size_t MaxIterations() const
Get the maximum number of iterations.
Definition: kmeans.hpp:176
size_t & MaxIterations()
Set the maximum number of iterations.
Definition: kmeans.hpp:178
MetricType metric
Instantiated distance metric.
Definition: kmeans.hpp:202
const MetricType & Metric() const
Get the distance metric.
Definition: kmeans.hpp:181
InitialPartitionPolicy & Partitioner()
Modify the initial partitioning policy.
Definition: kmeans.hpp:188
This class implements K-Means clustering.
Definition: kmeans.hpp:75
double overclusteringFactor
Factor controlling how many clusters are actually found.
Definition: kmeans.hpp:198