php-ml/tests/SupportVectorMachine/DataTransformerTest.php

91 lines
2.3 KiB
PHP
Raw Normal View History

2016-05-05 21:29:11 +00:00
<?php
2016-11-20 21:53:17 +00:00
declare(strict_types=1);
2016-05-05 21:29:11 +00:00
namespace Phpml\Tests\SupportVectorMachine;
2016-05-05 21:29:11 +00:00
use Phpml\Exception\InvalidArgumentException;
2016-05-05 21:29:11 +00:00
use Phpml\SupportVectorMachine\DataTransformer;
2017-02-03 11:58:25 +00:00
use PHPUnit\Framework\TestCase;
2016-05-05 21:29:11 +00:00
2017-02-03 11:58:25 +00:00
class DataTransformerTest extends TestCase
2016-05-05 21:29:11 +00:00
{
public function testTransformDatasetToTrainingSet(): void
2016-05-05 21:29:11 +00:00
{
$samples = [[1, 1], [2, 1], [3, 2], [4, 5]];
$labels = ['a', 'a', 'b', 'b'];
$trainingSet =
2016-05-06 20:33:04 +00:00
'0 1:1 2:1 '.PHP_EOL.
'0 1:2 2:1 '.PHP_EOL.
'1 1:3 2:2 '.PHP_EOL.
'1 1:4 2:5 '.PHP_EOL
2016-05-05 21:29:11 +00:00
;
$this->assertEquals($trainingSet, DataTransformer::trainingSet($samples, $labels));
}
2016-05-06 20:38:50 +00:00
public function testTransformSamplesToTestSet(): void
2016-05-06 20:38:50 +00:00
{
$samples = [[1, 1], [2, 1], [3, 2], [4, 5]];
$testSet =
'0 1:1 2:1 '.PHP_EOL.
'0 1:2 2:1 '.PHP_EOL.
'0 1:3 2:2 '.PHP_EOL.
'0 1:4 2:5 '.PHP_EOL
;
$this->assertEquals($testSet, DataTransformer::testSet($samples));
}
public function testPredictions(): void
{
$labels = ['a', 'a', 'b', 'b'];
$rawPredictions = implode(PHP_EOL, [0, 1, 0, 0]);
$predictions = ['a', 'b', 'a', 'a'];
$this->assertEquals($predictions, DataTransformer::predictions($rawPredictions, $labels));
}
public function testProbabilities(): void
{
$labels = ['a', 'b', 'c'];
$rawPredictions = implode(PHP_EOL, [
'labels 0 1 2',
'1 0.1 0.7 0.2',
'2 0.2 0.3 0.5',
'0 0.6 0.1 0.3',
]);
$probabilities = [
[
'a' => 0.1,
'b' => 0.7,
'c' => 0.2,
],
[
'a' => 0.2,
'b' => 0.3,
'c' => 0.5,
],
[
'a' => 0.6,
'b' => 0.1,
'c' => 0.3,
],
];
$this->assertEquals($probabilities, DataTransformer::probabilities($rawPredictions, $labels));
}
public function testThrowExceptionWhenTestSetIsEmpty(): void
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('The array has zero elements');
DataTransformer::testSet([]);
}
2016-05-05 21:29:11 +00:00
}