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 
00083 template<typename InitializationRule = RandomInitialization,
00084          typename WUpdateRule = WMultiplicativeDistanceRule,
00085          typename HUpdateRule = HMultiplicativeDistanceRule>
00086 class NMF
00087 {
00088  public:
00108   NMF(const size_t maxIterations = 10000,
00109       const double minResidue = 1e-10,
00110       const InitializationRule initializeRule = InitializationRule(),
00111       const WUpdateRule wUpdate = WUpdateRule(),
00112       const HUpdateRule hUpdate = HUpdateRule());
00113 
00122   template<typename MatType>
00123   void Apply(const MatType& V,
00124              const size_t r,
00125              arma::mat& W,
00126              arma::mat& H) const;
00127 
00128  private:
00130   size_t maxIterations;
00132   double minResidue;
00134   InitializationRule initializeRule;
00136   WUpdateRule wUpdate;
00138   HUpdateRule hUpdate;
00139 
00140  public:
00142   size_t MaxIterations() const { return maxIterations; }
00144   size_t& MaxIterations() { return maxIterations; }
00146   double MinResidue() const { return minResidue; }
00148   double& MinResidue() { return minResidue; }
00150   const InitializationRule& InitializeRule() const { return initializeRule; }
00152   InitializationRule& InitializeRule() { return initializeRule; }
00154   const WUpdateRule& WUpdate() const { return wUpdate; }
00156   WUpdateRule& WUpdate() { return wUpdate; }
00158   const HUpdateRule& HUpdate() const { return hUpdate; }
00160   HUpdateRule& HUpdate() { return hUpdate; }
00161 
00162 }; // class NMF
00163 
00164 }; // namespace nmf
00165 }; // namespace mlpack
00166 
00167 // Include implementation.
00168 #include "nmf_impl.hpp"
00169 
00170 #endif

Generated on 29 Sep 2016 for MLPACK by  doxygen 1.6.1