/** * @param Observations $observations * @return array */ public final function regress(Observations $observations) : array { $coefficients = array_fill(0, $observations->getFeatureCount(), 0.0); do { $gradient = $this->calculateGradient($observations, $coefficients); $this->schedule->update($gradient); $coefficients = $this->updateCoefficients($coefficients, $gradient); } while (!$this->stoppingCriteria->converged($gradient, $coefficients)); return $coefficients; }