cluster($samples)); $samples = [[1, 1], [6, 6], [1, -1], [5, 6], [-1, -1], [7, 8], [-1, 1], [7, 7]]; $clustered = [ [[1, 1], [1, -1], [-1, -1], [-1, 1]], [[6, 6], [5, 6], [7, 8], [7, 7]], ]; $dbscan = new DBSCAN($epsilon = 3, $minSamples = 4); self::assertEquals($clustered, $dbscan->cluster($samples)); } public function testDBSCANSamplesClusteringAssociative(): void { $samples = [ 'a' => [1, 1], 'b' => [9, 9], 'c' => [1, 2], 'd' => [9, 8], 'e' => [7, 7], 'f' => [8, 7], ]; $clustered = [ [ 'a' => [1, 1], 'c' => [1, 2], ], [ 'b' => [9, 9], 'd' => [9, 8], 'e' => [7, 7], 'f' => [8, 7], ], ]; $dbscan = new DBSCAN($epsilon = 3, $minSamples = 2); self::assertEquals($clustered, $dbscan->cluster($samples)); } public function testClusterEpsilonSmall(): void { $samples = [[0], [1], [2]]; $clustered = [ ]; $dbscan = new DBSCAN($epsilon = 0.5, $minSamples = 2); self::assertEquals($clustered, $dbscan->cluster($samples)); } public function testClusterEpsilonBoundary(): void { $samples = [[0], [1], [2]]; $clustered = [ ]; $dbscan = new DBSCAN($epsilon = 1.0, $minSamples = 2); self::assertEquals($clustered, $dbscan->cluster($samples)); } public function testClusterEpsilonLarge(): void { $samples = [[0], [1], [2]]; $clustered = [ [[0], [1], [2]], ]; $dbscan = new DBSCAN($epsilon = 1.5, $minSamples = 2); self::assertEquals($clustered, $dbscan->cluster($samples)); } }