Menu
Coddy logo textTech

Wprowadzenie do K-Means

Lekcja 9 z 19 w kursie Wprowadzenie do uczenia maszynowego w Coddy.

K-means to jeden z najprostszych i najczęściej stosowanych algorytmów grupowania. Jego celem jest podzielenie n obserwacji na k klastrów, tak aby każda obserwacja należała do klastra o najbliższej średniej (centroidzie), która pełni rolę reprezentanta klastra. Załóżmy, że masz różne owoce i chcesz posegregować je do koszyków według ich rodzaju, ale nie masz etykiet. K-means pomaga zrobić właśnie to, ale zamiast owoców używa punktów danych!

Incheol, CC BY-SA 4.0, za pośrednictwem Wikimedia Commons

Jak działa K-means?

Algorytm wykorzystuje prostą i wydajną procedurę iteracyjną, aby podzielić zbiór danych na k klastrów.

  1. Inicjalizacja centroidów: Najpierw wybierz k punktów ze zbioru danych jako początkowe centroidy. Punkty te można wybrać losowo lub według określonej strategii.
  2. Przypisanie klastrów: Dla każdego punktu w zbiorze danych znajdź najbliższy centroid (używając miar odległości, takich jak odległość euklidesowa) i przypisz punkt do tego klastra.
  3. Aktualizacja centroidów: Po przypisaniu wszystkich punktów do klastrów ponownie oblicz centroidy, wyznaczając średnią wszystkich punktów w każdym klastrze.
  4. Powtarzanie kroków 2 i 3: Powyższe kroki są powtarzane, aż centroidy przestaną się znacząco zmieniać. Oznacza to, że algorytm osiągnął zbieżność, a klastry są stabilne.
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

challenge icon

Wyzwanie

Łatwy

Określenie optymalnej liczby klastrów, k, to kluczowy krok. Istnieją różne metody, a Metoda Łokcia jest jedną z najpopularniejszych.

Ta technika polega na wielokrotnym uruchamianiu algorytmu K-means dla wartości od k=1 do k=n. Dla każdej wartości k obliczamy sumę kwadratów odległości wewnątrz klastrów (WCSS).

Każdy klaster ma centroid, a WCSS to suma kwadratów wszystkich odległości od centroidu.

Utwórz funkcję o nazwie wcss, która przyjmuje listę punktów danych (należących do tego samego klastra) i zwraca WCSS klastra. Wykonaj następujące kroki:

  • Znajdź centroid — centroid to punkt reprezentujący średnie położenie wszystkich punktów w klastrze: 

    Oto na przykład lista dwóch punktów 3D: (1, 2 ,3), (4, 5, 6). Centroid wynosi:

    (1 + 4) / 2 = 2.5,
    (2 + 5) / 2 = 3.5,
    (3 + 6) / 2 = 4.5,
    >> (2.5, 3.5, 4.5)
  • Oblicz odległość euklidesową między każdym punktem a centroidem
  • Zwróć sumę wszystkich odległości podzieloną przez liczbę punktów

Spróbuj swoich sił

def euclidian_distance(point_a, point_b):
    return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5

def wcss(points):
    # Napisz tutaj kod

Wszystkie lekcje w sekcji Wprowadzenie do uczenia maszynowego

Poćwicz samodzielnie: Kompilator Python online