Skip to content

Instantly share code, notes, and snippets.

@fatkulnurk
Created November 29, 2018 17:29
Show Gist options
  • Save fatkulnurk/5b5f71b727b8c11bc80316d4f55834a8 to your computer and use it in GitHub Desktop.
Save fatkulnurk/5b5f71b727b8c11bc80316d4f55834a8 to your computer and use it in GitHub Desktop.
<?php
//error_reporting(E_ERROR | E_PARSE);
include "dataset.php";
$k = 10;
$data = $data;
// print_r($data);
$n = count($data);
$dimensi = count($data['0']);
//die(var_dump($dimensi));
$newcentroid[$k][$dimensi] = doubleval(array());
for($i=0;$i<$k;$i++){
for ($j=0; $j<$dimensi;$j++){
$newcentroid[$i][$j] = rand(10,150);
}
}
echo "<hr>New entroid:<br>";
print_r($newcentroid);
echo "<hr>";
$jarak[$k] = doubleval(array());
$cluster[$n] = doubleval(array());
//die(var_dump($cluster));
$nmember[$k] = doubleval(array());
$centroids[$k][$dimensi] = doubleval(array());
$selisih = 0;
$iterasi = 0;
do{
$iterasi++;
for ($i = 0; $i < $k; $i++){
for ($j=0;$j<$dimensi;$j++){
$centroids[$i][$j] = $newcentroid[$i][$j];
$newcentroid[$i][$j]=0;
}
}
for ($i=0;$i<$k;$i++){
$nmember[$i] = 0;
}
for ($i=0;$i<$n;$i++){
$indexmin = -1;
$nilaimin = doubleval(1000000);
for ($j=0; $j<$k ; $j++){
$jarak[$j] = 0;
for ($p=0;$p<$dimensi;$p++){
$tempo = $data[$i][$p] - $centroids[$j][$p];
$jarak[$j] += pow($tempo,2);
// $jarak[$j] += $tempo * $tempo;
}
$jarak[$j] = sqrt($jarak[$j]);
// echo "<h1>Jarak</h1>";
print_r($jarak);
if ($jarak[$j] < $nilaimin){
$indexmin = $j;
$nilaimin = $jarak[$j];
}
}
$cluster[$i] = $indexmin;
// die(print_r($cluster));
// $nmember[$cluster[$i]] += 1;
if ( ! isset($nmember[$cluster[$i]])) {
$nmember[$cluster[$i]] = null;
}
$nmember[$cluster[$i]] += 1;
echo "<hr> N MEMBER :<br>";
print_r($nmember);
// die(print_r($nmember));
echo "<hr> newcentroid :<br>";
// die(print_r($newcentroid));
// die(print_r($data));
// $_dump = $newcentroid[1][0] + $data[1][0];
// $_dump = $newcentroid[$cluster[$i]][1] + $data[$i][1];
// die(var_dump($_dump));
for ($p=0;$p<$dimensi;$p++){
$newcentroid[$cluster[$i]][$p] += $data[$i][$p];
}
echo "<hr> New centroid :<br/>";
print_r($newcentroid);
}
$selisih = 0;
for ($i = 0; $i < $k;$i++){
for ($p=0; $p<$dimensi; $p++){
$newcentroid[$i][$p] /= $nmember[$i];
// $newcentroid[$i][$p] = @($newcentroid[$i][$p] / $nmember[$i]);
$selisih += abs($newcentroid[$i][$p] - $centroids[$i][$p]);
}
}
print_r($newcentroid);
// die(print_r($newcentroid));
die(print_r($selisih));
}while($selisih > doubleval(0.0001));
//die(print_r($selisih));
echo "<hr>";
for ($i=0;$i<$n;$i++){
echo " ". $cluster[$i];
}
echo "<hr>";
echo "jumlah iterasi : ".$iterasi;
echo "<hr>";
print_r($data);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment