K-Means
KELOMPOK V :
Amanda Adityaningrum
H 121 10 268
Adi Suwandi
H 121 10 288
Siswanto
H 121 10 901
H 121 10 903
PRODI STATISTIKA
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS HASANUDDIN
MAKASSAR
2013
BAB I
PENDAHULUAN
Data mining merupakan proses pengekstrakan informasi dari jumlah
kumpulan data yang besar dengan menggunakan algoritma dan tekhnik gambar dari
statistik, mesin pembelajaran dan sistem manajemen database. Data mining disebut
juga Knowledge-Discovery in Database (KDD) adalah sebuah proses secara otomatis
atas pencarian data di dalam sebuah memori yang amat besar dari data untuk
mengetahui
pola
dengan
menggunakan
alat
seperti
klasifikasi,
hubungan
BAB II
TINJAUAN PUSTAKA
II.1 Algoritma K-Means
Algoritma K-Means merupakan algoritma yang relatif sederhana untuk
mengklasifikasikan atau mengelompokkan sejumlah besar obyek dengan atribut
tertentu ke dalam kelompok-kelompok sebanyak K. K-Means salah satu metode data
clustering non hirarki yang berusaha mempartisi data yang ada ke dalam bentuk satu
atau lebih cluster atau kelompok. Algoritma K-Means pertama kali diperkenalkan
oleh MacQueen JB pada tahun 1976. Pada algoritma K-Means jumlah cluster K telah
ditentukan terlebih dahulu.
Kelebihan Algoritma K-Means diantaranya adalah mampu mengelompokkan
objek besar dan pencilan obyek dengan sangat cepat sehingga mempercepat proses
pengelompokan. Adapun kekurangan yang dimiliki oleh K-Means sangat sensitive
pada pembangkitan titik pusat awal secara random, hasil pengelompokan bersifat
tidak
unik
(selalu
berubah-ubah),
Algoritma
K-Means
walaupun
proses
y=( y 1 , y 2 , , y n ) adalah:
Dimana,
x : Titik data pertama,
y : Titik data kedua,
n : Jumlah karakteristik (attribut) dalam terminologi data mining,
d(x,y) : Euclidian distance yaitu jarak antara data pada titik x dan titik y
menggunakan kalkulasi matematika
4. Setiap data memilih centroids yang terdekat,
Jarak hasil perhitungan akan dilakukan perbandingan dan dipilih jarak
terdekat antara data dengan pusat cluster, jarak ini menunjukkan bahwa data
tersebut berada dalam satu kelompok dengan pusat cluster terdekat.
5. Tentukan posisi centroids yang baru dengan cara menghitung nilai rata-rata
dari data-data yang terletak pada centroid yang sama,
Pusat cluster yang baru digunakan untuk melakukan iterasi selanjutnya, jika
hasil yang didapatkan belum konvergen. Proses iterasi akan berhenti jika telah
memenuhi maksimum iterasi yang dimasukkan oleh User atau hasil yang
dicapai sudah konvergen (pusat cluster baru sama dengan pusat cluster lama).
6. Kembali ke langkah 3 jika posisi centroids baru dengan centroids yang lama
tidak sama.
Flowchart K-Means
II.2 Algoritma K-Medoids
Dalam metode K-medoid setiap cluster dipresentasikan dari sebuah objek di
dalam cluster yang disebut dengan medoid. Tujuannya adalah menemukan kelompok
K-cluster (jumlah cluster) diantara semua objek data di dalam sebuah kelompok data.
Clusternya dibangun dari hasil mencocokkan setiap objek data yang paling dekat
dengan cluster yang dianggap sebagai medoid sementara. Langkah-langkah
menghitung medoids, yaitu:
1. Pilih point k sebagai inisial centroid/nilai tengah (medoids) sebanyak k
cluster.
2. Cari semua point yang paling dekat dengan medoid, dengan cara menghitung
jarak vector antar dokumen. (menggunakan Euclidian distance)
3. Secara random, pilih point yang bukan medoid.
4. Hitung total distance
5. If TD baru < TD awal, tukar posisi medoid dengan medoids baru, jadilah
medoid yang baru.
6. ulangi langkah 2 - 5 sampai medoid tidak berubah.
Diberikan himpunan data sejumlah n titik P= {p1,p2,,pn} dalam ruang R2,
tujuan clustering K-medoid adalah untuk membagi titik-titik data ke dalam k cluster
sehingga fungsi objektif berikut minimal.
J(M)=J(m1m)=
p,m
d ( i)
p C i
i=1
Dalam J(C), mi merupakan titik perwakilan (representative point) bagi cluster Ci.
yang sangat erat. K-medoid memberikan karakteristik K cluster, dan setiap titik
dalam P menjadi milik medoid terdekat. Karena kita telah membatasi dalam ruang R 2,
maka fungsi jarak d biasanya adalah jarak Euclidean.
d(p,mi) =
p ( x )m
( x)
i
p ( y )m
( y)
i
BAB III
PEMBAHASAN
III.1 Contoh Kasus dengan Algoritma K-Means
Dari banyak siswa diambil 12 siswa sebagai contoh untuk penerapan
algoritma
k-means
Percobaan dilakukan
dengan
:12
Jumlah atribut : 8
Tabel III.1 merupakan data yang digunakan untuk melakukan percobaan perhitungan
manual.
No
1
2
3
4
5
6
NIS
20121
73
20121
74
20121
75
20121
76
20121
77
20121
78
Matemati
ka
Fisika
Kimia
Biolog
i
Sejara
h
Akunta
nsi
Sosiolo
gi
Geogr
af
Afgansyah
Denny
Sumargo
79
75
75
85
76
78
76
80
84
76
79
77
76
77
75
81
77
84
78
85
92
89
77
82
78
86
84
77
78
77
75
75
Putri Khadijah
82
82
81
91
90
82
79
91
Ika Inayah
75
75
70
82
75
75
79
75
Nama
7
8
9
10
11
12
20121
79
20121
80
20121
81
20121
82
20121
83
20121
84
Wa Ode Sofa
Z.
77
75
75
89
80
80
75
75
Budy Santoso
77
76
70
77
77
80
75
80
79
76
75
84
77
81
76
77
Ahsan Muhajir
Siswan
Sumargo
80
75
75
75
75
78
77
79
76
71
75
75
77
81
79
84
Anis Fadilah
80
77
75
78
78
77
77
80
Iterasi ke-1
1. Penentuan pusat awal cluster
Untuk penentuan awal di asumsikan:
Diambil data ke- 2 sebagai pusat Cluster Ke-1: (84, 76, 79, 77, 76, 77, 75, 81)
Diambil data ke- 5 sebagai pusat Cluster Ke-2: (82, 82, 81, 91, 90, 82, 79, 91)
Matemati
ka
Fisik
a
Kimi
a
Biolo
gi
Sejar
ah
Akunta
nsi
Sosiolo
gi
Geogr
af
79
75
75
85
76
78
76
80
84
76
79
77
76
77
75
81
77
84
78
85
92
89
77
82
78
86
84
77
78
77
75
75
82
82
81
91
90
82
79
91
75
75
70
82
75
75
79
75
77
75
75
89
80
80
75
75
77
76
70
77
77
80
75
80
79
76
75
84
77
81
76
77
80
75
75
75
75
78
77
79
76
71
75
75
77
81
79
84
80
77
75
78
78
77
77
80
C1
10.4
4
0
24.1
45
14.1
77
24.0
21
15.6
52
16.4
62
11.8
74
11.1
36
6.85
57
12.2
88
6.55
74
C2
21.7
26
24.0
21
14.5
6
26.0
38
0
28.8
1
22.1
36
26.2
3
22.4
72
27.0
92
25.8
46
22.9
78
Jarak
Terpendek
10.4403065
1
0
14.5602197
8
14.1774468
8
0
15.6524758
4
16.4620776
3
11.8743420
9
11.1355287
3
6.8556546
12.2882057
3
6.55743852
4
3. Pengelompokkan data
Jarak hasil perhitungan akan dilakukan perbandingan dan dipilih jarak terdekat antara
data dengan pusat cluster, jarak ini menunjukkan bahwa data tersebut berada dalam
satu kelompok dengan pusat cluster terdekat.
Berikut ini akan ditampilkan data matriks pengelompokkan group, nilai 1 berarti data
tersebut berada dalam group.
G1
No
1
C1
1
C2
0
2
3
4
5
6
7
8
9
10
11
12
1
0
1
0
1
1
1
1
1
1
1
0
1
0
1
0
0
0
0
0
0
0
Nama
Afgansyah
Denny
Sumargo
Matemati
ka
79
Fisik
a
75
Kimi
a
75
Biolo
gi
85
Sejar
ah
76
Akunta
nsi
78
Sosiolo
gi
76
Geogr
af
80
78
84
76
79
77
76
77
75
81
76
77
84
78
85
92
89
77
82
75
78
82
75
86
82
75
84
81
70
77
91
82
78
90
75
77
82
75
75
79
79
75
91
75
79
76
78
77
77
79
80
75
76
76
75
75
70
75
75
89
77
84
75
80
77
77
75
80
80
81
78
75
75
76
77
75
80
77
79
76
78
76
80
71
77
75
75
75
78
77
78
81
77
79
77
84
80
Iterasi Ke-2
5. Ulangi langkah ke 2 (kedua) hingga posisi data tidak mengalami perubahan.
Cluster baru yang ke-1
Cluster baru yang ke-2
78.5
79.5
76.2
83
75.3
79.5
79.9
88
76.9
91
Matemati
ka
Fisik
a
Kimi
a
Biolo
gi
Sejar
ah
Akunta
nsi
Sosiolo
gi
Geogr
af
79
75
75
85
76
78
76
80
84
76
79
77
76
77
75
81
77
84
78
85
92
89
77
82
78
86
84
77
78
77
75
75
82
82
81
91
90
82
79
91
78.4
85.5
C1
5.55
7
7.92
97
21.1
82
14.0
88
23.3
81
76.4
78
C2
20.5
18
22.9
56
7.28
01
23.1
3
7.28
01
78.6
86.5
Jarak
Terpendek
5.55697759
6
7.92969104
1
7.28010988
9
14.0882930
1
7.28010988
9
75
75
70
82
75
75
79
75
77
75
75
89
80
80
75
75
77
76
70
77
77
80
75
80
79
76
75
84
77
81
76
77
80
75
75
75
75
78
77
79
76
71
75
75
77
81
79
84
80
77
75
78
78
77
77
80
9.00
44
10.6
62
6.72
9
5.16
53
5.66
39
10.0
04
3.47
56
26.6
46
19.5
96
23.3
24
19.9
24.9
6
23.8
54
21
9.00444334
8
10.6620823
5
6.72904153
7
5.16526862
8
5.66392090
3
10.0039992
3.47562943
9
Langkah selanjutnya sama dengan langkah pada nomor 3 jarak hasil perhitungan akan
dilakukan perbandingan dan dipilih jarak terdekat antara data dengan pusat cluster,
jarak ini menunjukkan bahwa data tersebut berada dalam satu kelompok dengan pusat
cluster terdekat.
G2
No
1
2
3
4
5
6
7
8
9
10
11
12
C1
1
1
0
1
0
1
1
1
1
1
1
1
C2
0
0
1
0
1
0
0
0
0
0
0
0
X1
2
3
3
4
6
6
7
7
8
7
X2
6
4
8
7
2
4
3
4
5
6
Langkah 1
Misalkan kita asumsikan c1 = (3,4) and c2 = (7,4)
Jadi c1 dan c2 dipilih sebagai medoids.
Hitung jarak untuk memhubungkan setiap objek data yang terdekat dengan. Nilai
yang terdekat dengan medoids dapat dilihat pada table.
i
1
3
4
5
6
7
9
10
C1
3
3
3
3
3
3
3
3
4
4
4
4
4
4
4
4
Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
3
8
5
7
6
Cost
3
4
4
5
3
5
6
6
i
1
3
4
5
6
7
9
10
C2
7
7
7
7
7
7
7
7
4
4
4
4
4
4
4
4
Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
3
8
5
7
6
Cost
7
8
6
3
1
1
2
2
Langkah 2
,
Pilih satu cluster yang bukan medoids misalkan O =(7,3)
i
1
3
4
5
6
7
9
10
i
1
3
4
5
6
7
9
10
4
4
4
4
4
4
4
4
Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
4
8
5
7
6
Cost
3
4
4
5
3
4
6
6
3
3
3
3
3
3
3
3
Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
4
8
5
7
6
Cost
8
9
7
2
2
1
3
3
C1
3
3
3
3
3
3
3
3
C2
7
7
7
7
7
7
7
7
Karena Total cost baru > Total cost awal, maka tidak terjadi pertukaran posisi.
menyelesaikan kasus ini, kita dapat melakukan langkah-langkah seperti di bawah ini
pada spss:
Langkah 1 : Standardisasi/Transformasi
Mengingat data yang terkumpul mempunyai variabilitas satuan, maka perlu
dilakukan langkah standardisasi atau transformasi terhadap variabel yang relevan ke
bentuk zscore, sebagai berikut :
1. Input semua variabel pada Variable View, sedangkan semua data yang
diperoleh di input pada Data View pada program SPSS
Variable view
Data View
2. Setelah selesai meng-input, selanjutnya klik menu Analyze dan pilih sub
menu Descriptives Statistics lalu Descriptives
Minimum
Maximum
Mean
Std. Deviation
PENDAPATAN
100
99
53.26
25.594
PINJAMAN
100
1.0
9.8
5.469
1.9116
DN.HIBAH
100
10
5.46
2.702
KONSUMSI
100
31
100
68.99
19.261
PENDUDUK
100
25
98
60.60
19.162
Valid N (listwise)
100
Untuk selanjutnya, hasil z-score inilah yang akan dipakai pada dasar analisis
cluster.
Langkah 2 : Analisis Cluster
Sebagaimana dijelaskan sebelumnya bahwa metode K-Means Cluster ini
jumlah cluster ditentukan sendiri. Perlu diingat bahwa bahan analisis bukan lagi data
asli, namun data hasil transformasi/standardisasi. Berikut ini langkah-langkah yang
harus dilakukan dalam menggunakan metode K-Means Cluster dalam aplikasi
program SPSS.
1. Dari tampilan data yang tertera (hasil standardisasi/transformasi), buka menu
Analyze, lalu pilih sub menu Classify dan pilih K-Means Cluster
hingga tampak pada layar sebagai berikut :
3. Kemudian klik mouse pada kotak Save hingga muncul tampilan seperti
berikut ini :
.53684
-.24459
-1.61208
Zscore(PINJAMAN)
2.00412
-.97773
1.48099
Zscore(DN.HIBAH)
1.31009
-1.28048
-1.65056
Zscore(KONSUMSI)
-.41482
-1.92043
1.50612
Zscore(PENDUDUK)
1.95175
-1.17940
-1.07503
dimension
2.230
1.976
2.083
.096
.129
.119
.000
.067
.082
.000
.062
.072
.110
.000
.137
.103
.053
.075
.102
.135
.000
.000
.000
.000
antar pusat cluster yang terjadi dari hasil iterasi adalah 4.450. Adapun hasil akhir dari
proses clustering digambarkan berikut ini :
Final Cluster Centers
Cluster
1
Zscore(PENDAPATAN)
.28738
.22301
-.60404
Zscore(PINJAMAN)
.39180
-.60817
.11910
Zscore(DN.HIBAH)
.84511
-.38512
-.70069
Zscore(KONSUMSI)
.03247
-.78159
.76544
Zscore(PENDUDUK)
.30857
-.31244
-.07828
Output Final Cluster Centers tersebut diatas masih terkait dengan proses
standardisasi data sebelumnya, yang mengacu pada z-score dengan ketentuan sebagai
berikut :
Cluster-1
Dalam cluster-1 ini berisikan kota-kota yang mempunyai jumlah pendapatan
kota, jumlah pinjaman, jumlah dana hibah, jumlah konsumsi, dan jumlah
penduduk yang lebih dari rata-rata populasi kota yang diteliti. Hal ini terbukti
dari nilai positif (+) yang terdapat pada tabel Final Cluster Centers dalam
keseluruhan variabel. Dengan demikian, dapat diduga bahwa cluster-1 ini
Cluster-3
Dan karakteristik kota yang masuk dalam pengelompokan cluster-3 yaitu
memiliki rata-rata jumlah pinjaman dan jumlah konsumsi yang kurang dari
rata-rata populasi kota yang diteliti. Untuk instrumen variabel yang lain kotakota di cluster-3 ini berada di atas ratarata populasi. Dengan demikian, dapat
diduga sekumpulan kota-kota menengah berada pada cluster-3.
Tahapan selanjutnya yang perlu dilakukan yaitu melihat perbedaan variabel
pada cluster yang terbentuk. Dalam hal ini dapat dilihat dari nilai F dan nilai
probabilitas (sig) masing-masing variabel, seperti tampak dalam table berikut.
ANOVA
Cluster
Mean Square
Error
df
Mean Square
df
Sig.
Zscore(PENDAPATAN)
7.854
.859
97
9.147
.000
Zscore(PINJAMAN)
8.939
.836
97
10.689
.000
Zscore(DN.HIBAH)
23.591
.534
97
44.159
.000
Zscore(KONSUMSI)
18.278
.644
97
28.392
.000
Zscore(PENDUDUK)
3.462
.949
97
3.647
.030
The F tests should be used only for descriptive purposes because the clusters have been chosen to maximize
the differences among cases in different clusters. The observed significance levels are not corrected for this and
thus cannot be interpreted as tests of the hypothesis that the cluster means are equal.
Perlu di ingat bahwa Semakin besar nilai F dan (sig < 0,05), maka semakin
besar perbedaan variable pada cluster yang terbentuk. Dengan demikian hasil
cluster yang didapat dalam penelitian ini bahwa untuk instrumen jumlah dana hibah
kota yang paling menunjukkan adanya perbedaan diantara kota-kota pada ketiga
cluster yang terbentuk. Hal ini dengan ditunjukkannya nilai F = 44.159 dan sig =
0,000.
Selanjutnya untuk mengetahui jumlah anggota masing-masing cluster yang
terbentuk dapat dilihat pada tabel output berikut ini :
Valid
Missing
39.000
31.000
30.000
100.000
12.000
<?php
class objek {
private $cluster = null;
var $data = array();
function __construct($dt) {
$this->data = $dt;
}
public function setCluster($cls){
$jml = 0;
$tmpCluster = 0;
$c = null;
for ($i=0;$i<count($cls);$i++){
$jml = 0;
for ($j=0;$j<count($this->data);$j++){
$jml += pow(($this->data[$j] $cls[$i][$j]),2);
}
$tmpC = sqrt($jml);
if ($c==null){
$c = $tmpC;
$tmpCluster = $i;
}
if ($tmpC < $c){
$c = $tmpC;
$tmpCluster = $i;
}
}
$this->cluster = $tmpCluster;
}
public function getCluster(){
return $this->cluster;
}
}
?>
<?php
class ClusteringKMean {
private $objek = array();
private $centroidCluster = null;
private $cekObjCluster = null;
public function __construct($obj,$cnt) {
$this->centroidCluster = $cnt;
for ($i=0;$i<count($obj);$i++){
$this->objek[$i] = new objek($obj[$i]);
$this->cekObjCluster[$i] = 0;
}
}
public function setClusterObjek($itr){
echo "<table width='500' cellpadding=0 cellspacing=0>
<tr><th colspan='100'>ITERASI ".$itr."</th></tr>
<tr><th>Objek</th>";
for ($i=0;$i<count($this->objek[0]->data);$i++){
echo "<th>Data ".($i+1)."</th>";
}
for ($j=0;$j<count($this->centroidCluster);$j++){
echo "<th>Cluster ".($j+1)."</th>";
}
echo "</tr>";
for ($i=0;$i<count($this->objek);$i++){
$this->objek[$i]->setCluster($this->centroidCluster);
echo "<tr><td>Objek ".($i+1)."</td>";
for ($j=0;$j<count($this->objek[$i]->data);$j++)
echo "<td>".$this->objek[$i]->data[$j]."</td>";
for ($j=0;$j<count($this->centroidCluster);$j++){
if ($j == $this->objek[$i]->getCluster())
else
echo "<td>X</td>";
echo "<td> </td>";
}
echo "</tr>";
}
echo "</table><br><br>";
$cek = TRUE;
for ($i=0;$i<count($this->cekObjCluster);$i++){
if ($this->cekObjCluster[$i]!=$this->objek[$i]>getCluster()){
$cek = FALSE;
break;
}
}
if ((!($cek))&&($itr<20)){
for ($i=0;$i<count($this->cekObjCluster);$i++){
$this->cekObjCluster[$i] = $this->objek[$i]>getCluster();
}
$this->setCentroidCluster();
$this->setClusterObjek($itr+1);
}else{
for ($i=0;$i<count($this->centroidCluster);$i++){
echo "Cluster ".($i+1)." -> ";
for ($j=0;$j<count($this>centroidCluster[$i]);$j++){
echo $this->centroidCluster[$i]
[$j]." ";
}
echo "<br>";
}
}
}
private function setCentroidCluster(){
for ($i=0;$i<count($this->centroidCluster);$i++){
$countObj = 0;
$x = array();
for ($j=0;$j<count($this->objek);$j++){
if ($this->objek[$j]->getCluster()==$i){
for ($k=0;$k<count($this->objek[$j]->data);
$k++){
$x[$k] += $this->objek[$j]->data[$k];
}
$countObj++;
}
}
for ($k=0;$k<count($this->centroidCluster[$i]);$k++){
if ($countObj>0)
$this->centroidCluster[$i]
[$k] = $x[$k]/$countObj;
else{
echo "<font
color='red'>Terdapat ketidak sesuai Nilai Awal Cluster</font><br>";
break;
}
}
}
}
}
?>
class ClusteringKMedoid {
private $objek = array();
private $centroidCluster = null;
private $cekObjCluster = null;
public function __construct($obj,$cnt) {
$this->centroidCluster = $cnt;
for ($i=0;$i<count($obj);$i++){
$this->objek[$i] = new objek($obj[$i]);
$this->cekObjCluster[$i] = 0;
}
}
public function setClusterObjek($itr){
echo "<table width='500' cellpadding=0 cellspacing=0>
<tr><th colspan='100'>ITERASI ".$itr."</th></tr>
<tr><th>Objek</th>";
for ($i=0;$i<count($this->objek[0]->data);$i++){
echo "<th>Data ".($i+1)."</th>";
}
for ($j=0;$j<count($this->centroidCluster);$j++){
echo "<th>Cluster ".($j+1)."</th>";
}
echo "</tr>";
for ($i=0;$i<count($this->objek);$i++){
$this->objek[$i]->setCluster($this->centroidCluster);
echo "<tr><td>Objek ".($i+1)."</td>";
for ($j=0;$j<count($this->objek[$i]->data);$j++)
echo "<td>".$this->objek[$i]->data[$j]."</td>";
for ($j=0;$j<count($this->centroidCluster);$j++){
if ($j == $this->objek[$i]->getCluster())
echo "<td>X</td>";
else echo "<td> </td>";
}
echo "</tr>";
}
echo "</table><br><br>";
$cek = TRUE;
for ($i=0;$i<count($this->cekObjCluster);$i++){
if ($this->cekObjCluster[$i]!=$this->objek[$i]>getCluster()){
$cek = FALSE;
break;
}
}
if ((!($cek))&&($itr<20)){
for ($i=0;$i<count($this->cekObjCluster);$i++){
$this->cekObjCluster[$i] = $this->objek[$i]>getCluster();
}
$this->setCentroidCluster();
$this->setClusterObjek($itr+1);
}else{
for ($i=0;$i<count($this->centroidCluster);$i++){
echo "Cluster ".($i+1)." -> ";
for ($j=0;$j<count($this>centroidCluster[$i]);$j++){
echo $this->centroidCluster[$i]
[$j]." ";
}
echo "<br>";
}
}
}
private function setCentroidCluster(){
for ($i=0;$i<count($this->centroidCluster);$i++){
$countObj = 0;
$x = array(array());
for ($j=0;$j<count($this->objek);$j++){
if ($this->objek[$j]->getCluster()==$i){
for ($k=0;$k<count($this->objek[$j]->data);
$k++){
$x[$k][] = $this->objek[$j]>data[$k];
}
$countObj++;
}
}
for ($k=0;$k<count($this->centroidCluster[$i]);$k++){
sort($x[$k]);
if ($countObj>0){
if (((count($x[$k]))%2)==0){
$tmp = (($x[$k]
[(count($x[$k]))/2])+($x[$k][((count($x[$k]))/2)+1]))/2;
}else{
$tmp = ($x[$k]
[ceil((count($x[$k]))/2)]);
}
$this->centroidCluster[$i]
[$k] = $tmp;
}
}
}
}
}
?>
<html>
<head>
<style>
body{
font-size:14px;
font-family:tahoma;
font-weight:bold;
}
table{
border : 1px solid #000;
text-align : center;
font-family:tahoma;
font-size:12px;
}
table tr th{
border : 1px solid #000;
background : gray;
color : #FFF;
padding:3px;
}
table tr td{
border : 1px solid #000;
}
</style>
</head>
<body>
<?php
include "objek.php";
include "ClusteringKMean.php";
include "ClusteringKMenoid.php";
for ($i=0;$i<count($_POST[objek]);$i++){
$obj = $_POST[objek];
$data = explode(",",$obj[$i]);
for ($j=0;$j<count($data);$j++){
$objek[$i][$j] = $data[$j];
}
}
for ($i=0;$i<count($_POST[cluster]);$i++){
$cls = $_POST[cluster];
$data = explode(",",$cls[$i]);
for ($j=0;$j<count($data);$j++){
$centroid[$i][$j] = $data[$j];
}
}
/* $objek = array(array(22.21,11.64),
array(43.25,8.95),
array(19.71,10.93),
array(21.05,10.38),
array(17.93,12.85),
array(17.72,12.00),
array(18.71,11.53),
array(25.86,9.33),
array(19.15,11.80),
array(18.42,11.20),
array(22.94,10.60),
array(26.89,10.44),
array(24.91,10.63),
array(22.99,11.47),
array(26.81,9.17),
array(19.14,12.11),
array(21.09,10.67),
array(18.71,12.36),
array(20.58,10.80),
array(27.66,9.94));
$centroid = array(array(20,9),
array(23,10),
array(27,11));*/
//K-MEAN
echo "<div style='width:500px;float:left;'>
<div style='width:500px;text-align:center;paddingbottom:30px;'>K- MEAN</div>";
$clustering = new ClusteringKMean($objek, $centroid);
$clustering->setClusterObjek(1);
echo "</div>";
//K-MEAN
echo "<div style='padding-left:50px;width:500px;float:left;'>
<div style='width:500px;text-align:center;paddingbottom:30px;'>K- MENOID</div>";
$clustering = new ClusteringKMenoid($objek, $centroid);
$clustering->setClusterObjek(1);
echo "</div>";
?>
</body>
</html>
<html>
<head>
<style>
body{
font-size:14px;
font-family:tahoma;
font-weight:bold;
}
button{
background: gray;
color : #FFF;
font-weight:bold;
padding:2 5 2 5px;
margin:2px;
}
table{
border : 1px solid #000;
text-align : center;
font-family:tahoma;
font-size:12px;
}
table tr th{
border : 1px solid #000;
background : gray;
color : #FFF;
padding:3px;
}
table tr td{
border : 1px solid #000;
}
</style>
<SCRIPT language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(1);
var element1 = document.createElement("input");
element1.type = "text";
cell1.appendChild(element1);
}
function Add(id){
var table=document.getElementById(id);
var clone=table.getElementsByTagName('Tbody')
[1].cloneNode(true);
table.appendChild(clone);
var rowCount = table.rows.length;
var row = table.rows[rowCount];
table.rows[rowCount-1].cells[0].innerHTML = rowCount-1;
}
function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
if (rowCount>2){
table.deleteRow(rowCount-1);
rowCount--;
}
}catch(e) {
alert(e);
}
}
</SCRIPT>
</head>
<body>
<div style="width:950;text-align:center;font-weight:bold;paddingbottom:30px;">CLUSTERING DATA</div>
BAB IV
KESIMPULAN
1. K-Means salah satu metode data clustering non hirarki yang berusaha
mempartisi data yang ada ke dalam bentuk satu atau lebih cluster atau
kelompok.
2. Kelebihan Algoritma K-Means diantaranya adalah mampu mengelompokkan
objek besar dan pencilan obyek dengan sangat cepat sehingga mempercepat
proses pengelompokan.
3. Kekurangan Algoritma K-Means yaitu. sangat sensitive pada pembangkitan
titik pusat awal secara random, hasil pengelompokan bersifat tidak unik
(selalu berubah-ubah) dan proses pengerjaannya cepat tetapi keakuratannya
tidak dijamin.
4. K-medoid adalah metode dimana setiap clusternya dipresentasikan dari
sebuah objek di dalam cluster yang disebut dengan medoid.
5. Kelebihan Algoritma K-Medoid adalah untuk menemukan kelompok Kcluster (jumlah cluster) diantara semua objek data di dalam sebuah kelompok
data.
6. Kekurangan Algoritma K-Medoid adalah algoritma ini menghasilkan
hard cluster, yaitu masing-masing titik secara unik diberikan
satu dan hanya satu cluster.
DAFTAR PUSTAKA
http://senosuke.wordpress.com
http://ronyld72.wordpress.com
http://rahmanhidayat3.blogspot.com
http://en.wikipedia.org