allow_empty_clusters.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_METHODS_KMEANS_ALLOW_EMPTY_CLUSTERS_HPP
14 #define MLPACK_METHODS_KMEANS_ALLOW_EMPTY_CLUSTERS_HPP
15 
16 #include <mlpack/prereqs.hpp>
17 
18 namespace mlpack {
19 namespace kmeans {
20 
26 {
27  public:
30 
48  template<typename MetricType, typename MatType>
49  static inline force_inline void EmptyCluster(
50  const MatType& /* data */,
51  const size_t emptyCluster,
52  const arma::mat& oldCentroids,
53  arma::mat& newCentroids,
54  arma::Col<size_t>& /* clusterCounts */,
55  MetricType& /* metric */,
56  const size_t /* iteration */)
57  {
58  // Take the last iteration's centroid.
59  newCentroids.col(emptyCluster) = oldCentroids.col(emptyCluster);
60  }
61 
63  template<typename Archive>
64  void serialize(Archive& /* ar */, const uint32_t /* version */) { }
65 };
66 
67 } // namespace kmeans
68 } // namespace mlpack
69 
70 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
The core includes that mlpack expects; standard C++ includes and Armadillo.
AllowEmptyClusters()
Default constructor required by EmptyClusterPolicy policy.
Policy which allows K-Means to create empty clusters without any error being reported.
#define force_inline
Definition: prereqs.hpp:55
static force_inline void EmptyCluster(const MatType &, const size_t emptyCluster, const arma::mat &oldCentroids, arma::mat &newCentroids, arma::Col< size_t > &, MetricType &, const size_t)
This function allows empty clusters to persist simply by leaving the empty cluster in its last positi...
void serialize(Archive &, const uint32_t)
Serialize the empty cluster policy (nothing to do).