Bagaimana Plotting K-Means Clusters dengan Python

Bagaimana Plotting K-Means Clusters dengan Python

Dalam artikel ini, kita akan melihat bagaimana kita dapat memplot cluster K-Means. K-Means Clustering adalah metode clustering iteratif yang mengsegment data menjadi k cluster, di mana setiap observasi berbelitu kepada cluster dengan mean terdekat (sentroid cluster).

Langkah-Langkah Plotting K-Means Clusters

Artikel ini menunjukkan bagaimana kita dapat visualisasi cluster. Kami akan menggunakan dataset digit untuk tujuan kami.

  1. Mempersiapkan Data untuk Plotting

Terlebih dahulu, mari kita siapkan data kita.

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import numpy as np

# Load Data
data = load_digits().data
pca = PCA(2)

# Transform the data
df = pca.fit_transform(data)

Dataset digit berisi gambar ukuran 8×8 pixels, yang ditempatkan ke dalam vektor fitur panjang 64. Kami menggunakan PCA untuk mengurangi jumlah dimensi sehingga kita dapat visualisasi hasilnya menggunakan scatter plot 2D.

  1. Mengaplikasikan K-Means pada Data

Sekarang, mari kita aplikasikan K-Means ke data kita untuk membuat cluster. Di dataset digit ini, kami sudah tahu bahwa label range dari 0 hingga 9, sehingga kami memiliki 10 kelas (atau cluster). Namun, dalam tantangan nyata, ketika melakukan K-Means, tugas paling berat adalah menentukan jumlah cluster.

from sklearn.cluster import KMeans

# Initialize the class object
kmeans = KMeans(n_clusters=10)

# predict the labels of clusters.
label = kmeans.fit_predict(df)
print(label)

Methode fit_predict kmeans mengembalikan array label cluster, di mana setiap data point berbelitu kepada cluster.

  1. Plotting Label 0 K-Means Clusters

Sekarang, mari kita memahami bagaimana kita dapat memplot individual cluster. Array label mempertahankan indeks atau urutan data points, sehingga kami dapat menggunakan karakteristik ini untuk mengfilter data points menggunakan indexing Boolean dengan numpy.

import matplotlib.pyplot as plt

# filter rows of original data
filtered_label0 = df[label == 0]

# plotting the results
plt.scatter(filtered_label0[:,0] , filtered_label0[:,1])
plt.show()

Kode di atas pertama-tama mengfilter dan mempertahankan data points yang berbelitu kepada cluster label 0, kemudian membuat scatter plot. Lihat bagaimana kami menggunaan Boolean series untuk mengfilter [label == 0]. Indexed the filtered data and passed to plt.scatter as (x,y) to plot.

  1. Plotting Additional K-Means Clusters

Sekarang, mari kita memplot cluster dengan label 2 dan 8.

# filter rows of original data
filtered_label2 = df[label == 2]

filtered_label8 = df[label == 8]

# Plotting the results
plt.scatter(filtered_label2[:,0] , filtered_label2[:,1] , color = 'red')
plt.scatter(filtered_label8[:,0] , filtered_label8[:,1] , color = 'black')
plt.show()
  1. Plot All K-Means Clusters

Sekarang, mari kita aplikasikan ini ke semua cluster.

# Getting unique labels
u_labels = np.unique(label)

# plotting the results:
for i in u_labels:
 plt.scatter(df[label == i , 0] , df[label == i , 1] , label = i)
plt.legend()
plt.show()
  1. Kesimpulan

Dalam artikel ini, kita melihat bagaimana kita dapat memvisualisasi cluster yang terbentuk oleh algoritma K-Means. Sampai jumpa berikutnya, Selamat Belajar!