2022-05-06 02:54:16 +02:00
2022-05-06 02:54:16 +02:00
2022-05-06 02:54:16 +02:00
2020-08-23 21:01:15 +02:00
2021-09-21 03:23:23 +02:00
2021-09-21 03:23:23 +02:00
2020-08-23 22:14:00 +02:00
2020-08-23 21:01:01 +02:00
2022-05-06 02:54:16 +02:00
2020-08-23 22:16:56 +02:00
2021-09-21 03:23:23 +02:00
2022-05-04 00:11:51 +02:00
2021-09-21 03:23:23 +02:00

PHP Kmean

Latest Version on Packagist Build Status Quality Score Total Downloads

K-mean clustering algorithm implementation in PHP.

Installation

You can install the package via composer:

composer require bdelespierre/php-kmeans

Usage

require "vendor/autoload.php";

$data = [
    [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],
];

// create a 2-dimentions space
$space = new Kmeans\Space(2);

// prepare the points
$points = new Kmeans\PointCollection($space);

foreach ($data as $coordinates) {
    $points->attach(new Kmeans\Point($space, $coordinates));
}

// prepare the algorithm
$algorithm = new Kmeans\Algorithm(new Kmeans\RandomInitialization());

// cluster these 50 points in 3 clusters
$clusters = $algorithm->clusterize($points, 3);

// display the cluster centers and attached points
foreach ($clusters as $num => $cluster) {
    $coordinates = $cluster->getCentroid()->getCoordinates();
    printf(
        "Cluster #%s [%d,%d] has %d points\n",
        $num,
        $coordinates[0],
        $coordinates[1],
        count($cluster->getPoints())
    );
}

Note: the example is given with points of a 2D space but it will work with any dimention greater than or equal to 1.

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email benjamin.delespierre@gmail.com instead of using the issue tracker.

Credits

License

Lesser General Public License (LGPL). Please see License File for more information.

Description
No description provided
Readme 292 KiB
Languages
PHP 100%