[mlpack-svn] r10487 - mlpack/trunk/src/mlpack/methods/pca

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Dec 1 04:08:15 EST 2011


Author: ajinkya
Date: 2011-12-01 04:08:15 -0500 (Thu, 01 Dec 2011)
New Revision: 10487

Modified:
   mlpack/trunk/src/mlpack/methods/pca/pca.cpp
Log:
< #166: PCA fails comparison with MATLAB> centering and scaling was causing the difference. By default other packages do not do zero-centering and scaling with std deviation.

Modified: mlpack/trunk/src/mlpack/methods/pca/pca.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/pca/pca.cpp	2011-12-01 02:54:44 UTC (rev 10486)
+++ mlpack/trunk/src/mlpack/methods/pca/pca.cpp	2011-12-01 09:08:15 UTC (rev 10487)
@@ -29,9 +29,16 @@
            arma::vec& eigVal, arma::mat& coeffs)
 {
   arma::mat transData = trans(data);
-  arma::vec means = mean(data, 1);
-  arma::mat meanSubData = data - means * arma::ones<arma::rowvec>(data.n_cols);
-  arma::mat covMat = ccov(meanSubData);
+  /*
+   * centering and scaling of data - commented out for now.
+   * transData.print("DATA : ");
+  arma::rowvec means = mean(transData, 0);
+  means.print("MEANS : ");
+  arma::mat meanSubData = transData;// - arma::ones<arma::colvec>(data.n_rows) * means;
+  meanSubData.print("CENTERED : ");
+  arma::mat scaledData = meanSubData;// / (arma::ones<arma::colvec>(data.n_rows) * stddev(meanSubData, 0, 0));
+  scaledData.print("SCALED : ");*/
+  arma::mat covMat = cov(transData); // should be this -> cov(scaledData);
   arma::eig_sym(eigVal, coeffs, covMat);
 
   int n_eigVal = eigVal.n_elem;




More information about the mlpack-svn mailing list