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.
- Inicjalizacja centroidów: Najpierw wybierz
kpunktów ze zbioru danych jako początkowe centroidy. Punkty te można wybrać losowo lub według określonej strategii. - 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.
- Aktualizacja centroidów: Po przypisaniu wszystkich punktów do klastrów ponownie oblicz centroidy, wyznaczając średnią wszystkich punktów w każdym klastrze.
- 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.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyOkreś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 kodWszystkie lekcje w sekcji Wprowadzenie do uczenia maszynowego
Poćwicz samodzielnie: Kompilator Python online