Example #1
2
  function calcKmeans($file, $numClusters = 6, $use_kpp = true) { 
    $_img = imagecreatefromstring(file_get_contents($file));

    $img = imagecreatetruecolor(MAXSIZE, MAXSIZE * (imagesy($_img) / imagesx($_img) ));
    
    imagecopyresampled($img, 
     $_img, 
     0, 0, 0, 0, 
     MAXSIZE, 
     MAXSIZE * (imagesy($_img) / imagesx($_img) ),
     imagesx($_img), imagesy($_img)
    );

    $start = microtime();
    $clusters = kmeans($img, $numClusters, $use_kpp);
    $stop = microtime();
  
    uasort($clusters, function($a, $b) {
      $ac = $a['cnt'];
      $ab = $b['cnt'];
      if ($ac < $ab)
        return 1;
      else if ($ac > $ab)
        return -1;
      else
        return 0;
    });

    $total = 0;	
    foreach ($clusters as $c) {
      $total += $c['cnt'];
    }
    return [$total, $clusters, ($stop - $start) * 1000];
  }
Example #2
1
$datanya = $following_dao->getId();
//mendapatkan data id following
//var_dump($datanya);
// $column1 = "common_followers_count";
// $column2 = "common_friends_count";
$column1 = "similarity_followers";
$column2 = "similarity_friends";
$data = loadData($column1, $column2);
//mendapatkan data similarity dari tabel following
//var_dump($data);
//$data = array(array(0,0),array(0,2), array(2,0), array(2,2), array(5,0), array(5,2), array(7,0), array(7,2));
//$datanya = array("a","b","c","d","e","f","g","h");
$k = $_POST['k'];
//mendapatkan jumlah cluster yang telah diinput
//$k=2;
$results = kmeans($data, $k);
//melakukan clustering menggunakan k-means dan menghasilkan centroid dan cluster
//$result berupa array, terdiri dari 2 array: array pertama data centroid dan array kedua data cluster
//$jitter = addJitter($data);
// var_dump($data);
// echo "<br />";
// echo "<br />";
//var_dump($results);
// echo "<br />";
// var_dump($jitter);
//graph($data, $results, $jitter);
//echo count($data);
//echo count ($results);
$x = array();
$y = array();
//mendapatkan nilai array untuk similarity_followers sbg x dan similarity_following sbg y
Example #3
1
 function test_kmeans_arrays()
 {
     $input = array(array('age' => 1), array('age' => 3), array('age' => 2), array('age' => 5), array('age' => 6), array('age' => 2), array('age' => 3), array('age' => 1), array('age' => 30), array('age' => 36), array('age' => 45), array('age' => 3), array('age' => 15), array('age' => 17));
     $k = 3;
     $clusters = kmeans($input, $k, 'age');
     $expected = array(0 => array(0 => array('age' => 1, 'cluster_age' => 0, 'cluster_size_age' => 9), 1 => array('age' => 3, 'cluster_age' => 0, 'cluster_size_age' => 9), 2 => array('age' => 2, 'cluster_age' => 0, 'cluster_size_age' => 9), 3 => array('age' => 5, 'cluster_age' => 0, 'cluster_size_age' => 9), 4 => array('age' => 6, 'cluster_age' => 0, 'cluster_size_age' => 9), 5 => array('age' => 2, 'cluster_age' => 0, 'cluster_size_age' => 9), 6 => array('age' => 3, 'cluster_age' => 0, 'cluster_size_age' => 9), 7 => array('age' => 1, 'cluster_age' => 0, 'cluster_size_age' => 9), 11 => array('age' => 3, 'cluster_age' => 0, 'cluster_size_age' => 9)), 2 => array(8 => array('age' => 30, 'cluster_age' => 2, 'cluster_size_age' => 3), 9 => array('age' => 36, 'cluster_age' => 2, 'cluster_size_age' => 3), 10 => array('age' => 45, 'cluster_age' => 2, 'cluster_size_age' => 3)), 1 => array(12 => array('age' => 15, 'cluster_age' => 1, 'cluster_size_age' => 2), 13 => array('age' => 17, 'cluster_age' => 1, 'cluster_size_age' => 2)));
     $this->assertEquals($expected, $clusters);
 }
Example #4
0
{
    return abs($v1 - $v2);
}
/**
* Creates the initial positions for the given
* number of clusters and data.
* @param array $data
* @param int $k
*
* @return array
*/
function assign_initial_positions($data, $k)
{
    $min = min($data);
    $max = max($data);
    $int = ceil(abs($max - $min) / $k);
    while ($k-- > 0) {
        $cPositions[$k] = $min + $int * $k;
    }
    return $cPositions;
}
/**
* This code was created by Jose Fonseca (josefonseca@blip.pt) 
*
* Please feel free to use it in either commercial or non-comercial applications,
* and if you enjoy using it feel free to let us know or to comment on our
* technical blog at http://code.blip.pt
*/
echo "<pre>";
print_r(kmeans(array(1, 3, 2, 5, 6, 2, 3, 1, 30, 36, 45, 3, 15, 17), 3));
echo "</pre>";