mlpack  1.0.12
kmeans.hpp
Go to the documentation of this file.
1 
14 #ifndef __MLPACK_METHODS_KMEANS_KMEANS_HPP
15 #define __MLPACK_METHODS_KMEANS_KMEANS_HPP
16 
17 #include <mlpack/core.hpp>
18 
20 #include "random_partition.hpp"
22 
24 
25 namespace mlpack {
26 namespace kmeans {
27 
64 template<typename MetricType = metric::SquaredEuclideanDistance,
65  typename InitialPartitionPolicy = RandomPartition,
66  typename EmptyClusterPolicy = MaxVarianceNewCluster>
67 class KMeans
68 {
69  public:
92  KMeans(const size_t maxIterations = 1000,
93  const double overclusteringFactor = 1.0,
94  const MetricType metric = MetricType(),
95  const InitialPartitionPolicy partitioner = InitialPartitionPolicy(),
96  const EmptyClusterPolicy emptyClusterAction = EmptyClusterPolicy());
97 
98 
112  template<typename MatType>
113  void Cluster(const MatType& data,
114  const size_t clusters,
115  arma::Col<size_t>& assignments,
116  const bool initialGuess = false) const;
117 
144  template<typename MatType>
145  void Cluster(const MatType& data,
146  const size_t clusters,
147  arma::Col<size_t>& assignments,
148  MatType& centroids,
149  const bool initialAssignmentGuess = false,
150  const bool initialCentroidGuess = false) const;
151 
153  double OverclusteringFactor() const { return overclusteringFactor; }
156 
158  size_t MaxIterations() const { return maxIterations; }
160  size_t& MaxIterations() { return maxIterations; }
161 
163  const MetricType& Metric() const { return metric; }
165  MetricType& Metric() { return metric; }
166 
168  const InitialPartitionPolicy& Partitioner() const { return partitioner; }
170  InitialPartitionPolicy& Partitioner() { return partitioner; }
171 
173  const EmptyClusterPolicy& EmptyClusterAction() const
174  { return emptyClusterAction; }
176  EmptyClusterPolicy& EmptyClusterAction() { return emptyClusterAction; }
177 
178  // Returns a string representation of this object.
179  std::string ToString() const;
180 
181  private:
187  MetricType metric;
189  InitialPartitionPolicy partitioner;
191  EmptyClusterPolicy emptyClusterAction;
192 };
193 
194 }; // namespace kmeans
195 }; // namespace mlpack
196 
197 // Include implementation.
198 #include "kmeans_impl.hpp"
199 
200 #endif // __MLPACK_METHODS_MOG_KMEANS_HPP
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: load.hpp:23
InitialPartitionPolicy partitioner
Instantiated initial partitioning policy.
Definition: kmeans.hpp:189
double & OverclusteringFactor()
Set the overclustering factor. Must be greater than 1.
Definition: kmeans.hpp:155
double OverclusteringFactor() const
Return the overclustering factor.
Definition: kmeans.hpp:153
LMetric< 2, false > SquaredEuclideanDistance
Definition: lmetric.hpp:92
const InitialPartitionPolicy & Partitioner() const
Get the initial partitioning policy.
Definition: kmeans.hpp:168
size_t maxIterations
Maximum number of iterations before giving up.
Definition: kmeans.hpp:185
const EmptyClusterPolicy & EmptyClusterAction() const
Get the empty cluster policy.
Definition: kmeans.hpp:173
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:191
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:176
MetricType & Metric()
Modify the distance metric.
Definition: kmeans.hpp:165
size_t MaxIterations() const
Get the maximum number of iterations.
Definition: kmeans.hpp:158
size_t & MaxIterations()
Set the maximum number of iterations.
Definition: kmeans.hpp:160
MetricType metric
Instantiated distance metric.
Definition: kmeans.hpp:187
const MetricType & Metric() const
Get the distance metric.
Definition: kmeans.hpp:163
InitialPartitionPolicy & Partitioner()
Modify the initial partitioning policy.
Definition: kmeans.hpp:170
This class implements K-Means clustering.
Definition: kmeans.hpp:67
double overclusteringFactor
Factor controlling how many clusters are actually found.
Definition: kmeans.hpp:183