Skip to content
Snippets Groups Projects
Commit 484dd9d0 authored by Dean Samuel Schmitz's avatar Dean Samuel Schmitz
Browse files

Update documentation

parent ead5a8f8
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@ LinearRegression regressor;
// input: const arma::mat &data, const arma::rowvec &responses, const double lambda, const bool intercept
// output:
void initModel(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, SP_integer lambda, SP_integer bool_intercept)
void initModel(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, double lambda, SP_integer bool_intercept)
{
if(matSize / matRowNum != vecSize)
{
......@@ -35,7 +35,7 @@ void initModel(float *matrix, SP_integer matSize, SP_integer matRowNum, float *r
// input: const arma::mat &data, const arma::rowvec &responses, const arma::rowvec &weights, const double lambda, const bool intercept
// output:
void initModelWithWeights(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, float *weights_arr, SP_integer weightsSize, SP_integer lambda, SP_integer bool_intercept)
void initModelWithWeights(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, float *weights_arr, SP_integer weightsSize, double lambda, SP_integer bool_intercept)
{
if(matSize / matRowNum != vecSize)
{
......@@ -50,16 +50,9 @@ void initModelWithWeights(float *matrix, SP_integer matSize, SP_integer matRowNu
regressor = LinearRegression(data, responses, weights, lambda, bool_intercept);
}
// input:
// output:
void initModelEmpty(SP_integer)
{
regressor = LinearRegression();
}
// input: const arma::mat &points, const arma::rowvec &responses
// output: double L2SquardError
SP_integer computeError(float *points_mat_arr, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize)
double computeError(float *points_mat_arr, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize)
{
if(matSize / matRowNum != vecSize)
{
......@@ -74,30 +67,6 @@ SP_integer computeError(float *points_mat_arr, SP_integer matSize, SP_integer ma
return regressor.ComputeError(data, responses);
}
// input:
// output: double
SP_integer intercept()
{
if(regressor.Intercept()) {return 1;}
else {return 0;}
}
// input:
// output: double Tikhonov regularization parameter
SP_integer lambda()
{
return regressor.Lambda();;
}
// input: double new Tikhonov regularization parameter
// output:
void modifyLambda(SP_integer new_lambda)
{
double& lambda_ref = regressor.Lambda();
lambda_ref = new_lambda;
}
// input:
// output: const arma::vec & parameters b vector
float * parameters(SP_integer *arraySize)
......@@ -149,7 +118,7 @@ void predict(float *pointsArr, SP_integer pointsSize, SP_integer pointsRowNum, f
// input: const arma::mat &data, const arma::rowvec &responses, const bool intercept
// output:
SP_integer train(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, SP_integer bool_intercept)
double train(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, SP_integer bool_intercept)
{
if(matSize / matRowNum != vecSize)
{
......@@ -166,7 +135,7 @@ SP_integer train(float *matrix, SP_integer matSize, SP_integer matRowNum, float
// input: const arma::mat &data, const arma::rowvec &responses, const arma::rowvec &weights, const bool intercept
// output:
SP_integer trainWithWeights(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, float *weights_arr, SP_integer weightsSize, SP_integer bool_intercept)
double trainWithWeights(float *matrix, SP_integer matSize, SP_integer matRowNum, float *responses_arr, SP_integer vecSize, float *weights_arr, SP_integer weightsSize, SP_integer bool_intercept)
{
if(matSize / matRowNum != vecSize)
{
......
:- module(linear_regression, [initModel/7, initModelWithWeights/9, initModelEmpty/1, computeError/6, intercept/1, lambda/1, modifyLambda/1, parameters/2, modifyParameters/2, predict/5, train/7, trainWithWeights/9]).
:- module(linear_regression, [ initModel/7,
initModelWithWeights/9,
computeError/6,
parameters/2,
modifyParameters/2,
predict/5,
train/7,
trainWithWeights/9]).
:- load_files(library(str_decl),
[when(compile_time), if(changed)]).
......@@ -12,108 +20,143 @@
float32 = float_32,
float_array = array(float32).
%% TODO: update Comment docs
%% definitions for the connected function and what there inputs and output arguments are
%% TODO:
%% --Input--
%%
%% --Output--
%%
%% --Description--
foreign(initModel, c, initModel(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +integer, +integer)).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% float32 lambda => 0.0,
%% bool intercept => (1)true / (0)false => true,
%%
%% --Output--
%%
%% --Description--
foreign(initModelWithWeights, c, initModelWithWeights(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +pointer(float_array), +integer, +integer, +integer)).
%% TODO:
%% --Input--
%% Initializes the linear_regression model and trains it but doesnt include weights.
%%
%% --Output--
%%
%% --Description--
foreign(initModelEmpty, c, initModelEmpty(+integer)).
foreign(initModel, c, initModel( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+float32,
+integer)).
%% TODO:
%% --Input--
%%
%% --Output--
%%
%% --Description--
foreign(computeError, c, computeError(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, [-integer])).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% vec weights,
%% float32 lambda => 0.0,
%% bool intercept => (1)true / (0)false => true,
%%
%% --Output--
%%
%% --Description--
foreign(intercept, c, intercept([-integer])).
%% TODO:
%% --Input--
%% Initializes the linear_regression model, trains it and adds weights to it.
%%
%% --Output--
%%
%% --Description--
foreign(lambda, c, lambda([-integer])).
foreign(initModelWithWeights, c, initModelWithWeights( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+pointer(float_array), +integer,
+float32,
+integer)).
%% TODO:
%% --Input--
%% mat points,
%% vec responses
%%
%% --Output--
%% float32 error
%%
%% --Description--
foreign(modifyLambda, c, modifyLambda(+integer)).
%% Calculate the L2 squared error on the given predictors and responses using this linear regression model.
%%
foreign(computeError, c, computeError( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
[-float32])).
%% TODO:
%% --Input--
%%
%% --Output--
%% vec parameters
%%
%% --Description--
%% Get the parameters (the b vector).
%%
foreign(parameters, c, parameters([-pointer(float_array)], -integer)).
%% TODO:
%% --Input--
%% vec parameters
%%
%% --Output--
%%
%% --Description--
%% Modify the parameters (the b vector).
%%
foreign(modifyParameters, c, modifyParameters(+pointer(float_array), +integer)).
%% TODO:
%% --Input--
%% mat points
%%
%% --Output--
%% vec responses
%%
%% --Description--
foreign(predict, c, predict(+pointer(float_array), +integer, +integer, -pointer(float_array), -integer)).
%% Calculate y_i for each data point in points.
%%
foreign(predict, c, predict( +pointer(float_array), +integer, +integer,
-pointer(float_array), -integer)).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% bool intercept => (1)true / (0)false => true,
%%
%% --Output--
%% float32 least quares error after training
%%
%% --Description--
foreign(train, c, train(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +integer, [-integer])).
%% Train the linear_regression model on the given data.
%% Careful!
%% This will completely ignore and overwrite the existing model. This particular implementation does not have an incremental training algorithm.
%%
foreign(train, c, train( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+integer,
[-float32])).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% vec weights,
%% bool intercept => (1)true / (0)false => true,
%%
%% --Output--
%% float32 least quares error after training
%%
%% --Description--
foreign(trainWithWeights, c, trainWithWeights(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +pointer(float_array), +integer, +integer, [-integer])).
%% Train the linear_regression model on the given data and weights.
%% Careful!
%% This will completely ignore and overwrite the existing model. This particular implementation does not have an incremental training algorithm.
%%
foreign(trainWithWeights, c, trainWithWeights( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+pointer(float_array), +integer,
+integer,
[-float32])).
%% Defines what functions should be connected from main.cpp
foreign_resource(linear_regression, [initModel, initModelWithWeights, initModelEmpty, computeError, intercept, lambda, modifyLambda, parameters, modifyParameters, predict, train, trainWithWeights]).
foreign_resource(linear_regression, [ initModel,
initModelWithWeights,
computeError,
parameters,
modifyParameters,
predict,
train,
trainWithWeights]).
:- load_foreign_resource(linear_regression).
:- module(logistic_regression, [ initModelNoOptimizer/6,
initModelWithOptimizer/7,
classifyPoint/4,
......@@ -22,69 +23,127 @@
%% definitions for the connected function
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% float32 lambda => 0.0
%%
%% --Output--
%%
%% --Description--
foreign(initModelNoOptimizer, c, initModelNoOptimizer(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +float32)).
%% Initialize the logistic_regression model without specifing a optimizer.
%%
foreign(initModelNoOptimizer, c, initModelNoOptimizer( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+float32)).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% string optimizer => "lbfgs", "psgd" => lbfgs,
%% float32 lambda => 0.0
%%
%% --Output--
%%
%% --Description--
foreign(initModelWithOptimizer, c, initModelWithOptimizer(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +string, +float32)).
%% Initialize the logistic_regression model and specify the optimizer.
%%
foreign(initModelWithOptimizer, c, initModelWithOptimizer( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+string,
+float32)).
%% TODO:
%% --Input--
%% vec point,
%% float32 decisionBoundary => 0.5
%%
%% --Output--
%% int predicLabel
%%
%% --Description--
foreign(classifyPoint, c, classifyPoint(+pointer(float_array), +integer, +float32, [-integer])).
%% Classify the given point.
%%
foreign(classifyPoint, c, classifyPoint(+pointer(float_array), +integer,
+float32,
[-integer])).
%% TODO:
%% --Input--
%% mat data,
%% float32 decisionBoundary => 0.5
%%
%% --Output--
%% vec predicLabels
%%
%% --Description--
foreign(classifyLabels, c, classifyLabels(+pointer(float_array), +integer, +integer, -pointer(float_array), -integer, +float32)).
%% Classify the given points, returning the predicted labels for each point.
%%
foreign(classifyLabels, c, classifyLabels( +pointer(float_array), +integer, +integer,
-pointer(float_array), -integer,
+float32)).
%% TODO:
%% --Input--
%% mat data
%%
%% --Output--
%% mat probabilities
%%
%% --Description--
foreign(classifyProbs, c, classifyProbs(+pointer(float_array), +integer, +integer, -pointer(float_array), -integer, -integer)).
%% Classify the given points, returning class probabilities for each point.
%%
foreign(classifyProbs, c, classifyProbs(+pointer(float_array), +integer, +integer,
-pointer(float_array), -integer, -integer)).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% float32 decisionBoundary => 0.5
%%
%% --Output--
%% float32 accuracy
%%
%% --Description--
foreign(computeAccuracy, c, computeAccuracy(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +float32, [-float32])).
%% Compute the accuracy of the model on the given predictors and responses, using the given decision boundary.
%%
foreign(computeAccuracy, c, computeAccuracy( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+float32,
[-float32])).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%%
%% --Output--
%% float32 error
%%
%% --Description--
foreign(computeError, c, computeError(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, [-float32])).
%% Compute the error of the model.
%%
foreign(computeError, c, computeError( +pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
[-float32])).
%% TODO:
%% --Input--
%% mat data,
%% vec responses,
%% string optimizer => "lbfgs", "psgd" => lbfgs
%%
%% --Output--
%%
%% --Description--
foreign(train, c, train(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +string)).
%% Train the logistic_regression model on the given input data.
%%
foreign(train, c, train(+pointer(float_array), +integer, +integer,
+pointer(float_array), +integer,
+string)).
%% Defines the functions that get connected from main.cpp
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment