ANALISIS CLUSTERING K-MEANS
Sebelum kita melangkah ke analisis clustering k-means terlebih dahulu kita harus mengetahui apa itu analisis clustering ?
Teknik analisa data yang bertujuan untuk mengelompokan individu atau objek ke dalam beberapa kelompok yang memiliki sifat berbeda antar kelompok sehingga individu atau objek yang terletak di dalam satu kelompok akan mempunyai sifat relatif homogen
Tujuan
- Mengelompokkan objek-objek berdasarkan kesamaan karakteristik di antara objek-objek tersebut.
- Objek bisa berupa produk (barang dan jasa), benda (tumbuhan atau lainnya), serta orang (responden, konsumen atau yang lain).
Ciri-ciri cluster yang baik:
- Homogenitas (kesamaan) yang tinggi antar anggota dalam satu cluster (within-cluster).
- Heterogenitas (perbedaan) yang tinggi antar cluster yang satu dengan cluster yang lainnya (between-cluster).
Metode analisis clustering itu sendiri terbagi menjadi 2 yaitu :
- Hirarki
memulai pengelompokan dengan dua atau lebih obyek yang mempunyai kesamaan paling dekat. Terdapat tingkatan (hirarki) yang jelas antar obyek, dari yang paling mirip hingga yang paling tidak mirip. Tools → dendogram

Metode hirarki itu sendiri terbagi lagi menjadi beberapa bagian yaitu :
- Agglomerative
- Divisive
- Non Hirarki
dimulai dengan menentukan terlebih dahulu jumlah cluster yang diinginkan (dua,tiga, atau yang lain). Setelah jumlah cluster ditentukan, maka proses cluster dilakukan dengan tanpa mengikuti proses hirarki . Metode ini biasa disebut “K-Means Cluster”.
Langkah langkah melakukan analisis K-Means Cluster
- Tentukan k sebagai jumlah cluster yang ingin dibentuk
- Bangkitkan k centroids (titik pusat cluster) awal secara random
- Hitung jarak setiap data ke masing-masing centroids
- Kelompokan setiap data ke centroids terdekat
- Tentukan posisi centroids baru dengan cara menghitung nilai rata-rata dari data-data yang terletak pada centroids yang sama
- Proses ini berlangsung secara iteratif sampai tidak ada lagi perubahan dalam pengelompokkan
Kelebihan dan kekurangan dari metode hirarki dan Non Hirarki
1. Hirarki
Kelebihan
a. Menunjukkan keterhubungan
b. Memahami data lebih dalam
c.Tidak membutuhkan input variabel jumlah kluster
d. Banyak metode yang bisa digunakan
Kekurangan
a. Dibutuhkan proses komputasi yang tinggi (dan waktu yang lebih lama) untuk menangani data dalam jumlah besar.
2. Non Hirarki
Kelebihan
a. Waktu pemrosesan relatif cepat
b. Dapat digunakan untuk menganalisis sampel dengan ukuran besar
c. Algoritma mudah diterapkan
Kekurangan
a. Penentuan jumlah cluster:Perbedaan jumlah klaster dapat memberikan hasil yang berbeda.
b. Sensitif terhadap pencilan atau outlier. Solusi untuk masalah ini adalah dengan menghapus outlier dengan hati-hati dan berbagai pertimbangan.
Link syntax yang digunakan dalam menganallisis clustering K-Means
from sklearn.cluster import Kmeans
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from matplotlib import pyplot as plt
%matplotlib inline df = pd.read_csv(“income.csv”)
df.head()
plt.scatter(df.Age,df[‘Income($)’])
plt.xlabel(‘Age’)
plt.ylabel(‘Income($)’)
km = KMeans(n_clusters=3)
y_predicted = km.fit_predict(df[[‘Age’,’Income($)’]])
y_predicted
df[‘cluster’]=y_predicted
df.head()
km.cluster_centers_
df1 = df[df.cluster==0]
df2 = df[df.cluster==1]
df3=df[df.cluster==2]
plt.scatter(df1.Age,df1[‘Income($)’],color=‘green’)
plt.scatter(df2.Age,df2[‘Income($)’],color=‘red’)
plt.scatter(df3.Age,df3[‘Income($)’],color=‘black’)
plt.scatter(km.cluster_centers_[:,0],km.cluster_centers_[:,1],color=‘purple’,
marker=‘*’,label=‘centroid’)
plt.xlabel(‘Age’)
plt.ylabel(‘Income ($)’)
plt.legend()
scaler = MinMaxScaler()
scaler.fit(df[[‘Income($)’]])
df[‘Income($)’] = scaler.transform(df[[‘Income($)’]])
scaler.fit(df[[‘Age’]])
df[‘Age’] = scaler.transform(df[[‘Age’]])
df.head()
plt.scatter(df.Age,df[‘Income($)’])
km = KMeans(n_clusters=3)
y_predicted = km.fit_predict(df[[‘Age’,’Income($)’]])
y_predicted
df[‘cluster’]=y_predicted
df.head()
km.cluster_centers_
df1 = df[df.cluster==0]
df2 = df[df.cluster==1]
df3 = df[df.cluster==2]
plt.scatter(df1.Age,df1[‘Income($)’],color=‘green’)
plt.scatter(df2.Age,df2[‘Income($)’],color=‘red’)
plt.scatter(df3.Age,df3[‘Income($)’],color=‘black’)
plt.scatter(km.cluster_centers_[:,0],km.cluster_centers_[:,1],color=‘purple’,
marker=‘*’,label=‘centroid’)
plt.legend()
sse = [ ]
k_rng = range(1,10)
for k in k_rng:
km = KMeans(n_clusters=k)
km.fit(df[[‘Age’,’Income($)’]])
sse.append(km.inertia_)
plt.xlabel(‘K’)
plt.ylabel(‘Sum of squared error’)
plt.plot(k_rng,sse)