Menu
CoddyTech

Aglomeratif Modeller

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

Arabalar iki otoparkı dolduruyor ve aralarında yol boyunca bir araba sırası var. 2 kümeye ayırmanın iki yolu:

Aynı 102 arabanın iki grafiği. Solda, ward bağlantısı: kuzey otoparkı ve güney otoparkı, sırasıyla 53 ve 49 arabadan oluşan iki kümedir; yol bu kümeler arasında bölünmüştür. Sağda, tekli bağlantı: 101 arabalı bir küme ve tek başına 1 araba

Birleştirmeyi scikit-learn yapar. n_clusters ile nerede duracağını belirt:

from sklearn.cluster import AgglomerativeClustering
model = AgglomerativeClustering(n_clusters=2, linkage="ward")
labels = model.fit_predict(X)

linkage iki grubun birbirinden ne kadar uzakta olduğunu belirler:

  • "ward", varsayılan: grupları sıkı tutar
  • "complete": en uzak çiftleri
  • "average": tüm çiftlerin ortalaması
  • "single": en yakın çiftleri

Single zincirleri izler: burada yol her iki otoparkı da içine alır. Ward yuvarlak, dengeli gruplar oluşturur.

challenge icon

Görev

Orta

Yabani çilekler üç yamada ve ayrıca bir patika boyunca birkaç noktada yetişiyor. Hangi bağlantı yöntemi yamaları bulur? plants konumlarını tutar.

  1. linkages içindeki her bağlantı yöntemi için bitkileri 3 gruba ayır.
  2. Grup boyutlarını en büyükten başlayarak liste halinde yazdır.
  3. En büyük grup, bitkilerin yarısından fazlasını içerdiğinde chained ekle.

Başka bir çayır için:

ward: [40, 38, 31]
complete: [41, 37, 31]
average: [41, 37, 31]
single: [86, 22, 1] chained

Kendin dene

import numpy as np
import pandas as pd
from sklearn.cluster import AgglomerativeClustering

# Bir çayırda 109 yaban çileği bitkisinin yetiştiği yerler (metre cinsinden): üç küme ve bir patika
rng = np.random.default_rng(4)
plants = np.round(np.concatenate([
    rng.normal([2, 3], 0.8, size=(40, 2)),
    rng.normal([9, 4], 1.0, size=(35, 2)),
    rng.normal([6, 10], 0.9, size=(25, 2)),
    np.column_stack([np.linspace(3, 8, 9), np.linspace(3.2, 4, 9)]) + rng.normal(0, 0.15, size=(9, 2)),
]), 2)
linkages = ["ward", "complete", "average", "single"]

# 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