MLPACK  1.0.8
nmf.hpp
Go to the documentation of this file.
1 
23 #ifndef __MLPACK_METHODS_NMF_NMF_HPP
24 #define __MLPACK_METHODS_NMF_NMF_HPP
25 
26 #include <mlpack/core.hpp>
28 #include "random_init.hpp"
29 
30 namespace mlpack {
31 namespace nmf {
32 
83 template<typename InitializationRule = RandomInitialization,
84  typename WUpdateRule = WMultiplicativeDistanceRule,
85  typename HUpdateRule = HMultiplicativeDistanceRule>
86 class NMF
87 {
88  public:
108  NMF(const size_t maxIterations = 10000,
109  const double minResidue = 1e-10,
110  const InitializationRule initializeRule = InitializationRule(),
111  const WUpdateRule wUpdate = WUpdateRule(),
112  const HUpdateRule hUpdate = HUpdateRule());
113 
122  template<typename MatType>
123  void Apply(const MatType& V,
124  const size_t r,
125  arma::mat& W,
126  arma::mat& H) const;
127 
128  private:
132  double minResidue;
134  InitializationRule initializeRule;
136  WUpdateRule wUpdate;
138  HUpdateRule hUpdate;
139 
140  public:
142  size_t MaxIterations() const { return maxIterations; }
144  size_t& MaxIterations() { return maxIterations; }
146  double MinResidue() const { return minResidue; }
148  double& MinResidue() { return minResidue; }
150  const InitializationRule& InitializeRule() const { return initializeRule; }
152  InitializationRule& InitializeRule() { return initializeRule; }
154  const WUpdateRule& WUpdate() const { return wUpdate; }
156  WUpdateRule& WUpdate() { return wUpdate; }
158  const HUpdateRule& HUpdate() const { return hUpdate; }
160  HUpdateRule& HUpdate() { return hUpdate; }
161 
162 }; // class NMF
163 
164 }; // namespace nmf
165 }; // namespace mlpack
166 
167 // Include implementation.
168 #include "nmf_impl.hpp"
169 
170 #endif