Menu
CoddyTech

Saat K-Means Gagal

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 14 dari 51.

K-means menggambarkan setiap klaster sebagai gumpalan bulat di sekitar pusatnya. Anak panah membentuk sasaran dengan lingkaran di sekelilingnya, dan k-means membaginya menjadi dua:

Dua grafik berisi 140 anak panah. Kiri, kondisi sebenarnya: kelompok rapat berbentuk sasaran di dalam lingkaran lebar. Kanan, k-means dengan k = 2: garis batas putus-putus lurus membagi papan, lingkaran, dan sasaran menjadi separuh kiri dan separuh kanan, masing-masing dengan tanda silang di pusatnya

Setiap titik bergabung dengan pusat terdekatnya, sehingga batas antara dua cluster adalah garis lurus yang berada tepat di tengah antara kedua pusat tersebut. Tidak ada garis lurus yang memisahkan sebuah cincin dari bagian tengahnya.

Kelompok yang panjang, melengkung, atau sangat tidak beraturan dapat membuat k-means gagal dengan cara yang sama. Algoritma ini tetap menghasilkan cluster, jadi selalu periksa gambarnya.

challenge icon

Tantangan

Sedang

Sebuah drone melihat 200 anjing laut di dua gosong pasir melengkung. Kode awal menggambarkan kondisi sebenarnya pada panel left.

  1. Kelompokkan anjing laut dengan k-means, k = 2.
  2. Pada panel right, buat diagram sebar untuk setiap cluster, dengan label cluster 0 atau cluster 1.
  3. Tandai pusatnya dengan penanda hitam "X" berlabel centers. Tambahkan legenda, lalu tampilkan.

Coddy akan menjelaskan diagrammu dan menghitung jumlah anjing laut yang tetap berada bersama kelompok gosong pasirnya. Seperti ini, untuk dua kerumunan:

Dua diagram. Kiri, kondisi sebenarnya: satu kerumunan besar yang tersebar dan satu kerumunan kecil yang rapat di sebelah kanannya. Kanan, k-means dengan k = 2: cluster kerumunan kecil juga mencakup tepi kanan kerumunan besar, dan tanda silang hitam menunjukkan kedua pusatnya

Coba sendiri

import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.cluster import KMeans

# 200 anjing laut beristirahat di dua gosong pasir melengkung, terlihat dari drone (posisi dalam satuan 100 m)
X, sandbar = make_moons(n_samples=200, noise=0.07, random_state=4)


# Menggambar gosong pasir yang sebenarnya pada ax
def draw_truth(ax):
    ax.scatter(X[sandbar == 0, 0], X[sandbar == 0, 1], s=12, label="north bar")
    ax.scatter(X[sandbar == 1, 0], X[sandbar == 1, 1], s=12, label="south bar")
    ax.set_title("The truth")
    ax.legend()


fig, (left, right) = plt.subplots(1, 2, figsize=(9, 4))
draw_truth(left)
right.set_title("K-means, k = 2")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online