MLPACK  1.0.4
radical.hpp
Go to the documentation of this file.
00001 
00024 #ifndef __MLPACK_METHODS_RADICAL_RADICAL_HPP
00025 #define __MLPACK_METHODS_RADICAL_RADICAL_HPP
00026 
00027 #include <mlpack/core.hpp>
00028 
00029 namespace mlpack {
00030 namespace radical {
00031 
00053 class Radical
00054 {
00055  public:
00069   Radical(const double noiseStdDev = 0.175,
00070           const size_t replicates = 30,
00071           const size_t angles = 150,
00072           const size_t sweeps = 0,
00073           const size_t m = 0);
00074 
00084   void DoRadical(const arma::mat& matX, arma::mat& matY, arma::mat& matW);
00085 
00092   double Vasicek(arma::vec& x) const;
00093 
00099   void CopyAndPerturb(arma::mat& xNew, const arma::mat& x) const;
00100 
00102   double DoRadical2D(const arma::mat& matX);
00103 
00105   double NoiseStdDev() const { return noiseStdDev; }
00107   double& NoiseStdDev() { return noiseStdDev; }
00108 
00110   size_t Replicates() const { return replicates; }
00112   size_t& Replicates() { return replicates; }
00113 
00115   size_t Angles() const { return angles; }
00117   size_t& Angles() { return angles; }
00118 
00120   size_t Sweeps() const { return sweeps; }
00122   size_t& Sweeps() { return sweeps; }
00123 
00124  private:
00127   double noiseStdDev;
00128 
00130   size_t replicates;
00131 
00133   size_t angles;
00134 
00137   size_t sweeps;
00138 
00140   size_t m;
00141 
00143   arma::mat perturbed;
00145   arma::mat candidate;
00146 };
00147 
00148 void WhitenFeatureMajorMatrix(const arma::mat& matX,
00149                               arma::mat& matXWhitened,
00150                               arma::mat& matWhitening);
00151 
00152 }; // namespace radical
00153 }; // namespace mlpack
00154 
00155 #endif