Memahami K-Means Clustering
Halo Manteman, Coretan kali ini akan membahas apa sih K-Means Clustering.
Jadi ngelanjutin nih Coretan Kemarin yang ngenalin sedikit apasih Machine Learning itu bisa dibaca ulang kok disini https://medium.com/@iamraldygh/mengenal-sedikit-machine-learning-a28178977d93. Oke di coretan sebelumnya mengenai machine Learning banyak sekali pembahasannya, tapi yang ingin kita bahas disini adalah K-Means Clustering.
What is K-Means Clustering
K-Means Clustering adalah salah satu Algoritma Unsupervised Machine Learning yang simple dan paling populer digunakan oleh data scientist,
Tujuan dari K-Means itu simple : Adalah untuk mengumpulkan data bersama dan menemukan underlying patterns. Jadi untuk mencapai tujuan ini, K Means mencari jumlah fix (k) dari cluster dalam sebuah dataset.
Clusternya mengacu pada kumpulan titik data yang dikumpulkan bersama karena memiliki kemiripan.
Kita akan menentukan jumlah k , yang dimana berarti jumlah dari centroids yang kita inginkan dalam datasets. Ohiya, centroids itu adalah titik tengah dari sebuah cluster ya, atau bisa dimisalkan pusat magnet yang mengumpulkan data dalam sebuah cluster. ya semacam itu lah,
Nah, dengan kata lain Algoritma dari K-Means itu menentukan jumlah dari k dari centroids , lalu mengambil data yang memiliki kemiripan dengan centroids terdekat.
Kata ‘means’ dalam K-Means itu dalah rata-rata dari data yang berada pada sekitar centroids.
Bagaimana Algoritma K-Means Bekerja ?
Untuk memproses Learning data , Algoritma dari K-Means dimulai dengan pengelompokkan awal data, penelompokkan data dimulai dengan mengidentifikasikan data yang memiliki kemiripan, nah dari sini yang digunakan titik awal dari cluster, lalu dilakukan pengulangan atau iterasi secara repetitive untuk mengoptimasi posisi dari centroids itu sendiri.
Proses ini akan berhenti ketika :
- Centroidsnya sudah stabil atau sudah optimal, jadi tidak akan ada perubahan lagi karena pengclusteran sudah sukses.
- Atau, jumlah iterasi yang kita inginkan sudah dicapai.
Teori mulu, Contohnya mana ?
Oke oke, kalo kebanyakan teori gak dipraktekan mulu penulis juga rada pusing, ntar kaya sistem pendidikan di indonesia lagi teori teori aplikasi gada :(
Hehe, lupakan. Mari kita lihat bagaimana Algoritma K-Means bekerja dengan menggunakan bahasa Ular.(iya iya, Python)
Kita akan menggunakan Scikit-learn library dan data random utnuk mengilustrasikan oenjelasan dari K-Means Clustering secara sederhana.
Langkah 1 : Import Library
Langkah langkah awal adalah mengimport dulu library yang kita perlukan , library yang digunakakn ialah
- Pandas untuk membaca dan menulis spreadsheetnya
- numpy untuk memproses data secara efficient
- Matplotlib untuk visualisasi datanya
import pandas as pd
import numpy as npi
mport matplotlib.pyplot as plt
from sklearn.cluster import KMeans
%matplotlib inline
Langkah 2 : Memunculkan data random
Kita bakal memunculkan data random denga 2 dimensi yang berbeda, positif sama negatif dengan banyak data keseluruhan 100 dibagi masing masing 50 aja biar ga ribet. Ini kodingannya
X= -2 * np.random.rand(100,2)X1 = 1 + 2 * np.random.rand(50,2)X[50:100, :] = X1plt.scatter(X[ : , 0], X[ :, 1], s = 50, c = "r")plt.show()
Ini tampilan data nya.
Langkah 3 : Menggunakan Skicit Learn
Kita akan menggunakan Fungsi Skicit Learn untuk memproses data yang sudah kita generated tadi, karena kita menggunakan K-Means maka fungsi yang diambil dari Skicit Learn adalah K-Means, silahkan kodingannya kakaa..
from sklearn.cluster import KMeans
Kmean = KMeans(n_clusters=2)
Kmean.fit(X)
Untuk contoh ini kita memberikan cluster sebanyak 2 untuk k means, ga harus loh ya, tapi tadi kan udah diketahui dulu tuh biar ga ribet kita generate random data yang dimensinya beda, satu ghaib satu lagi non ghaib, eh becanda , satu minus satu positif gituloh. jadi yaudah taroh aja clusternya 2 . Nah kalo dirunning maka akan muncul Output sebagai berikut.
nah, pada max_iter ada sebanyak 300. jadi disini si machine learning udah tau dimana posisi optimal dari 2 Centroids tersebut, oke lanjut
Langkah 4 : Mengetahui Letak Posisi Centroids
untuk mengetahuinya gampang, tinggal masukkan codenya dibawah ini
Kmean.cluster_centers_
nah, koordinat dari Centroidsnya adalah seperti ini hasil dari outputnya
setelah koordinatnya sudah didapatkan tinggal divisualisasi deh dengan kodingan seperti dibawah ini,
plt.scatter(X[ : , 0], X[ : , 1], s =50, c="r")
plt.scatter(-0.94665068, -0.97138368, s=200, c="g", marker="s")
plt.scatter(2.01559419, 2.02597093, s=200, c="b", marker="s")
plt.show()
ini outputnya.
Menyatukan kodingan kodingan diatas
Well, ini rangkuman dari semua kodingan kodingan diatas
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeansX= -2 * np.random.rand(100,2)X1 = 1 + 2 * np.random.rand(50,2)X[50:100, :] = X1plt.scatter(X[ : , 0], X[ :, 1], s = 50, c = "r")plt.show()from sklearn.cluster import KMeansKmean = KMeans(n_clusters=2)Kmean.fit(X)print (Kmean)Kmean.cluster_centers_print(Kmean.cluster_centers_)plt.scatter(X[ : , 0], X[ : , 1], s =50, c="r")
plt.scatter(-0.94665068, -0.97138368, s=200, c="g", marker="s")
plt.scatter(2.01559419, 2.02597093, s=200, c="b", marker="s")
plt.show()
Seperti itu lah gimana cara Kerja dari Sebuah K-Means Clustering. K Means Clustering digunakan secara luas dalam Analysis Clustering. Sperperti yang saya gunakan pada coretan kemaren yang Mempuat color Pallete menggunakan ML itu juga menggunakan Algoritma K-Means ehem silahkan mampir https://medium.com/@iamraldygh/membuat-color-pallete-dengan-machine-learning-python-1ff362ef8ef5
Anyway, segitu aja dulu bahasan ringan kita ya, penulis cari bahan dulu untuk coret coret apa lagi besok , jika Mantemen kurang berkenan dengan coretan saya monggo ada kolom komentar, kolom komentar digunakan untuk menyampaikan pemikiran bukan untuk didiemin :) Diskusi bareng, well.
Until Next time
Ciao Mantemen!
Referensi :