Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

Makine Öğrenmesi · Bölüm 6

k-means: etiketsiz gruplar

LiDAR noktalarını nesnelere ayırmak, tek bir cevap verilmeden

Veri. Robot süpürgenin LiDAR'ı odayı taradı ve 600 nokta gördü: 250'si duvarda, 200'ü kanepede, 150'si masa ayaklarında. Program hangi noktanın hangi nesneye ait olduğunu hiç görmez; yalnız kaç grup arayacağını bilir: k = 3.

cevap verilmedi600 nokta · k = 3
1 / 69
kmeans.pypython
  1. import numpy as np
  2. from lidar import X # 600 nokta (x, y), metre
  3. k = 3 # bulunacak grup sayısı
  4. rng = np.random.default_rng(17)
  5. best = np.inf # henüz deneme yok
  6. for start in range(10): # on rastgele başlangıç
  7. C = X[rng.choice(len(X), k, replace=False)] # üç nokta merkez olur
  8. while True:
  9. old = C.copy() # merkezleri hatırla
  10. d = ((X[:, None] - C) ** 2).sum(2) # her merkeze uzaklık²
  11. g = d.argmin(1) # en yakın merkez kazanır
  12. C = np.array([X[g == j].mean(0) for j in range(k)]) # ortalamaya taşı
  13. if np.allclose(C, old): break # kimse kıpırdamadı
  14. s = d.min(1).sum() # toplam kare uzaklık
  15. if s < best: best, keep = s, g # en sıkısını sakla
  16. print(np.bincount(keep)) # grup başına nokta

Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.

Nasıl çalışır

  1. Her deneme rastgele üç noktayı merkez seçerek başlar.
  2. Her nokta en yakın merkeze katılır.
  3. Her merkez, kendi noktalarının ortalamasına taşınır. Hiçbir merkez kıpırdamayana kadar tekrar.
  4. Bazı denemeler kötü bir başlangıçta takılır. Bu yüzden on deneme yapılır, toplam kare uzaklığı en küçük olan kalır.

Neden önemli

Cevap gerektirmez: kimsenin etiketlemediği verideki grupları bulur. Robotikte LiDAR ve derinlik kamerası noktalarını engellere ayırmakta, renk kümelemede ve harita sıkıştırmada kullanılır. Vektör arama kütüphanesi FAISS da devasa koleksiyonları k-means ile gruplara böler; arama yalnız en yakın birkaç gruba bakar.

ESOF 323, 11. hafta: robotlarda derin öğrenme →
Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • TestlerimMini testler ve puanlarSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç