iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 24
0
AI & Data

學習PHP Machine Learning的冒險歷程系列 第 24

[2020鐵人賽Day24]邂逅PHP Machine Learning-最小二乘法-實作

前言

今天來試著利用線性資料預測,大家都知道直線的方程式可以這樣寫:
y = ax + b
那我們就設定a=1 b=1 的一條方程式,然後加入一點噪訊,來讓我們預測一下成果。

資料準備

這次資料我們自己準備好帶有噪訊的資料,可直接複製貼上

Sample target
0 0.524660291
0.1 0.338351161
0.2 0.361812209
0.3 1.259080857
0.4 0.599914314
0.5 0.778193265
0.6 1.009499674
0.7 0.957383887
0.8 0.891163502
0.9 1.005881627
1 1.730884261

使用函數

Train

$samples = [[60], [61], [62], [63], [65]];
$targets = [3.1, 3.6, 3.8, 4, 4.1]; 
$regression = new LeastSquares(); 
$regression->train($samples, $targets);

只要把資料改為我們的資料就可以作訓練了

Predict

$regression->predict([64]);

斜率與截距

$regression->getIntercept();
$regression->getCoefficients(); 

兩個函數可以印出y = ax + b 的 a、b

結語

最小二乘法預測線性非常好用,如果遇到非線性函數也是非常的好用的,但是複雜程度會直線上升,因此我們會請出前幾天學過的MLP來幫忙了。

完整範例Code

<?php
    require_once __DIR__ . '/vendor/autoload.php';

    use Phpml\Regression\LeastSquares;

    $samples = [[60], [61], [62], [63], [65]];
    $targets = [3.1, 3.6, 3.8, 4, 4.1];

    $regression = new LeastSquares();
    $regression->train($samples, $targets);

    //Predict
    echo $regression->predict([64]).”<br>";

    // 斜率與截距
    echo $regression->getIntercept().”<br>";
    print_r($regression->getCoefficients());
?>

上一篇
[2020鐵人賽Day23]邂逅PHP Machine Learning-最小二乘法 - 概念
下一篇
[2020鐵人賽Day25]邂逅PHP Machine Learning-非線性預測(支持向量機)
系列文
學習PHP Machine Learning的冒險歷程30

尚未有邦友留言

立即登入留言