[mlpack-svn] r10673 - mlpack/trunk/src/mlpack/methods/radical

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Dec 8 16:30:14 EST 2011


Author: niche
Date: 2011-12-08 16:30:14 -0500 (Thu, 08 Dec 2011)
New Revision: 10673

Modified:
   mlpack/trunk/src/mlpack/methods/radical/radical.cpp
   mlpack/trunk/src/mlpack/methods/radical/radical.hpp
   mlpack/trunk/src/mlpack/methods/radical/radical_main.cpp
Log:
put Radical in namespace mlpack::radical and moved WhitenFeatureMajorMatrix out of Radical class but into mlpack::radical namespace

Modified: mlpack/trunk/src/mlpack/methods/radical/radical.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/radical/radical.cpp	2011-12-08 21:10:03 UTC (rev 10672)
+++ mlpack/trunk/src/mlpack/methods/radical/radical.cpp	2011-12-08 21:30:14 UTC (rev 10673)
@@ -7,17 +7,20 @@
 
 #include "radical.hpp"
 
-//using namespace arma;
 using namespace std;
+using namespace arma;
 
+namespace mlpack {
+namespace radical {
 
+
 Radical::Radical(double noiseStdDev, size_t nReplicates, size_t nAngles, 
 		 size_t nSweeps) :
   noiseStdDev(noiseStdDev),
   nReplicates(nReplicates),
   nAngles(nAngles),
   nSweeps(nSweeps),
-  m(-1)
+  m(0)
 {
   // nothing to do here
 }
@@ -34,34 +37,34 @@
 }
   
 
-void Radical::CopyAndPerturb(arma::mat& matXNew, const arma::mat& matX) {
-  matXNew = arma::repmat(matX, nReplicates, 1);
-  matXNew = matXNew + noiseStdDev * arma::randn(matXNew.n_rows, matXNew.n_cols);
+void Radical::CopyAndPerturb(mat& matXNew, const mat& matX) {
+  matXNew = repmat(matX, nReplicates, 1);
+  matXNew = matXNew + noiseStdDev * randn(matXNew.n_rows, matXNew.n_cols);
 }
 
 
-double Radical::Vasicek(const arma::vec& z) {
-  arma::vec v = sort(z);
+double Radical::Vasicek(const vec& z) {
+  vec v = sort(z);
   size_t nPoints = v.n_elem;
-  arma::vec logs = arma::log(v.subvec(m, nPoints - 1) - v.subvec(0, nPoints - 1 - m));
-  return (double) arma::sum(logs);
+  vec logs = log(v.subvec(m, nPoints - 1) - v.subvec(0, nPoints - 1 - m));
+  return (double) sum(logs);
 }
 
 
-double Radical::DoRadical2D(const arma::mat& matX) {
-  arma::mat matXMod;
+double Radical::DoRadical2D(const mat& matX) {
+  mat matXMod;
   CopyAndPerturb(matXMod, matX);
 
   double theta;
   double value;
-  arma::mat matJacobi(2,2);
-  arma::mat candidateY;
+  mat matJacobi(2,2);
+  mat candidateY;
 
   double thetaOpt = 0;
   double valueOpt = 1e99;
   
   for(size_t i = 0; i < nAngles; i++) {
-    theta = ((double) i) / ((double) nAngles) * arma::math::pi() / 2;
+    theta = ((double) i) / ((double) nAngles) * math::pi() / 2;
     matJacobi(0,0) = cos(theta);
     matJacobi(0,1) = sin(theta);
     matJacobi(1,0) = -sin(theta);
@@ -79,7 +82,7 @@
 }
 
 
-void Radical::DoRadical(const arma::mat& matX, arma::mat& matY, arma::mat& matW) {
+void Radical::DoRadical(const mat& matX, mat& matY, mat& matW) {
   
   // matX is nPoints by nDims (although less intuitive than columns being points,
   // and although this is the transpose of the ICA literature, this choice is 
@@ -93,8 +96,8 @@
   const size_t nDims = matX.n_cols;
   const size_t nPoints = matX.n_rows;
   
-  arma::mat matXWhitened;
-  arma::mat matWhitening;
+  mat matXWhitened;
+  mat matWhitening;
   WhitenFeatureMajorMatrix(matX, matXWhitened, matWhitening);
   
   // in the RADICAL code, they do not copy and perturb initially, although the
@@ -103,18 +106,18 @@
   //GeneratePerturbedX(X, X);
   
   matY = matXWhitened;
-  matW = arma::eye(nDims, nDims);
+  matW = eye(nDims, nDims);
   
-  arma::mat matYSubspace(nPoints, 2);
+  mat matYSubspace(nPoints, 2);
   
   for(size_t sweepNum = 0; sweepNum < nSweeps; sweepNum++) {
     for(size_t i = 0; i < nDims - 1; i++) {
       for(size_t j = i + 1; j < nDims; j++) {
 	matYSubspace.col(0) = matY.col(i);
 	matYSubspace.col(1) = matY.col(j);
-	arma::mat matWSubspace;
+	mat matWSubspace;
 	double thetaOpt = DoRadical2D(matYSubspace);
-	arma::mat matJ = arma::eye(nDims, nDims);
+	mat matJ = eye(nDims, nDims);
 	matJ(i,i) = cos(thetaOpt);
 	matJ(i,j) = sin(thetaOpt);
 	matJ(j,i) = -sin(thetaOpt);
@@ -126,16 +129,20 @@
   }
   
   // the final transpose provides W in the typical form from the ICA literature
-  matW = arma::trans(matWhitening * matW);
+  matW = trans(matWhitening * matW);
 }
 
 
-void Radical::WhitenFeatureMajorMatrix(const arma::mat& matX,
-				       arma::mat& matXWhitened,
-				       arma::mat& matWhitening) {
-  arma::mat matU, matV;
-  arma::vec s;
-  arma::svd(matU, s, matV, cov(matX));
-  matWhitening = matU * arma::diagmat(1 / sqrt(s)) * arma::trans(matV);
+void WhitenFeatureMajorMatrix(const mat& matX,
+			      mat& matXWhitened,
+			      mat& matWhitening) {
+  mat matU, matV;
+  vec s;
+  svd(matU, s, matV, cov(matX));
+  matWhitening = matU * diagmat(1 / sqrt(s)) * trans(matV);
   matXWhitened = matX * matWhitening;
 }
+
+
+}; // namespace radical
+}; // namespace mlpack

Modified: mlpack/trunk/src/mlpack/methods/radical/radical.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/radical/radical.hpp	2011-12-08 21:10:03 UTC (rev 10672)
+++ mlpack/trunk/src/mlpack/methods/radical/radical.hpp	2011-12-08 21:30:14 UTC (rev 10673)
@@ -14,8 +14,9 @@
 #include <stdio.h>
 #include<float.h>
 
-using namespace std;
-
+namespace mlpack {
+namespace radical {
+    
 class Radical {
 public:
   Radical(double noiseStdDev, size_t nReplicates, size_t nAngles,
@@ -29,10 +30,6 @@
   double Vasicek(const arma::vec& x);
   double DoRadical2D(const arma::mat& matX);
   void DoRadical(const arma::mat& matX, arma::mat& matY, arma::mat& matW);
-
-  static void WhitenFeatureMajorMatrix(const arma::mat& matX,
-				       arma::mat& matXWhitened,
-				       arma::mat& matWhitening);
   
 private:
   /**
@@ -64,4 +61,13 @@
   
 };
 
+
+  void WhitenFeatureMajorMatrix(const arma::mat& matX,
+				arma::mat& matXWhitened,
+				arma::mat& matWhitening);
+  
+
+}; // namespace radical
+}; // namespace mlpack
+
 #endif

Modified: mlpack/trunk/src/mlpack/methods/radical/radical_main.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/radical/radical_main.cpp	2011-12-08 21:10:03 UTC (rev 10672)
+++ mlpack/trunk/src/mlpack/methods/radical/radical_main.cpp	2011-12-08 21:30:14 UTC (rev 10673)
@@ -29,12 +29,8 @@
   */
 
   
-  //Radical rad;
-  //rad.Init(0.01, 10, 200, 1, X);
+  mlpack::radical::Radical rad(0.01, 10, 200, 1);
 
-  Radical rad(0.01, 10, 200, 1);
-
-
   mat Y;
   mat W;
   rad.DoRadical(X, Y, W);
@@ -43,7 +39,7 @@
   
   mat matXWhitened;
   mat matWhitening;
-  Radical::WhitenFeatureMajorMatrix(X, matXWhitened, matWhitening);
+  mlpack::radical::WhitenFeatureMajorMatrix(X, matXWhitened, matWhitening);
   
   double val_init = 0;
   for(size_t i = 0; i < nDims; i++) {




More information about the mlpack-svn mailing list