mlpack 3.4.2
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
18namespace mlpack {
19namespace 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 unsigned int /* version */) { }
65};
66
67} // namespace kmeans
68} // namespace mlpack
69
70#endif
Policy which allows K-Means to create empty clusters without any error being reported.
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...
AllowEmptyClusters()
Default constructor required by EmptyClusterPolicy policy.
void serialize(Archive &, const unsigned int)
Serialize the empty cluster policy (nothing to do).
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.
#define force_inline
Definition: prereqs.hpp:55