MLPACK  1.0.10
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 
161  double OverclusteringFactor() const { return overclusteringFactor; }
164 
166  size_t MaxIterations() const { return maxIterations; }
168  size_t& MaxIterations() { return maxIterations; }
169 
171  const MetricType& Metric() const { return metric; }
173  MetricType& Metric() { return metric; }
174 
176  const InitialPartitionPolicy& Partitioner() const { return partitioner; }
178  InitialPartitionPolicy& Partitioner() { return partitioner; }
179 
181  const EmptyClusterPolicy& EmptyClusterAction() const
182  { return emptyClusterAction; }
184  EmptyClusterPolicy& EmptyClusterAction() { return emptyClusterAction; }
185 
186  // Returns a string representation of this object.
187  std::string ToString() const;
188 
189  private:
195  MetricType metric;
197  InitialPartitionPolicy partitioner;
199  EmptyClusterPolicy emptyClusterAction;
200 };
201 
202 }; // namespace kmeans
203 }; // namespace mlpack
204 
205 // Include implementation.
206 #include "kmeans_impl.hpp"
207 
208 #endif // __MLPACK_METHODS_MOG_KMEANS_HPP
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: load.hpp:31
InitialPartitionPolicy partitioner
Instantiated initial partitioning policy.
Definition: kmeans.hpp:197
double & OverclusteringFactor()
Set the overclustering factor. Must be greater than 1.
Definition: kmeans.hpp:163
double OverclusteringFactor() const
Return the overclustering factor.
Definition: kmeans.hpp:161
LMetric< 2, false > SquaredEuclideanDistance
Definition: lmetric.hpp:100
const InitialPartitionPolicy & Partitioner() const
Get the initial partitioning policy.
Definition: kmeans.hpp:176
size_t maxIterations
Maximum number of iterations before giving up.
Definition: kmeans.hpp:193
const EmptyClusterPolicy & EmptyClusterAction() const
Get the empty cluster policy.
Definition: kmeans.hpp:181
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:199
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...
std::string ToString() const
EmptyClusterPolicy & EmptyClusterAction()
Modify the empty cluster policy.
Definition: kmeans.hpp:184
MetricType & Metric()
Modify the distance metric.
Definition: kmeans.hpp:173
size_t MaxIterations() const
Get the maximum number of iterations.
Definition: kmeans.hpp:166
size_t & MaxIterations()
Set the maximum number of iterations.
Definition: kmeans.hpp:168
MetricType metric
Instantiated distance metric.
Definition: kmeans.hpp:195
const MetricType & Metric() const
Get the distance metric.
Definition: kmeans.hpp:171
InitialPartitionPolicy & Partitioner()
Modify the initial partitioning policy.
Definition: kmeans.hpp:178
This class implements K-Means clustering.
Definition: kmeans.hpp:75
double overclusteringFactor
Factor controlling how many clusters are actually found.
Definition: kmeans.hpp:191