[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