[mlpack-svn] r17449 - in mlpack/tags/mlpack-1.0.11: . src/mlpack/methods/pca

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Sun Dec 7 14:09:55 EST 2014


Author: rcurtin
Date: Sun Dec  7 14:09:55 2014
New Revision: 17449

Log:
Merge r17174-17175 into mlpack-1.0.11.


Modified:
   mlpack/tags/mlpack-1.0.11/   (props changed)
   mlpack/tags/mlpack-1.0.11/src/mlpack/methods/pca/pca.cpp

Modified: mlpack/tags/mlpack-1.0.11/src/mlpack/methods/pca/pca.cpp
==============================================================================
--- mlpack/tags/mlpack-1.0.11/src/mlpack/methods/pca/pca.cpp	(original)
+++ mlpack/tags/mlpack-1.0.11/src/mlpack/methods/pca/pca.cpp	Sun Dec  7 14:09:55 2014
@@ -22,8 +22,6 @@
  */
 #include "pca.hpp"
 #include <mlpack/core.hpp>
-#include <iostream>
-#include <complex>
 
 using namespace std;
 using namespace mlpack;
@@ -139,8 +137,12 @@
     // Drop unnecessary rows.
     data.shed_rows(newDimension, data.n_rows - 1);
 
+  // The svd method returns only non-zero eigenvalues so we have to calculate
+  // the right dimension before calculating the amount of variance retained.
+  double eigDim = std::min(newDimension - 1, (size_t) eigVal.n_elem - 1);
+
   // Calculate the total amount of variance retained.
-  return (sum(eigVal.subvec(0, newDimension - 1)) / sum(eigVal));
+  return (sum(eigVal.subvec(0, eigDim)) / sum(eigVal));
 }
 
 /**



More information about the mlpack-svn mailing list