MLPACK  1.0.4
nmf.hpp
Go to the documentation of this file.
00001 
00023 #ifndef __MLPACK_METHODS_NMF_NMF_HPP
00024 #define __MLPACK_METHODS_NMF_NMF_HPP
00025 
00026 #include <mlpack/core.hpp>
00027 #include "mult_dist_update_rules.hpp"
00028 #include "random_init.hpp"
00029 
00030 namespace mlpack {
00031 namespace nmf {
00032 
00081 template<typename InitializationRule = RandomInitialization,
00082          typename WUpdateRule = WMultiplicativeDistanceRule,
00083          typename HUpdateRule = HMultiplicativeDistanceRule>
00084 class NMF
00085 {
00086  public:
00106   NMF(const size_t maxIterations = 10000,
00107       const double minResidue = 1e-10,
00108       const InitializationRule initializeRule = InitializationRule(),
00109       const WUpdateRule wUpdate = WUpdateRule(),
00110       const HUpdateRule hUpdate = HUpdateRule());
00111 
00120   void Apply(const arma::mat& V, const size_t r, arma::mat& W, arma::mat& H)
00121       const;
00122 
00123  private:
00125   size_t maxIterations;
00127   double minResidue;
00129   InitializationRule initializeRule;
00131   WUpdateRule wUpdate;
00133   HUpdateRule hUpdate;
00134 
00135  public:
00137   size_t MaxIterations() const { return maxIterations; }
00139   size_t& MaxIterations() { return maxIterations; }
00141   double MinResidue() const { return minResidue; }
00143   double& MinResidue() { return minResidue; }
00145   const InitializationRule& InitializeRule() const { return initializeRule; }
00147   InitializationRule& InitializeRule() { return initializeRule; }
00149   const WUpdateRule& WUpdate() const { return wUpdate; }
00151   WUpdateRule& WUpdate() { return wUpdate; }
00153   const HUpdateRule& HUpdate() const { return hUpdate; }
00155   HUpdateRule& HUpdate() { return hUpdate; }
00156 
00157 }; // class NMF
00158 
00159 }; // namespace nmf
00160 }; // namespace mlpack
00161 
00162 // Include implementation.
00163 #include "nmf_impl.hpp"
00164 
00165 #endif