Prose K-Means Clustering terdiri dari
- penentuan nilai k
- memilih posisi centroid awal
- menghitung jarak masing-masing data point ke centroid
- ulangi perhitungan nilai centroid
nilai k disini merupakan jumlah cluster yang digunakan, berbeda dengan hyrarchical clustering yang jumlah clusternya ditentukan secara otomatis berdasarkan data, sedangkan k-means clustering tergolong flat clustering yang jumlah kelompoknya ditentukan terlebih dahulu.
centroid ditentukan dengan menghitung titik pusat dari setiap cluster yang ada.
jarak dati tiak-tiap ccentroid akan digunakan untuk oenentuan cluster dari suatu data point.
untuk mendapatkan cluster yang lebih tepat mesin akan secara berulangkali menentukan niali centroid dan menghitung jarak sehingga pada akhirnya semua data terkelompokan.
Untuk mempraktekannya digunakan contoh dataset berikut Download
data tersebut merupakan data kecepatan dan beban yang dimiliki oleh suatu truck.
untuk proses awal dilakukan import library
"import Libraries"
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('ggplot')
import graphviz
from sklearn import cluster
sns.set()
Selanjutnya pemanggilan data dengan memastikan file sudah terletak pada directory yang benar sebelumnya
df = pd.read_csv('DataSpeedLoadTruck.csv')
untuk melihat persebaran data dapat digunakan
speed = df['Vehicle_speed_sensor'].values
Engine_Load = df['Engine_Load'].values
X = np.array(list(zip(speed, Engine_Load)))
plt.scatter(speed, Engine_Load, s=7)
plt.xlabel('speed')
plt.ylabel('Engine load')
sehingga dihasilkan

dilakukan inisialisasi ulang
df_2_vars = df
data = df_2_vars.values
data
sehingga data berubah format menjadi data array
selanjutnya melakukan clustering atau proses fitting dengan menentukan jumlah clusternya, disini k merupakan jumlah cluster
k = 2
kmeans = cluster.KMeans(n_clusters = k)
kmeans.fit(data)
labels = kmeans.predict(data)
labels
Centroid = kmeans.cluster_centers_
C_x = Centroid[:,0]
C_y = Centroid[:,1]
Centroid
plt.xlabel('speed')
plt.ylabel('Engine load')
plt.scatter(speed, Engine_Load,c=labels, s=7, cmap = plt.cm.cool)
plt.scatter(C_x,C_y, marker = '*' , s = 200 , c = 'g')
