[mlpack-svn] r17194 - mlpack/trunk/src/mlpack/methods/linear_regression
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Sat Sep 27 12:31:06 EDT 2014
Author: rcurtin
Date: Sat Sep 27 12:31:06 2014
New Revision: 17194
Log:
Tabs to spaces.
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 Sat Sep 27 12:31:06 2014
@@ -9,13 +9,13 @@
using namespace mlpack;
using namespace mlpack::regression;
-
+
LinearRegression::LinearRegression(const arma::mat& predictors,
- const arma::vec& responses,
- const double lambda,
- const bool intercept,
- const arma::vec& weights
- ) :
+ const arma::vec& responses,
+ const double lambda,
+ const bool intercept,
+ const arma::vec& weights
+ ) :
lambda(lambda),
intercept(intercept)
{
@@ -31,30 +31,30 @@
const size_t nCols = predictors.n_cols;
arma::mat p = predictors;
- arma::vec r = responses;
- // Here we add the row of ones to the predictors.
- // The intercept is not penalized. Add an "all ones" row to design and set
- // intercept = false to get a penalized intercept
- if(intercept)
- {
- p.insert_rows(0, arma::ones<arma::mat>(1,nCols));
- }
-
- if(weights.n_elem > 0)
- {
- p = p * diagmat(sqrt(weights));
+ arma::vec r = responses;
+ // Here we add the row of ones to the predictors.
+ // The intercept is not penalized. Add an "all ones" row to design and set
+ // intercept = false to get a penalized intercept
+ if(intercept)
+ {
+ p.insert_rows(0, arma::ones<arma::mat>(1,nCols));
+ }
+
+ if(weights.n_elem > 0)
+ {
+ p = p * diagmat(sqrt(weights));
r = sqrt(weights) % responses;
- }
+ }
if (lambda != 0.0)
{
// Add the identity matrix to the predictors (this is equivalent to ridge
// regression). See http://math.stackexchange.com/questions/299481/ for
// more information.
- p.insert_cols(nCols, predictors.n_rows);
+ p.insert_cols(nCols, predictors.n_rows);
p.submat(p.n_rows - predictors.n_rows, nCols, p.n_rows - 1, nCols +
- predictors.n_rows - 1) = sqrt(lambda) * arma::eye<arma::mat>(predictors.n_rows,
- predictors.n_rows);
+ predictors.n_rows - 1) = sqrt(lambda) * arma::eye<arma::mat>(predictors.n_rows,
+ predictors.n_rows);
}
// We compute the QR decomposition of the predictors.
@@ -73,7 +73,7 @@
else
{
// Copy responses into larger vector.
- r.insert_rows(nCols,p.n_cols - nCols);
+ r.insert_rows(nCols,p.n_cols - nCols);
arma::solve(parameters, R, arma::trans(Q) * r);
}
}
@@ -94,22 +94,22 @@
void LinearRegression::Predict(const arma::mat& points, arma::vec& predictions)
const
{
- if (intercept)
- {
- // We want to be sure we have the correct number of dimensions in the dataset.
+ if (intercept)
+ {
+ // We want to be sure we have the correct number of dimensions in the dataset.
Log::Assert(points.n_rows == parameters.n_rows-1);
- // Get the predictions, but this ignores the intercept value (parameters[0]).
- predictions = arma::trans(arma::trans(parameters.subvec(1, parameters.n_elem - 1)) * points);
- // Now add the intercept.
- predictions += parameters(0);
- }
- else
- {
- // We want to be sure we have the correct number of dimensions in the dataset.
+ // Get the predictions, but this ignores the intercept value (parameters[0]).
+ predictions = arma::trans(arma::trans(parameters.subvec(1, parameters.n_elem - 1)) * points);
+ // Now add the intercept.
+ predictions += parameters(0);
+ }
+ else
+ {
+ // We want to be sure we have the correct number of dimensions in the dataset.
Log::Assert(points.n_rows == parameters.n_rows);
- predictions = arma::trans(arma::trans(parameters) * points);
- }
-
+ predictions = arma::trans(arma::trans(parameters) * points);
+ }
+
}
//! Compute the L2 squared error on the given predictors and responses.
@@ -122,28 +122,28 @@
// Calculate the differences between actual responses and predicted responses.
// We must also add the intercept (parameters(0)) to the predictions.
- arma::vec temp;
- if (intercept)
- {
- // Ensure that we have the correct number of dimensions in the dataset.
- if (nRows != parameters.n_rows - 1)
- {
- Log::Fatal << "The test data must have the same number of columns as the "
- "training file." << std::endl;
- }
- temp = responses - arma::trans( (arma::trans(parameters.subvec(1,
- parameters.n_elem - 1)) * predictors) + parameters(0));
- }
- else
- {
- // Ensure that we have the correct number of dimensions in the dataset.
- if (nRows != parameters.n_rows)
- {
- Log::Fatal << "The test data must have the same number of columns as the "
- "training file." << std::endl;
- }
- temp = responses - arma::trans((arma::trans(parameters) * predictors));
- }
+ arma::vec temp;
+ if (intercept)
+ {
+ // Ensure that we have the correct number of dimensions in the dataset.
+ if (nRows != parameters.n_rows - 1)
+ {
+ Log::Fatal << "The test data must have the same number of columns as the "
+ "training file." << std::endl;
+ }
+ temp = responses - arma::trans( (arma::trans(parameters.subvec(1,
+ parameters.n_elem - 1)) * predictors) + parameters(0));
+ }
+ else
+ {
+ // Ensure that we have the correct number of dimensions in the dataset.
+ if (nRows != parameters.n_rows)
+ {
+ Log::Fatal << "The test data must have the same number of columns as the "
+ "training file." << std::endl;
+ }
+ temp = responses - arma::trans((arma::trans(parameters) * predictors));
+ }
const double cost = arma::dot(temp, temp) / nCols;
return cost;
More information about the mlpack-svn
mailing list