Zrozumiemy K-średnie za pomocą małego przykładu za pomocą 4 obiektów, a każdy obiekt ma 2 atrybuty.
Nazwa obiektów | Atrybut_x | Atrybut_y |
---|---|---|
M1 | 1 | 1 |
M2 | 2 | 1 |
M3 | 4 | 3 |
M4 | 5 | 4 |
K-średnia w celu rozwiązania przykładu numerycznego:
Aby rozwiązać powyższy problem numeryczny za pośrednictwem K-średnich, musimy wykonać następujące kroki:
Algorytm K-MANS jest bardzo prosty. Najpierw musimy wybrać dowolną losową liczbę K, a następnie wybrać środki centroidy lub centrum klastrów. Aby wybrać centroidy, możemy wybrać dowolną losową liczbę obiektów do inicjalizacji (zależy od wartości k).
Podstawowe kroki K-MANS Kroki są następujące:
Tak więc każdy obiekt ma dwa punkty jako x i y, i reprezentują na przestrzeni wykresu w następujący sposób:
Dlatego początkowo wybieramy wartość k = 2 jako losową, aby rozwiązać nasz powyższy problem.
Krok 1: Początkowo wybieramy pierwsze dwa obiekty (1, 1) i (2, 1) jako nasze centroidy. Poniższy wykres pokazuje to samo. Nazywamy te centroidy C1 (1, 1) i C2 (2,1). Tutaj możemy powiedzieć, że C1 to grupa_1, a C2 to grupa_2.
Krok 2: Teraz obliczymy każdy punkt danych obiektu na środki ciężarowe przy użyciu wzoru odległości euklidesowej.
Aby obliczyć odległość, używamy następującego wzoru.
Obliczamy odległość od obiektów do centroidów, jak pokazano na poniższym obrazku.
Tak więc obliczyliśmy odległość każdego punktu danych obiektów za pomocą powyższej metody odległości, w końcu otrzymaliśmy macierz odległości, jak podano poniżej:
DM_0 =
0 | 1 | 3.61 | 5 | C1 = (1,1) klaster1 | Grupa 1 |
1 | 0 | 2.83 | 4.24 | C2 = (2,1) klaster2 | grupa_2 |
A | B | C | D | |
---|---|---|---|---|
1 | 2 | 4 | 5 | X |
1 | 1 | 3 | 4 | Y |
Teraz obliczyliśmy wartość odległości każdego obiektu dla każdego środka ciężkości. Na przykład punkty obiektu (1,1) mają wartość odległości do C1 to 0, a C2 to 1.
Ponieważ z powyższej macierzy odległości dowiadujemy się, że obiekt (1, 1) ma odległość od klastra 1 (C1) wynosi 0, a klaster2 (C2) to 1. Tak więc obiekt jest bliski samego klastra1.
Podobnie, jeśli sprawdzimy obiekt (4, 3), odległość do klastra1 wynosi 3.61, a klaster2 to 2.83. Tak więc obiekt (4, 3) przechodzi na klaster2.
Podobnie, jeśli sprawdzisz obiekt (2, 1), odległość do klastra1 wynosi 1, a klaster2 wynosi 0. Tak więc ten obiekt przejdzie na klaster2.
Teraz, zgodnie z ich wartością odległości, grupujemy punkty (klastrowanie obiektów).
G_0 =
A | B | C | D | |
---|---|---|---|---|
1 | 0 | 0 | 0 | Grupa 1 |
0 | 1 | 1 | 1 | grupa_2 |
Teraz, zgodnie z ich wartością odległości, grupujemy punkty (klastrowanie obiektów).
I wreszcie wykres będzie wyglądał jak poniżej po wykonywaniu klastrowania (G_0).
Iteration_1: Teraz obliczymy nowe centroidy jako grupy początkowe zmienione ze względu na wzór odległości, jak pokazano w G_0. Tak więc grupa_1 ma tylko jeden obiekt, więc jego wartość jest nadal
Tak więc nowe C1 (1,1) i C2 (3.66, 2.66)
Teraz ponownie musimy obliczyć całą odległość do nowych środków, jak obliczyliśmy wcześniej.
DM_1 =
0 | 1 | 3.61 | 5 | C1 = (1,1) klaster1 | Grupa 1 |
3.14 | 2.36 | 0.47 | 1.89 | C2 = (3.66,2.66) klaster2 | grupa_2 |
A | B | C | D | |
---|---|---|---|---|
1 | 2 | 4 | 5 | X |
1 | 1 | 3 | 4 | Y |
Itereration_1 (klastrowanie obiektów): Teraz, w imieniu obliczeń nowej macierzy odległości (DM_1), skupiamy się z tym według tego. Tak więc przesuwamy obiekt M2 z grupy_2 na grupę_1 jako zasadę minimalnej odległości do środków ciężarowych, a reszta obiektu będzie taka sama. Tak więc nowe klastrowanie będzie jak poniżej.
G_1 =
A | B | C | D | |
---|---|---|---|---|
1 | 1 | 0 | 0 | Grupa 1 |
0 | 0 | 1 | 1 | grupa_2 |
Teraz musimy ponownie obliczyć nowe centroidy, ponieważ oba obiekty mają dwie wartości.
Tak więc nowe centroidy będą
Tak więc po otrzymaniu nowych środków ciężarowych klastrowanie będzie wyglądało poniżej:
C1 = (1.5, 1)
C2 = (4.5, 3.5)
Itereration_2: Powtarzamy krok, w którym obliczamy nową odległość każdego obiektu do nowych obliczonych środków ciężarowych. Tak więc po obliczeniach otrzymamy następującą macierz odległości dla itereration_2.
DM_2 =
0.5 | 0.5 | 3.20 | 4.61 | C1 = (1.5, 1) klaster1 | Grupa 1 |
4.30 | 3.54 | 0.71 | 0.71 | C2 = (4.5, 3.5) klaster2 | grupa_2 |
A B C D
A | B | C | D | |
---|---|---|---|---|
1 | 2 | 4 | 5 | X |
1 | 1 | 3 | 4 | Y |
Ponownie wykonujemy przypisania grupowe na podstawie minimalnej odległości, tak jak wcześniej. Więc po tym otrzymaliśmy macierz klastra, która jest taka sama jak G_1.
G_2 =
A | B | C | D | |
---|---|---|---|---|
1 | 1 | 0 | 0 | Grupa 1 |
0 | 0 | 1 | 1 | grupa_2 |
Jak tutaj, G_2 == g_1, Więc nie jest wymagana dalsza iteracja i możemy zatrzymać się tutaj.
Wdrożenie K-MANS za pomocą Pythona:
Teraz zamierzamy wdrożyć algorytm K-MANS w Python. Aby wdrożyć K-Means, użyjemy słynnego zestawu danych IRIS, który jest open source. Ten zestaw danych ma trzy różne klasy. Ten zestaw danych ma zasadniczo cztery funkcje: Długość sepalu, szerokość sepalowa, długość płatków i szerokość płatków. Ostatnia kolumna poda nazwę klasy tego wiersza jak Setosa.
Zestaw danych wygląda jak poniżej:
W przypadku implementacji Python K-MANS musimy zaimportować wymagane biblioteki. Tak więc importujemy Pandy, Numpy, Matplotlib, a także Kmeans ze Sklearn.Clutser, jak podano poniżej:
Czytamy Iris.Zestaw danych CSV za pomocą metody Read_CSV Panda i wyświetli 10 najlepszych wyników za pomocą metody Head.
Teraz czytamy tylko te funkcje zestawu danych, których potrzebowaliśmy do wyszkolenia modelu. Więc czytamy wszystkie cztery cechy zestawów danych (długość seda, szerokość sepalu, długość płatków, szerokość płatków). W tym celu przekazaliśmy cztery wartości indeksu [0, 1, 2, 3] do funkcji ILOC ramki danych pandy (DF), jak pokazano poniżej:
Teraz wybieramy liczbę klastrów losowo (k = 5). Tworzymy obiekt klasy K-MANS, a następnie dopasowujemy nasz zestaw danych X do szkolenia i prognozy, jak pokazano poniżej:
Teraz wizualizujemy nasz model z losową wartością k = 5. Widzimy wyraźnie pięć klastrów, ale wygląda na to, że nie jest to dokładne, jak pokazano poniżej.
Tak więc naszym następnym krokiem jest znalezienie albo liczby klastrów była dokładna, czy nie. I do tego używamy metody łokcia. Metoda łokcia służy do znalezienia optymalnej liczby klastra dla określonego zestawu danych. Ta metoda zostanie zastosowana do ustalenia, czy wartość k = 5 była poprawna, czy nie, ponieważ nie otrzymujemy wyraźnego grupowania. Następnie przechodzimy do następującego wykresu, który pokazuje, że wartość k = 5 jest nieprawidłowa, ponieważ optymalna wartość spada między 3 lub 4.
Teraz ponownie uruchomimy powyższy kod z liczbą klastrów k = 4, jak pokazano poniżej:
Teraz wizualizujemy powyższe k = 4 nowe klastrowanie kompilacji. Poniższy ekran pokazuje, że teraz grupowanie odbywa się za pośrednictwem k-średnich.
Wniosek
Tak więc studiowaliśmy algorytm K-MANS w kodzie numerycznym i Python. Widzieliśmy również, w jaki sposób możemy znaleźć liczbę klastrów dla konkretnego zestawu danych. Czasami metoda łokcia nie może podać prawidłowej liczby klastrów, więc w takim przypadku istnieje kilka metod wyboru.
Kod tego bloga wraz z zestawem danych jest dostępny pod następującym linkiem https: // github.com/shekharpandey89/k-średnie