[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