mirror of
https://github.com/Llewellynvdm/php-ml.git
synced 2025-01-25 08:08:31 +00:00
c1b1a5d6ac
* Multiple training data sets allowed * Tests with multiple training data sets * Updating docs according to #38 Documenting all models which predictions will be based on all training data provided. Some models already supported multiple training data sets.
49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace tests\Classification;
|
|
|
|
use Phpml\Classification\NaiveBayes;
|
|
|
|
class NaiveBayesTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
public function testPredictSingleSample()
|
|
{
|
|
$samples = [[5, 1, 1], [1, 5, 1], [1, 1, 5]];
|
|
$labels = ['a', 'b', 'c'];
|
|
|
|
$classifier = new NaiveBayes();
|
|
$classifier->train($samples, $labels);
|
|
|
|
$this->assertEquals('a', $classifier->predict([3, 1, 1]));
|
|
$this->assertEquals('b', $classifier->predict([1, 4, 1]));
|
|
$this->assertEquals('c', $classifier->predict([1, 1, 6]));
|
|
}
|
|
|
|
public function testPredictArrayOfSamples()
|
|
{
|
|
$trainSamples = [[5, 1, 1], [1, 5, 1], [1, 1, 5]];
|
|
$trainLabels = ['a', 'b', 'c'];
|
|
|
|
$testSamples = [[3, 1, 1], [5, 1, 1], [4, 3, 8], [1, 1, 2], [2, 3, 2], [1, 2, 1], [9, 5, 1], [3, 1, 2]];
|
|
$testLabels = ['a', 'a', 'c', 'c', 'b', 'b', 'a', 'a'];
|
|
|
|
$classifier = new NaiveBayes();
|
|
$classifier->train($trainSamples, $trainLabels);
|
|
$predicted = $classifier->predict($testSamples);
|
|
|
|
$this->assertEquals($testLabels, $predicted);
|
|
|
|
// Feed an extra set of training data.
|
|
$samples = [[1, 1, 6]];
|
|
$labels = ['d'];
|
|
$classifier->train($samples, $labels);
|
|
|
|
$testSamples = [[1, 1, 6], [5, 1, 1]];
|
|
$testLabels = ['d', 'a'];
|
|
$this->assertEquals($testLabels, $classifier->predict($testSamples));
|
|
|
|
}
|
|
}
|