Data Science

K-znamená zhlukovanie

K-znamená zhlukovanie

Kód tohto blogu je spolu s množinou údajov k dispozícii na nasledujúcom odkaze https: // github.com / shekharpandey89 / k-means

Zhlukovanie K-Means je algoritmus strojového učenia bez dozoru. Ak porovnáme algoritmus zoskupovania bez dozoru K-Means s algoritmom pod dohľadom, nie je potrebné trénovať model s označenými údajmi. Algoritmus K-Means sa používa na klasifikáciu alebo zoskupenie rôznych objektov na základe ich atribútov alebo vlastností do K počtu skupín. Tu je K celé číslo. K-prostriedky vypočítajú vzdialenosť (pomocou vzorca vzdialenosti) a potom nájdu minimálnu vzdialenosť medzi údajovými bodmi a ťažiskom klastra na klasifikáciu údajov.

Poďme rozumieť K-prostriedkom pomocou malého príkladu pomocou 4 objektov a každý objekt má 2 atribúty.

ObjectsName Atribút_X Atribút_Y
M1 1 1
M2 2 1
M3 4 3
M4 5 4

K-Znamená vyriešiť číselný príklad:

Na vyriešenie vyššie uvedeného numerického problému pomocou K-Means musíme postupovať podľa nasledujúcich krokov:

Algoritmus K-Means je veľmi jednoduchý. Najskôr musíme zvoliť ľubovoľné náhodné číslo K a potom zvoliť centroidy alebo stred zhlukov. Pre výber centroidov môžeme zvoliť ľubovoľný počet objektov pre inicializáciu (závisí od hodnoty K).

Základné kroky algoritmu K-Means sú tieto:

  1. Pokračuje v chode, kým sa žiadne objekty nepohnú z ich centroidov (stabilné).
  2. Najprv vyberieme nejaké centroidy náhodne.
  3. Potom určíme vzdialenosť medzi každým objektom a centroidmi.
  4. Zoskupenie objektov na základe minimálnej vzdialenosti.

Každý objekt má teda dva body ako X a Y a v priestore grafu predstavujú tieto body:

Na vyriešenie nášho vyššie uvedeného problému teda spočiatku zvolíme hodnotu K = 2 ako náhodnú.

Krok 1: Spočiatku sme ako naše centroidy vybrali prvé dva objekty (1, 1) a (2, 1). Nasledujúci graf zobrazuje to isté. Tieto centroidy nazývame C1 (1, 1) a C2 (2,1). Tu môžeme povedať, že C1 je skupina_1 a C2 je skupina_2.

Krok 2: Teraz vypočítame každý údajový objektový objekt na centroidy pomocou euklidovského vzorca vzdialenosti.

Na výpočet vzdialenosti použijeme nasledujúci vzorec.

Vypočítame vzdialenosť od objektov k centroidom, ako je znázornené na obrázku nižšie.

Takže sme vypočítali vzdialenosť každého dátového bodu objektu pomocou vyššie uvedenej metódy vzdialenosti a nakoniec sme dostali maticu vzdialenosti, ako je uvedené nižšie:

DM_0 =

0 1 3.61 5 C1 = (1,1)

zhluk1

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

zhluk2

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

Teraz sme vypočítali hodnotu vzdialenosti každého objektu pre každé ťažisko. Napríklad body objektu (1,1) majú hodnotu vzdialenosti od c1 je 0 a c2 je 1.

Pretože z vyššie uvedenej matice vzdialenosti zistíme, že objekt (1, 1) má vzdialenosť do klastra1 (c1) je 0 a do klastra2 (c2) je 1. Objekt je teda blízko samotného klastra1.

Podobne, ak skontrolujeme objekt (4, 3), vzdialenosť k zhluku1 je 3.61 a do klastra2 je 2.83. Takže objekt (4, 3) sa presunie do klastra2.

Podobne, ak skontrolujete objekt (2, 1), vzdialenosť do klastra1 je 1 a do klastra2 je 0. Tento objekt sa teda presunie do klastra2.

Teraz podľa ich hodnoty vzdialenosti zoskupíme body (zoskupenie objektov).

G_0 =

A B C D
1 0 0 0   skupina_1
0 1 1 1   skupina_2

Teraz podľa ich hodnoty vzdialenosti zoskupíme body (zoskupenie objektov).

A nakoniec, graf bude po zoskupení vyzerať nasledovne (G_0).

Iteration_1: Teraz budeme počítať nové centroidy tak, ako sa zmenili počiatočné skupiny, pretože vzorec vzdialenosti je uvedený v G_0. Takže skupina_1 má iba jeden objekt, takže jej hodnota je stále c1 (1,1), ale skupina_2 má 3 objekty, takže jej nová hodnota ťažiska je

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

Teraz musíme znova vypočítať celú vzdialenosť od nových centroidov tak, ako sme to vypočítali predtým.

DM_1 =

0 1 3.61 5 C1 = (1,1)

zhluk1

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

zhluk2

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

Iteration_1 (klastrovanie objektov): Teraz to v mene nového výpočtu matice vzdialeností (DM_1) zoskupujeme podľa toho. Posunieme teda objekt M2 zo skupiny_2 do skupiny_1 ako pravidlo minimálnej vzdialenosti na centroidy a zvyšok objektu bude rovnaký. Nové zoskupenie bude teda uvedené nižšie.

G_1 =

A B C D
1 1 0 0   skupina_1
0 0 1 1   skupina_2

Teraz musíme znovu vypočítať nové centroidy, pretože oba objekty majú dve hodnoty.

Nové centroidy teda budú

Po získaní nových centroidov bude teda zhlukovanie vyzerať takto:

c1 = (1.5, 1)

c2 = (4.5, 3.5)

Iteration_2: Opakujeme krok, v ktorom vypočítame novú vzdialenosť každého objektu od nových vypočítaných centroidov. Po výpočte teda dostaneme nasledujúcu maticu vzdialenosti pre iteráciu_2.

DM_2 =

0.5 0.5 3.20 4.61 C1 = (1.5, 1)

zhluk1

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

zhluk2

skupina_2

A B C D

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

Opäť robíme priradenia klastrov na základe minimálnej vzdialenosti, ako sme to robili predtým. Potom sme dostali klastrovú maticu, ktorá je rovnaká ako G_1.

G_2 =

A B C D
1 1 0 0   skupina_1
0 0 1 1   skupina_2

Ako tu, G_2 == G_1, takže nie sú potrebné žiadne ďalšie iterácie a môžeme sa tu zastaviť.

Implementácia K-Means pomocou Pythonu:

Teraz ideme implementovať algoritmus K-means v pythone. Na implementáciu K-means použijeme slávny Iris dataset, ktorý je open-source. Tento súbor údajov má tri rôzne triedy. Táto množina údajov má v zásade štyri funkcie: Sepal dĺžka, šírka sepalu, dĺžka okvetného lístka a šírka okvetného lístka. Posledný stĺpec povie názov triedy daného riadku, napríklad setosa.

Sada údajov vyzerá takto:

Pre implementáciu python k-means potrebujeme importovať požadované knižnice. Takže dovážame Pandy, Numpy, Matplotlib a tiež KMeans zo sklearnu.kliešte, ako je uvedené nižšie:

Čítame Iris.csv dataset pomocou metódy read_csv panda a zobrazí prvých 10 výsledkov pomocou metódy head.

Teraz čítame iba tie funkcie množiny údajov, ktoré sme potrebovali na trénovanie modelu. Čítame teda všetky štyri vlastnosti súborov údajov (dĺžka sepalu, šírka sepalu, dĺžka okvetného lístka, šírka okvetného lístka). Za týmto účelom sme odovzdali štyri hodnoty indexu [0, 1, 2, 3] do funkcie iloc dátového rámca pandy (df), ako je uvedené nižšie:

Teraz náhodne vyberieme počet zhlukov (K = 5). Vytvoríme objekt triedy K-means a potom do neho vložíme náš x dátový súbor pre školenie a predpoveď, ako je uvedené nižšie:

Teraz budeme vizualizovať náš model s náhodnou hodnotou K = 5. Vidíme jasne päť zhlukov, ale vyzerá to, že nie je presný, ako je to znázornené nižšie.

Naším ďalším krokom je teda zistiť, či bol počet zhlukov presný alebo nie. A na to používame metódu lakťa. Metóda Elbow sa používa na zistenie optimálneho počtu klastra pre konkrétnu množinu údajov. Táto metóda sa použije na zistenie, či bola hodnota k = 5 správna alebo nie, pretože nedostávame jasné zhlukovanie. Takže potom prejdeme k nasledujúcemu grafu, ktorý ukazuje, že hodnota K = 5 nie je správna, pretože optimálna hodnota spadá medzi 3 alebo 4.

Teraz spustíme vyššie uvedený kód znova s ​​počtom klastrov K = 4, ako je uvedené nižšie:

Teraz sa chystáme vizualizovať vyššie uvedené zoskupenie novej zostavy K = 4. Nasledujúca obrazovka ukazuje, že klastrovanie sa teraz deje pomocou k-means.

Záver

Takže sme študovali algoritmus K-means v číselnom aj pythonovom kóde. Tiež sme videli, ako môžeme zistiť počet klastrov pre konkrétnu množinu údajov. Metóda lakeť niekedy nedokáže dať správny počet zhlukov, takže v takom prípade môžeme zvoliť niekoľko metód.

Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...
Hry Výukový program Shadow of the Tomb Raider pre Linux
Výukový program Shadow of the Tomb Raider pre Linux
Shadow of the Tomb Raider je dvanásty prírastok do série Tomb Raider - franšíza akčných adventúr vytvorená Eidosom Montrealom. Túto hru prijali kritic...
Hry Ako zvýšiť rýchlosť FPS v systéme Linux?
Ako zvýšiť rýchlosť FPS v systéme Linux?
FPS znamená Počet snímok za sekundu. Úlohou FPS je merať snímkovú frekvenciu pri prehrávaní videa alebo herných výkonoch. Jednoducho povedané, počet n...