MLPACK  1.0.8
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