Data Science

K-znamená shlukování

K-znamená shlukování

Kód tohoto blogu je spolu s datovou sadou k dispozici na následujícím odkazu https: // github.com / shekharpandey89 / k-means

K-Means shlukování je algoritmus strojového učení bez dozoru. Pokud porovnáme algoritmus shlukování bez dohledu K-Means s supervizovaným algoritmem, není nutné trénovat model s označenými daty. Algoritmus K-Means se používá ke klasifikaci nebo seskupení různých objektů na základě jejich atributů nebo funkcí do K počtu skupin. Zde je K celé číslo. K-Means vypočítá vzdálenost (pomocí vzorce vzdálenosti) a poté najde minimální vzdálenost mezi datovými body a centroidním klastrem pro klasifikaci dat.

Pojďme pochopit K-Means pomocí malého příkladu pomocí 4 objektů a každý objekt má 2 atributy.

Název_objektu Atribut_X Atribut_Y
M1 1 1
M2 2 1
M3 4 3
M4 5 4

K znamená řešení numerického příkladu:

K vyřešení výše uvedeného numerického problému pomocí K-Means musíme postupovat podle následujících kroků:

Algoritmus K-Means je velmi jednoduchý. Nejprve musíme zvolit libovolné náhodné číslo K a poté zvolit centroidy nebo střed klastrů. Pro výběr centroidů můžeme pro inicializaci zvolit libovolný náhodný počet objektů (záleží na hodnotě K).

Základní kroky algoritmu K-Means jsou následující:

  1. Pokračuje v běhu, dokud se žádné objekty nepohnou ze svých středisek (stabilní).
  2. Nejprve náhodně vybereme některé centroidy.
  3. Poté určíme vzdálenost mezi každým objektem a centroidy.
  4. Seskupení objektů na základě minimální vzdálenosti.

Každý objekt má tedy dva body jako X a Y a představují v prostoru grafu následující:

Abychom vyřešili náš výše uvedený problém, zpočátku zvolíme hodnotu K = 2 jako náhodnou.

Krok 1: Zpočátku jsme jako centroidy vybrali první dva objekty (1, 1) a (2, 1). Níže uvedený graf ukazuje to samé. Těmto centroidům říkáme C1 (1, 1) a C2 (2,1). Zde můžeme říci, že C1 je skupina_1 a C2 je skupina_2.

Krok 2: Nyní vypočítáme každý datový bod objektu na centroidy pomocí euklidovského vzorce vzdálenosti.

Pro výpočet vzdálenosti použijeme následující vzorec.

Vypočítáme vzdálenost od objektů k centroidům, jak je znázorněno na následujícím obrázku.

Takže jsme vypočítali vzdálenost každého datového bodu objektu pomocí výše uvedené metody vzdálenosti, nakonec jsme dostali matici vzdálenosti, jak je uvedeno níže:

DM_0 =

0 1 3.61 5 C1 = (1,1)

cluster1

group_1
1 0 2.83 4.24 C2 = (2,1)

cluster2

group_2
A B C D
1 2 4 5   X
1 1 3 4   Y

Nyní jsme vypočítali hodnotu vzdálenosti každého objektu pro každé těžiště. Například body objektu (1,1) mají hodnotu vzdálenosti k c1 je 0 a c2 je 1.

Protože z výše uvedené matice vzdálenosti zjistíme, že objekt (1, 1) má vzdálenost ke shluku1 (c1) je 0 a ke shluku2 (c2) je 1. Objekt je tedy blízko samotného clusteru1.

Podobně, pokud zkontrolujeme objekt (4, 3), vzdálenost ke shluku1 je 3.61 a cluster2 je 2.83. Takže objekt (4, 3) se přesune do clusteru2.

Podobně, pokud zkontrolujete objekt (2, 1), vzdálenost k clusteru 1 je 1 a ke clusteru 2 je 0. Tento objekt se tedy přesune na cluster2.

Nyní podle jejich hodnoty vzdálenosti seskupujeme body (shlukování objektů).

G_0 =

A B C D
1 0 0 0   group_1
0 1 1 1   group_2

Nyní podle jejich hodnoty vzdálenosti seskupíme body (shlukování objektů).

A nakonec bude graf vypadat níže po seskupení (G_0).

Iterace_1: Nyní budeme počítat nové centroidy, protože se počáteční skupiny změnily z důvodu vzorce vzdálenosti, jak je znázorněno v G_0. Takže skupina_1 má pouze jeden objekt, takže její hodnota je stále c1 (1,1), ale skupina_2 má 3 objekty, takže její nová hodnota těžiště je

Takže nové c1 (1,1) a c2 (3.66, 2.66)

Nyní musíme znovu vypočítat celou vzdálenost k novým centroidům, jak jsme vypočítali dříve.

DM_1 =

0 1 3.61 5 C1 = (1,1)

cluster1

group_1
3.14 2.36 0.47 1.89 C2 = (3.66,2.66)

cluster2

group_2
A B C D
1 2 4 5   X
1 1 3 4   Y

Iteration_1 (shlukování objektů): Nyní jsme ji jménem nového výpočtu matice vzdáleností (DM_1) seskupili podle toho. Posuneme tedy objekt M2 ze skupiny_2 do skupiny_1 jako pravidlo minimální vzdálenosti na centroidy a zbytek objektu bude stejný. Nové shlukování bude tedy uvedeno níže.

G_1 =

A B C D
1 1 0 0   group_1
0 0 1 1   group_2

Nyní musíme znovu vypočítat nové centroidy, protože oba objekty mají dvě hodnoty.

Nové centroidy tedy budou

Poté, co získáme nové centroidy, bude shlukování vypadat níže:

c1 = (1.5, 1)

c2 = (4.5, 3.5)

Iteration_2: Opakujeme krok, ve kterém vypočítáme novou vzdálenost každého objektu k novým vypočítaným centroidům. Po výpočtu tedy získáme následující matici vzdálenosti pro iteraci_2.

DM_2 =

0.5 0.5 3.20 4.61 C1 = (1.5, 1)

cluster1

group_1
4.30 3.54 0.71 0.71 C2 = (4.5, 3.5)

cluster2

group_2

ABECEDA

A B C D
1 2 4 5   X
1 1 3 4   Y

Opět děláme přiřazení klastrů na základě minimální vzdálenosti, jako jsme to dělali dříve. Poté jsme dostali shlukovací matici, která je stejná jako G_1.

G_2 =

A B C D
1 1 0 0   group_1
0 0 1 1   group_2

Jako tady, G_2 == G_1, takže není nutná žádná další iterace a my se zde můžeme zastavit.

Implementace K-Means pomocí Pythonu:

Nyní budeme implementovat algoritmus K-means v pythonu. K implementaci K-means použijeme slavnou datovou sadu Iris, která je open-source. Tato datová sada má tři různé třídy. Tato datová sada má v zásadě čtyři funkce: Sepální délka, šířka sepalu, délka okvětního lístku a šířka okvětního lístku. Poslední sloupec řekne název třídy daného řádku jako setosa.

Datová sada vypadá takto:

Pro implementaci pythonu k-means musíme importovat požadované knihovny. Takže importujeme Pandy, Numpy, Matplotlib a také KMeans ze sklearnu.clutser, jak je uvedeno níže:

Čteme Iris.csv datová sada pomocí metody read_csv panda a zobrazí prvních 10 výsledků pomocí metody head.

Nyní čteme pouze ty funkce datové sady, které jsme potřebovali k trénování modelu. Čteme tedy všechny čtyři funkce datových sad (délka sepalu, šířka sepalu, délka okvětního lístku, šířka okvětního lístku). Za tímto účelem jsme předali čtyři hodnoty indexu [0, 1, 2, 3] do funkce iloc datového rámce pandy (df), jak je znázorněno níže:

Nyní náhodně zvolíme počet klastrů (K = 5). Vytvoříme objekt třídy K-means a poté do ní vložíme naši x datovou sadu pro trénink a predikci, jak je znázorněno níže:

Nyní si představíme náš model s náhodnou hodnotou K = 5. Vidíme jasně pět shluků, ale vypadá to, že to není přesné, jak je znázorněno níže.

Naším dalším krokem je tedy zjistit, zda byl počet klastrů přesný nebo ne. A k tomu používáme metodu Elbow. Metoda Elbow se používá ke zjištění optimálního počtu klastru pro konkrétní datovou sadu. Tato metoda bude použita ke zjištění, zda byla hodnota k = 5 správná nebo ne, protože nedostáváme jasné shlukování. Poté přejdeme k následujícímu grafu, který ukazuje, že hodnota K = 5 není správná, protože optimální hodnota spadá mezi 3 nebo 4.

Nyní spustíme výše uvedený kód znovu s počtem klastrů K = 4, jak je znázorněno níže:

Nyní budeme vizualizovat výše uvedené seskupování nových sestavení K = 4. Níže uvedená obrazovka ukazuje, že nyní se shlukování provádí prostřednictvím k-means.

Závěr

Studovali jsme tedy algoritmus K-means v numerickém i pythonovém kódu. Také jsme viděli, jak můžeme zjistit počet klastrů pro konkrétní datovou sadu. Někdy metoda Elbow nemůže poskytnout správný počet klastrů, takže v takovém případě existuje několik metod, které si můžeme vybrat.

Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
The Battle for Wesnoth je jednou z nejpopulárnějších strategických her s otevřeným zdrojovým kódem, které si v tuto chvíli můžete zahrát. Tato hra se ...
Hry 0 A.D. Tutorial
0 A.D. Tutorial
Z mnoha strategických her venku je 0 A.D. dokáže vyniknout jako komplexní titul a velmi hluboká, taktická hra, přestože je otevřeným zdrojem. Vývoj hr...
Hry Výukový program Unity3D
Výukový program Unity3D
Úvod do Unity 3D Unity 3D je výkonný engine pro vývoj her. Jedná se o multiplatformní platformu, která vám umožňuje vytvářet hry pro mobilní zařízení,...