php-ml/tests/SupportVectorMachine/DataTransformerTest.php

91 lines
2.4 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 =
2018-07-04 21:42:22 +00:00
'0 1:1.000000 2:1.000000 '.PHP_EOL.
'0 1:2.000000 2:1.000000 '.PHP_EOL.
'1 1:3.000000 2:2.000000 '.PHP_EOL.
'1 1:4.000000 2:5.000000 '.PHP_EOL
2016-05-05 21:29:11 +00:00
;
2018-10-28 06:44:52 +00:00
self::assertEquals($trainingSet, DataTransformer::trainingSet($samples, $labels));
2016-05-05 21:29:11 +00:00
}
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 =
2018-07-04 21:42:22 +00:00
'0 1:1.000000 2:1.000000 '.PHP_EOL.
'0 1:2.000000 2:1.000000 '.PHP_EOL.
'0 1:3.000000 2:2.000000 '.PHP_EOL.
'0 1:4.000000 2:5.000000 '.PHP_EOL
2016-05-06 20:38:50 +00:00
;
2018-10-28 06:44:52 +00:00
self::assertEquals($testSet, DataTransformer::testSet($samples));
2016-05-06 20:38:50 +00:00
}
public function testPredictions(): void
{
$labels = ['a', 'a', 'b', 'b'];
$rawPredictions = implode(PHP_EOL, [0, 1, 0, 0]);
$predictions = ['a', 'b', 'a', 'a'];
2018-10-28 06:44:52 +00:00
self::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,
],
];
2018-10-28 06:44:52 +00:00
self::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
}