Author : Panji Satrio Kurniawan
Halo data enthusiast kali ini kita akan membahas tentang analisis K-Mean Clustering dengan studi kasus analisis Driver. Nah sebelumnya kita perlu tahu dulu K-Means Clusering itu apa sih?
K-Means Clustering merupakan teknik Clustering yang sering digunakan dan paling sederhana. K-Means Clustering mengelompokkan data sesuai dengan karakteristiknya menggunakan jarak objek dengan titik tengah yang paling dekat Jika jarak dua obyek atau data titik cukup dekat, maka dua obyek itu mirip. Semakin dekat berarti semakin tinggi kemiripannya. Semakin tinggi nilai jarak, semakin tinggi ketidakmiripannya (Santosa, 2007).
Yuk sekarang kita buat tutorialnya. Let’s check this out !!!
Langkah pertama yang kita lakukan yaitu memanggil library yang akan digunakan:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
Kemudian inputkan data csv kita dengan perintah:
data = pd.read_csv("data.csv", delimiter=";")
data.tail()
Untuk megetahui penebaran datanya kita buat scatterplotnya dulu yuk. dengan perintah
# sns.scatterplot()
plt.scatter(x="Distance_Feature", y = "Speeding_Feature", data=data)
plt.xlabel("Distance Feature")
plt.ylabel("Speeding Feature")plt.show()
Berikut output dari perintah di atas, didapatkan penyebaran data driver sesuai dengan speeding feature dan distance feature
Untuk memudahkan analisis lebih baik untuk mengubah data ke bentuk list dengan perintah berikut
f1 = data["Distance_Feature"].values
f2 = data["Speeding_Feature"].values
X = list(zip(f1,f2))
X = np.array(X)
Sebelum kita cluster data kita, lebih baik untuk mencari jumlah cluster optimal. jumlah cluster di sini di simbolkan dengan k. Berikut adalah syntax yang praktikan terapkan untuk metode Siku atau metode elbow.
distortions = []
K = range(1,10)
for k in K:
kmeanModel = KMeans(n_clusters=k).fit(X)
kmeanModel.fit(X)
distortions.append(sum(np.min(cdist(X, kmeanModel.cluster_centers_, 'euclidean'), axis=1)) / X.shape[0])
# Plot the elbow
plt.plot(K, distortions, 'bx-')
plt.xlabel('k')
plt.ylabel('Distortion')
plt.title('The Elbow Method showing the optimal k')
plt.show()
Didapatkan output berikut
Dari gambar di atas jumlah cluster yang optimal yaitu grafik yang berbentuk siku. Jika kita lihat dari gambar titik siku adalah 2 tetapi dalam kasus ini itu hanya tes pertama sehingga titik siku yang baik yaitu 4 karena berhenti menurun tajam dan tidak lagi layak overhead. Jika ragu lebih baik untuk menambahkan metode pengoptimalan lain untuk membandingkan.
Kemudian kita lihat penyebaran 4 cluster-nya
plt.subplot(121)
plt.scatter(X[:, 0], X[:, 1], c=kmean_2)
plt.title("Incorrect Number of Blobs")
plt.xlabel("Distance Feature")
plt.ylabel("Speeding Feature")
Didapatkan hasil sebagai berikut :
Cluster 1 (warna hijau) : Jarak pendek, kecepatan rendah
Cluster 2 (warna ungu) : Jarak pendek, kecepatan sedang
Cluster 3 (warna biru) : Jarak jauh, kecepatan rendah
Cluster 4 (warna kuning) : Jarak jauh, kecepatan tinggi
Dan buat temen temen yang mau tanya-tanya atau butuh pembutan project Artificial Intelligence untuk skripsi/tesis/disertasi atau umum seputar Deep Learning/Machine Learning/Statistics bisa hubungi WA : 087783208353 atau bisa langsung kunjungi web kami di DISINI.