Metoda K-Means Elbow i analiza sylwetki z Yellowbrick i Scikit-Learn PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Metoda K-Means Elbow i analiza sylwetki z Yellowbrick i Scikit-Learn

Wprowadzenie

K-Means to jeden z najpopularniejszych algorytmów klastrowania. Posiadając centralne punkty w klastrze, grupuje inne punkty na podstawie ich odległości od tego centralnego punktu.

Minusem K-Means jest konieczność wyboru liczby klastrów, K, przed uruchomieniem algorytmu grupującego punkty.

Jeśli chcesz przeczytać szczegółowy przewodnik po klastrowaniu K-Means, spójrz na „Klastrowanie K-Means za pomocą Scikit-Learn”.

Metoda łokcia i analiza sylwetki

Najczęściej stosowanymi technikami wyboru liczby Ks są Metoda łokcia oraz Analiza sylwetki.

Aby ułatwić wybór Ks, Żółta cegła Biblioteka zamyka kod z pętlami for i wykresem, który zwykle pisalibyśmy w 4 linijki kodu.

Aby zainstalować Yellowbrick bezpośrednio z notatnika Jupyter, uruchom:

! pip install yellowbrick

Zobaczmy, jak to działa w przypadku znanego zestawu danych, który jest już częścią Science-learn, Irys zestaw danych.

Pierwszym krokiem jest zaimportowanie zbioru danych, KMeans i yellowbrick biblioteki i wczytaj dane:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

iris = load_iris()

Zwróć uwagę, że importujemy KElbowVisualizer i SilhouetteVisualizer od yellowbrick.cluster, to są moduły, których użyjemy do wizualizacji wyników Łokcia i Sylwetki!

Po załadowaniu zbioru danych, w data klucz wiązki (typ danych będący rozszerzeniem słownika) to wartości punktów, które chcemy zgrupować. Jeśli chcesz wiedzieć, co oznaczają liczby, spójrz na iris['feature_names'].

Wiadomo, że zbiór danych Iris zawiera trzy rodzaje tęczówek: "versicolor", "virginica" i "setosa". Możesz również obejrzeć zajęcia w iris['target_names'] do weryfikacji.

Mamy więc 4 cechy do zgrupowania i należy je podzielić na 3 różne klastry zgodnie z tym, co już wiemy. Zobaczmy, czy nasze wyniki z Metodą Łokcia i Analizą Sylwetki to potwierdzą.

Najpierw wybierzemy wartości cech:

print(iris['feature_names']) 
print(iris['target_names']) 

X = iris['data']

Następnie możemy stworzyć KMeans model, a KElbowVisualizer() instancja, która otrzyma ten model wraz z liczbą ks, dla której zostanie obliczona metryka, w tym przypadku z 2 do 11 ks.

Następnie dopasowujemy wizualizator do danych za pomocą fit() i wyświetlaj fabułę za pomocą show(). Jeśli metryka nie jest określona, ​​wizualizator używa zniekształcenie metryka, która oblicza sumę kwadratów odległości od każdego punktu do jego przypisanego środka:

model = KMeans(random_state=42)

elb_visualizer = KElbowVisualizer(model, k=(2,11))
elb_visualizer.fit(X)    
elb_visualizer.show()  

Teraz mamy już Kolano oceny zniekształceń dla klastrowania KMeans działka z zaznaczoną pionową linią, która byłaby najlepszą liczbą ks, w tym przypadku, 4.

Wydaje się, że metoda łokcia z metryką zniekształceń nie była najlepszym wyborem, jeśli nie znaliśmy rzeczywistej liczby skupień. Czy Silhouette wskaże również, że istnieją 4 skupiska? Aby na to odpowiedzieć, wystarczy powtórzyć ostatni kod z modelem z 4 klastrami i innym obiektem wizualizera:

model_4clust = KMeans(n_clusters = 4, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_4clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

wynik sylwetki dla k oznacza klaster metodą łokcia

Kod wyświetla Wykres sylwetki grupowania KMeans dla 150 próbek w 4 centrach. Aby przeanalizować te skupienia, musimy spojrzeć na wartość współczynnika sylwetki (lub wyniku), jego najlepsza wartość jest bliższa 1. Średnia wartość, jaką mamy, to 0.5, oznaczony pionową linią i nie tak dobrze.

Musimy również przyjrzeć się rozkładowi między skupieniami – dobra działka ma podobne rozmiary skupionych obszarów lub dobrze rozmieszczone punkty. Na tym wykresie są 3 mniejsze gromady (numer 3, 2, 1) i jedna większa gromada (numer 0), co nie jest wynikiem, którego oczekiwaliśmy.

Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!

Powtórzmy ten sam wykres dla 3 skupisk, aby zobaczyć, co się stanie:

model_3clust = KMeans(n_clusters = 3, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_3clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

sylwetka dla klastrów kmeans

Zmieniając liczbę skupień, uzyskano wynik sylwetki 0.05 wyższe, a klastry są bardziej zrównoważone. Gdybyśmy nie znali rzeczywistej liczby klastrów, eksperymentując i łącząc obie techniki, wybralibyśmy 3 zamiast 2 jako liczba Ks.

Jest to przykład, jak ważne jest łączenie i porównywanie różnych metryk, wizualizacja danych i eksperymentowanie z różnymi wartościami klastrów, aby poprowadzić wynik we właściwym kierunku. A także, jak posiadanie biblioteki, która ułatwia tę analizę, może pomóc w tym procesie!

Znak czasu:

Więcej z Nadużycie stosu