[mlpack-svn] r15849 - mlpack/trunk/src/mlpack/methods/linear_regression
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Sep 26 15:57:37 EDT 2013
Author: rcurtin
Date: Thu Sep 26 15:57:36 2013
New Revision: 15849
Log:
Fix in implementation to avoid copies.
Modified:
mlpack/trunk/src/mlpack/methods/linear_regression/linear_regression.cpp
Modified: mlpack/trunk/src/mlpack/methods/linear_regression/linear_regression.cpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/linear_regression/linear_regression.cpp (original)
+++ mlpack/trunk/src/mlpack/methods/linear_regression/linear_regression.cpp Thu Sep 26 15:57:36 2013
@@ -38,11 +38,12 @@
// Add the identity matrix to the predictors (this is equivalent to ridge
// regression). See http://math.stackexchange.com/questions/299481/ for
// more information.
- p.set_size(predictors.n_rows + 1, nCols + predictors.n_rows);
+ p.set_size(predictors.n_rows + 1, nCols + predictors.n_rows + 1);
p.submat(1, 0, p.n_rows - 1, nCols - 1) = predictors;
- p.row(0).fill(1);
- p.submat(1, nCols, p.n_rows - 1, nCols + predictors.n_rows - 1) =
- lambda * arma::eye<arma::mat>(predictors.n_rows, predictors.n_rows);
+ p.row(0).subvec(0, nCols - 1).fill(1);
+ p.submat(0, nCols, p.n_rows - 1, nCols + predictors.n_rows) =
+ lambda * arma::eye<arma::mat>(predictors.n_rows + 1,
+ predictors.n_rows + 1);
}
// We compute the QR decomposition of the predictors.
@@ -61,9 +62,9 @@
else
{
// Copy responses into larger vector.
- arma::vec r(nCols + predictors.n_rows);
+ arma::vec r(nCols + predictors.n_rows + 1);
r.subvec(0, nCols - 1) = responses;
- r.subvec(nCols, nCols + predictors.n_rows - 1).fill(0);
+ r.subvec(nCols, nCols + predictors.n_rows).fill(0);
arma::solve(parameters, R, arma::trans(Q) * r);
}
More information about the mlpack-svn
mailing list