Menu
CoddyTech

K-Means Ne Zaman Başarısız Olur

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 14 / 51.

K-means, her kümeyi merkezi çevresinde yuvarlak bir yığın olarak düşünür. Dartlar, etrafında bir halka bulunan bir hedef tahtasının merkezini oluşturur ve k-means bunları ikiye böler:

140 dartın yer aldığı iki grafik. Solda gerçek durum: geniş bir halkanın içinde sıkı bir merkez grubu. Sağda, k = 2 ile k-means: düz, kesikli bir sınır tahtayı, halkayı ve merkezi sol ve sağ yarılara böler; her yarıda bir merkez işareti bulunur

Her nokta en yakın merkezine bağlanır, bu nedenle iki küme arasındaki sınır, merkezlerin tam ortasından geçen düz bir çizgidir. Hiçbir düz çizgi bir halkayı ortasından ayıramaz.

Uzun, kıvrımlı veya çok düzensiz gruplar k-means'i aynı şekilde bozar. Yine de kümeler döndürür, bu yüzden her zaman görsele bakın.

challenge icon

Görev

Orta

Bir drone, iki kıvrımlı kum setinde 200 fok tespit etti. Başlangıç kodu, left panelinde gerçeği gösteriyor.

  1. Fokları k-means ile kümele, k = 2.
  2. right panelinde her kümeyi, cluster 0 veya cluster 1 olarak etiketleyerek dağılım grafiğinde göster.
  3. Merkezleri, "X" işaretçileriyle siyah olarak göster ve centers etiketi ekle. Bir gösterge ekle, ardından grafiği göster.

Coddy grafiğini açıklar ve kendi kum setinde kalan fokları sayar. İki kalabalık için sonuç şöyle:

İki grafik. Solda, gerçek durum: geniş bir alana yayılmış büyük bir kalabalık ve onun sağında küçük, sıkı bir kalabalık. Sağda, k = 2 ile k-means: küçük kalabalığın kümesi büyük kalabalığın sağ kenarını da kapsıyor ve siyah çarpılar iki merkezi gösteriyor

Kendin dene

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

# Bir drondan görülen, kavisli iki kum sığlığında dinlenen 200 fok (konumlar 100 m cinsinden)
X, sandbar = make_moons(n_samples=200, noise=0.07, random_state=4)


# Gerçek kum sığlıklarını ax üzerine çizer
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")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi