mirror of
https://github.com/Llewellynvdm/php-ml.git
synced 2025-01-26 08:38:32 +00:00
php-cs-fxier
This commit is contained in:
parent
60c796f5d9
commit
633974fea0
@ -57,5 +57,4 @@ class InvalidArgumentException extends \Exception
|
||||
{
|
||||
return new self('Inconsistent matrix aupplied');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -21,5 +21,4 @@ class MatrixException extends \Exception
|
||||
{
|
||||
return new self('Column out of range');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace Phpml\Math;
|
||||
@ -40,7 +41,7 @@ class Matrix
|
||||
$this->columns = count($matrix[0]);
|
||||
|
||||
if ($validate) {
|
||||
for ($i = 0; $i < $this->rows; $i++) {
|
||||
for ($i = 0; $i < $this->rows; ++$i) {
|
||||
if (count($matrix[$i]) !== $this->columns) {
|
||||
throw InvalidArgumentException::matrixDimensionsDidNotMatch();
|
||||
}
|
||||
@ -88,7 +89,7 @@ class Matrix
|
||||
}
|
||||
|
||||
$values = [];
|
||||
for ($i = 0; $i < $this->rows; $i++) {
|
||||
for ($i = 0; $i < $this->rows; ++$i) {
|
||||
$values[] = $this->matrix[$i][$column];
|
||||
}
|
||||
|
||||
@ -117,7 +118,7 @@ class Matrix
|
||||
$determinant = $this->matrix[0][0] * $this->matrix[1][1] -
|
||||
$this->matrix[0][1] * $this->matrix[1][0];
|
||||
} else {
|
||||
for ($j = 0; $j < $this->columns; $j++) {
|
||||
for ($j = 0; $j < $this->columns; ++$j) {
|
||||
$subMatrix = $this->crossOut(0, $j);
|
||||
if (fmod($j, 2) == 0) {
|
||||
$determinant += $this->matrix[0][$j] * $subMatrix->getDeterminant();
|
||||
@ -144,8 +145,8 @@ class Matrix
|
||||
public function transpose()
|
||||
{
|
||||
$newMatrix = [];
|
||||
for ($i = 0; $i < $this->rows; $i++) {
|
||||
for ($j = 0; $j < $this->columns; $j++) {
|
||||
for ($i = 0; $i < $this->rows; ++$i) {
|
||||
for ($j = 0; $j < $this->columns; ++$j) {
|
||||
$newMatrix[$j][$i] = $this->matrix[$i][$j];
|
||||
}
|
||||
}
|
||||
@ -168,14 +169,15 @@ class Matrix
|
||||
|
||||
$product = [];
|
||||
$multiplier = $matrix->toArray();
|
||||
for ($i = 0; $i < $this->rows; $i++) {
|
||||
for ($j = 0; $j < $matrix->getColumns(); $j++) {
|
||||
for ($i = 0; $i < $this->rows; ++$i) {
|
||||
for ($j = 0; $j < $matrix->getColumns(); ++$j) {
|
||||
$product[$i][$j] = 0;
|
||||
for ($k = 0; $k < $this->columns; $k++) {
|
||||
for ($k = 0; $k < $this->columns; ++$k) {
|
||||
$product[$i][$j] += $this->matrix[$i][$k] * $multiplier[$k][$j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new self($product, false);
|
||||
}
|
||||
|
||||
@ -187,8 +189,8 @@ class Matrix
|
||||
public function divideByScalar($value)
|
||||
{
|
||||
$newMatrix = array();
|
||||
for ($i = 0; $i < $this->rows; $i++) {
|
||||
for ($j = 0; $j < $this->columns; $j++) {
|
||||
for ($i = 0; $i < $this->rows; ++$i) {
|
||||
for ($j = 0; $j < $this->columns; ++$j) {
|
||||
$newMatrix[$i][$j] = $this->matrix[$i][$j] / $value;
|
||||
}
|
||||
}
|
||||
@ -208,8 +210,8 @@ class Matrix
|
||||
}
|
||||
|
||||
$newMatrix = array();
|
||||
for ($i = 0; $i < $this->rows; $i++) {
|
||||
for ($j = 0; $j < $this->columns; $j++) {
|
||||
for ($i = 0; $i < $this->rows; ++$i) {
|
||||
for ($j = 0; $j < $this->columns; ++$j) {
|
||||
$subMatrix = $this->crossOut($i, $j);
|
||||
if (fmod($i + $j, 2) == 0) {
|
||||
$newMatrix[$i][$j] = ($subMatrix->getDeterminant());
|
||||
@ -234,20 +236,19 @@ class Matrix
|
||||
{
|
||||
$newMatrix = [];
|
||||
$r = 0;
|
||||
for ($i = 0; $i < $this->rows; $i++) {
|
||||
for ($i = 0; $i < $this->rows; ++$i) {
|
||||
$c = 0;
|
||||
if ($row != $i) {
|
||||
for ($j = 0; $j < $this->columns; $j++) {
|
||||
for ($j = 0; $j < $this->columns; ++$j) {
|
||||
if ($column != $j) {
|
||||
$newMatrix[$r][$c] = $this->matrix[$i][$j];
|
||||
$c++;
|
||||
++$c;
|
||||
}
|
||||
}
|
||||
$r++;
|
||||
++$r;
|
||||
}
|
||||
}
|
||||
|
||||
return new self($newMatrix, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ class LeastSquares implements Regression
|
||||
}
|
||||
|
||||
/**
|
||||
* coefficient(b) = (X'X)-1X'Y
|
||||
* coefficient(b) = (X'X)-1X'Y.
|
||||
*/
|
||||
private function computeCoefficients()
|
||||
{
|
||||
|
@ -48,5 +48,4 @@ class LeastSquaresTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$this->assertEquals(4094, $regression->predict([60000, 1996]), '', $delta);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user