php-ml/tests/Phpml/Clustering/KMeansTest.php

58 lines
1.8 KiB
PHP
Raw Normal View History

2016-05-01 21:17:09 +00:00
<?php
2016-05-01 21:36:33 +00:00
declare (strict_types = 1);
2016-05-01 21:17:09 +00:00
namespace tests\Clustering;
use Phpml\Clustering\KMeans;
class KMeansTest extends \PHPUnit_Framework_TestCase
{
public function testKMeansSamplesClustering()
{
$samples = [[1, 1], [8, 7], [1, 2], [7, 8], [2, 1], [8, 9]];
$kmeans = new KMeans(2);
$clusters = $kmeans->cluster($samples);
$this->assertEquals(2, count($clusters));
foreach ($samples as $index => $sample) {
2016-05-01 21:36:33 +00:00
if (in_array($sample, $clusters[0]) || in_array($sample, $clusters[1])) {
2016-05-01 21:17:09 +00:00
unset($samples[$index]);
}
}
$this->assertEquals(0, count($samples));
}
public function testKMeansMoreSamplesClustering()
{
$samples = [
2016-05-01 21:36:33 +00:00
[80, 55], [86, 59], [19, 85], [41, 47], [57, 58],
[76, 22], [94, 60], [13, 93], [90, 48], [52, 54],
[62, 46], [88, 44], [85, 24], [63, 14], [51, 40],
[75, 31], [86, 62], [81, 95], [47, 22], [43, 95],
[71, 19], [17, 65], [69, 21], [59, 60], [59, 12],
[15, 22], [49, 93], [56, 35], [18, 20], [39, 59],
[50, 15], [81, 36], [67, 62], [32, 15], [75, 65],
[10, 47], [75, 18], [13, 45], [30, 62], [95, 79],
[64, 11], [92, 14], [94, 49], [39, 13], [60, 68],
[62, 10], [74, 44], [37, 42], [97, 60], [47, 73],
2016-05-01 21:17:09 +00:00
];
$kmeans = new KMeans(4);
$clusters = $kmeans->cluster($samples);
$this->assertEquals(4, count($clusters));
foreach ($samples as $index => $sample) {
2016-05-01 21:36:33 +00:00
for ($i = 0; $i < 4; ++$i) {
if (in_array($sample, $clusters[$i])) {
2016-05-01 21:17:09 +00:00
unset($samples[$index]);
}
}
}
$this->assertEquals(0, count($samples));
}
}