How vignol-yw/linear-regression-openblas works
This repository is a C implementation of multiple linear regression optimized with BLAS. The principal workflow is: run the program, load the house-price CSV, extract the target and standardize features, then train by gradient descent and return model weights. Training also records MSE history, which a separate Python script can plot. The graph follows calls and file reads/writes visible in the sampled source; the README documents normalization and BLAS optimization, while the plotting script is not invoked by the C program.
Main entry points: main.c Training pipeline · regression.c Gradient descent · plot_history.py Loss plotting · csv_reader.c CSV reader
Components 14
Program entry
- Training pipeline
main.c
Data preparation
- House prices
data/house_prices_multiple.csv - CSV reader
src/csv_reader.c - Target extraction
src/utils.c - Column means
src/utils.c - Column standard deviations
src/utils.c
Model training
- Gradient descent
src/regression.c - Model weights
src/regression.c - Loss history CSV
data/loss_history.csv
Loss visualization
- Loss plotting
visualization/plot_history.py - Loss curve
Other components
- Program user
- BLAS routines
- Console output
Connections 15
- Program user → Training pipeline: runs
- Training pipeline → CSV reader: calls
- CSV reader → House prices: reads
- Training pipeline → Target extraction: calls
- Training pipeline → Column means: calls
- Training pipeline → Column standard deviations: calls
- Training pipeline → Gradient descent: trains
- Gradient descent → BLAS routines: calls
- Column means → BLAS routines: calls
- Column standard deviations → BLAS routines: calls
- Gradient descent → Model weights: returns
- Gradient descent → Loss history CSV: writes
- Gradient descent → Console output: prints
- Loss plotting → Loss history CSV: reads
- Loss plotting → Loss curve: saves