Linear Regression with PHP

Simple Linear Regression with PHP-ML

Used when there is only one independent variable. For this example, let’s use a small dataset with square footage and price. This is the simplest form of linear regression, and it involves only one independent variable and one dependent variable. The equation for simple linear regression is: $y=\beta_{0} +\beta _{1} * x$

size,price
800,168400
900,172300
1000,185600
1100,178900
1200,195400
1300,188900
1400,215600
1480,255600
1500,198400
1600,228900
1700,235400
1800,225800
1790,210800
1900,242300
2000,238900
2100,265400
2200,248900
2300,272300
2400,285600
2500,278900
2600,295400
2700,282300
2720,272300
2800,308900
2900,298400
3000,325600

Example of use:

 
<?php

use Phpml\Dataset\CsvDataset;
use 
Phpml\Metric\Regression;
use 
Phpml\Regression\LeastSquares;

// Load the raw data from CSV
$dataset = new CsvDataset(dirname(__FILE__) . '/data/houses1.csv'1true);

$samples $dataset->getSamples();
$labels $dataset->getTargets();

$regressor = new LeastSquares();
$regressor->train($samples$labels);

// Predict price for a 2250 sq ft house
$newSample = [2250];
$predictedPrice $regressor->predict($newSample);

// Show results
echo 'Sample size: 2250 sq.ft';
echo 
"\nPredicted Price for: $" number_format($predictedPricedecimals2);

// Calculate MSE - check how accurate our model is using Mean Squared Error
// Lower number = better predictions
$predictions array_map(function($sample) use ($regressor) {
    return 
$regressor->predict($sample);
}, 
$samples);

// Calculate MSE using PHP-ML's built-in metric
$mse Regression::meanSquaredError($labels$predictions);

// Scale predictions to thousands
$predictedPriceScaled $predictedPrice 1000;
$mseScaled $mse / (1000 1000); // Scale MSE accordingly (square of 1000 since it's squared error)

echo "\n\nMean Squared Error (scaled): $" number_format($mseScaleddecimals2) . "k²";
echo 
"\nRoot Mean Squared Error (scaled): $" number_format(sqrt($mseScaled), decimals2) . "k";