dmlfw (Daniyal Machine Learning Framework)

Batch gradient descent linear regression example using polynomial features. More...

#include <stdio.h>
#include <dmlfw.h>
#include <stdlib.h>
#include <unistd.h>
Include dependency graph for polynomial_batch_gd.c:
#define ACTUAL_TRAINING_DATASET   "trends_train.csv"
 
#define FREQUENCY_OF_PRINTING_COST   300000
 
dmlfw_gradient_descent_optionsget_gradient_descent_options ()
 Creates gradient descent configuration for batch gradient descent.
 
FILE * gnuplot
 
#define LEARNING_RATE   0.09
 
void load_dataset (dmlfw_mat_double **x, dmlfw_column_vec_double **y)
 Loads features and target from scaled polynomial dataset with bias column.
 
int main ()
 Main program execution for polynomial batch gradient descent linear regression.
 
#define MODEL_FILE_NAME   "example-4-model.csv"
 
#define NUMBER_OF_ITERATIONS   300000000
 
int on_iteration_complete (uint64_t iteration_number, void *y, void *predicted_y, void *model, double regularization_parameter)
 Callback invoked at each gradient descent iteration to log cost and update graphs.
 
void print_error_and_exit ()
 Prints ml-framework error and exits.
 
#define REGULARIZATION_PARAMETER   0.0
 
#define SHOW_GRAPH   1
 
#define TRAINING_DATASET   "scaled_poly_trends_train.csv"
 

Detailed Description

Batch gradient descent linear regression example using polynomial features.

Author
Mohammed Daniyal
Version
1.0
Date
2025-09-26

This example trains a linear regression model on the scaled polynomial trends training dataset. It tracks training cost with optional graphing, uses regularization, and saves the trained model. Includes custom progress callback with gnuplot visualization.

Usage: ./polynomial_batch_gd

Macro Definition Documentation

◆ ACTUAL_TRAINING_DATASET

#define ACTUAL_TRAINING_DATASET   "trends_train.csv"

◆ FREQUENCY_OF_PRINTING_COST

#define FREQUENCY_OF_PRINTING_COST   300000

◆ LEARNING_RATE

#define LEARNING_RATE   0.09

◆ MODEL_FILE_NAME

#define MODEL_FILE_NAME   "example-4-model.csv"

◆ NUMBER_OF_ITERATIONS

#define NUMBER_OF_ITERATIONS   300000000

◆ REGULARIZATION_PARAMETER

#define REGULARIZATION_PARAMETER   0.0

◆ SHOW_GRAPH

#define SHOW_GRAPH   1

◆ TRAINING_DATASET

#define TRAINING_DATASET   "scaled_poly_trends_train.csv"

Function Documentation

◆ get_gradient_descent_options()

dmlfw_gradient_descent_options * get_gradient_descent_options ( )

Creates gradient descent configuration for batch gradient descent.

Returns
Configured gradient descent options structure or NULL on error.

◆ load_dataset()

void load_dataset ( dmlfw_mat_double **  x,
dmlfw_column_vec_double **  y 
)

Loads features and target from scaled polynomial dataset with bias column.

Parameters
[out]xPointer to features matrix pointer.
[out]yPointer to target column vector pointer.

◆ main()

int main ( )

Main program execution for polynomial batch gradient descent linear regression.

Returns
0 on success or an error code.

◆ on_iteration_complete()

int on_iteration_complete ( uint64_t  iteration_number,
void *  y,
void *  predicted_y,
void *  model,
double  regularization_parameter 
)

Callback invoked at each gradient descent iteration to log cost and update graphs.

Parameters
iteration_numberCurrent iteration index.
yActual target vector.
predicted_yPredicted target vector.
modelCurrent model parameters vector.
regularization_parameterRegularization coefficient.
Returns
0 to continue gradient descent, negative to abort.

◆ print_error_and_exit()

void print_error_and_exit ( )

Prints ml-framework error and exits.

Variable Documentation

◆ gnuplot

FILE* gnuplot