1<?php 2 3declare(strict_types=1); 4 5namespace Phpml\Math\Kernel; 6 7use Phpml\Math\Kernel; 8use Phpml\Math\Product; 9 10class RBF implements Kernel 11{ 12 /** 13 * @var float 14 */ 15 private $gamma; 16 17 public function __construct(float $gamma) 18 { 19 $this->gamma = $gamma; 20 } 21 22 /** 23 * @param array $a 24 * @param array $b 25 */ 26 public function compute($a, $b): float 27 { 28 $score = 2 * Product::scalar($a, $b); 29 $squares = Product::scalar($a, $a) + Product::scalar($b, $b); 30 31 return exp(-$this->gamma * ($squares - $score)); 32 } 33} 34