Menu
CoddyTech

scikit-learn ile K-Means

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

scikit-learn, 180 elmayı tatlılık ve kıtırlık puanlarına göre burada olduğu gibi tüm k-means döngüsünü sizin için çalıştırır:

180 elma; yatay eksende tatlılık, dikey eksende kıtırlık; üç grupta ve her merkezin üzerinde siyah bir yıldız: sağ üstte tatlı ve kıtır, altta yumuşak, sol üstte ekşi ve kıtır. Sağ üstteki yeni bir elma 0 kümesine katılır

Y olmadan yalnızca X ile eğitin:

from sklearn.cluster import KMeans
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)
print(km.labels_[:8])
print(km.cluster_centers_.round(1))

Bu, 8 satırın küme numaralarını ve ardından her merkez için bir satır yazdırır:

[2 0 0 1 2 0 1 1]
[[7.  7.5]
 [6.  3. ]
 [2.9 8.1]]

n_init=10 10 başlangıç dener ve en kompakt sonucu seçer. km.predict([[8.6, 9.2]]) yeni elmanın en yakın merkezini verir: [0].

labels = km.fit_predict(X) ikisini de aynı anda yapar: modeli uyarlar, ardından labels_ değerini döndürür.

Sayılar yalnızca addır: başka verilerde 0. küme herhangi bir grup olabilir.

challenge icon

Görev

Kolay

Bir biyolog, bir kambur balinanın 150 dalışını kaydetti: dalış süresini ve ardından yüzeyde dinlenme süresini. Dalış türleri var mı? Başlangıç kodu grafiği hazırlar.

  1. X üzerinde KMeans modelini eğit: 3 küme, n_init=10, random_state=0.
  2. Her kümeyi kendi grubu olarak dağılım grafiğinde göster ve cluster 0 ile cluster 2 arasında etiketle.
  3. Merkezleri siyah yıldızlarla işaretle ve centers olarak etiketle. Bir açıklama kutusu ekle ve grafiği göster.

Başka bir balinadan alınan verilerle şöyle:

Whale Dives başlıklı bir dağılım grafiği; yatay eksende dalış süresi (dakika), dikey eksende yüzeyde dinlenme süresi: üç küme; sol üstte kısa dalışlar ve uzun dinlenmeler, altta kısa dalışlar ve kısa dinlenmeler, sağda uzun dalışlar; her birinde siyah bir yıldız ve bir açıklama kutusu

Coddy grafiğini açıklar.

Kendin dene

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# Aşağıdaki satırları değiştirmeyin
rng = np.random.default_rng(14)
dive = np.concatenate([rng.normal(4, 1.0, 60), rng.normal(12, 2.0, 50), rng.normal(2.5, 0.7, 40)])
rest = np.concatenate([rng.normal(1.5, 0.5, 60), rng.normal(4, 1.0, 50), rng.normal(8, 1.5, 40)])
# Bir kambur balinanın 150 dalışı: dakika cinsinden dalış süresi ve ardından su yüzeyinde dinlenme süresi
X = np.round(np.clip(np.column_stack([dive, rest]), 0.5, None), 1)

fig, ax = plt.subplots()
ax.set_title("Whale Dives")
ax.set_xlabel("Dive (min)")
ax.set_ylabel("Surface rest (min)")

# 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