cii-text-analysis/vendor/rubix/ml/tests/Graph/Nodes/BallTest.php
Jéremy Munsch f68d2ac333
premier poc
2026-02-11 08:24:04 +01:00

100 lines
2.2 KiB
PHP

<?php
namespace Rubix\ML\Tests\Graph\Nodes;
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Graph\Nodes\Node;
use Rubix\ML\Graph\Nodes\Ball;
use Rubix\ML\Graph\Nodes\BinaryNode;
use Rubix\ML\Graph\Nodes\Hypersphere;
use Rubix\ML\Kernels\Distance\Euclidean;
use PHPUnit\Framework\TestCase;
/**
* @group Nodes
* @covers \Rubix\ML\Graph\Nodes\Ball
*/
class BallTest extends TestCase
{
protected const SAMPLES = [
[5.0, 2.0, -3],
[6.0, 4.0, -5],
];
protected const LABELS = [22, 13];
protected const CENTER = [5.5, 3.0, -4];
protected const RADIUS = 1.5;
/**
* @var \Rubix\ML\Graph\Nodes\Ball
*/
protected $node;
/**
* @before
*/
protected function setUp() : void
{
$groups = [
Labeled::quick([self::SAMPLES[0]], [self::LABELS[0]]),
Labeled::quick([self::SAMPLES[1]], [self::LABELS[1]]),
];
$this->node = new Ball(self::CENTER, self::RADIUS, $groups);
}
/**
* @test
*/
public function build() : void
{
$this->assertInstanceOf(Ball::class, $this->node);
$this->assertInstanceOf(Hypersphere::class, $this->node);
$this->assertInstanceOf(BinaryNode::class, $this->node);
$this->assertInstanceOf(Node::class, $this->node);
}
/**
* @test
*/
public function split() : void
{
$dataset = Labeled::quick(self::SAMPLES, self::LABELS);
$node = Ball::split($dataset, new Euclidean());
$this->assertEquals(self::CENTER, $node->center());
$this->assertEquals(self::RADIUS, $node->radius());
}
/**
* @test
*/
public function center() : void
{
$this->assertSame(self::CENTER, $this->node->center());
}
/**
* @test
*/
public function radius() : void
{
$this->assertSame(self::RADIUS, $this->node->radius());
}
/**
* @test
*/
public function groups() : void
{
$expected = [
Labeled::quick([self::SAMPLES[0]], [self::LABELS[0]]),
Labeled::quick([self::SAMPLES[1]], [self::LABELS[1]]),
];
$this->assertEquals($expected, $this->node->groups());
}
}