Datavetenskap

K-medelkluster

K-medelkluster

Koden för den här bloggen, tillsammans med datasetet, finns på följande länk https: // github.com / shekharpandey89 / k-betyder

K-Means-kluster är en algoritm utan maskinövervakning utan tillsyn. Om vi ​​jämför K-Means icke-övervakade klusteralgoritm med den övervakade algoritmen, är det inte nödvändigt att träna modellen med märkta data. K-Means-algoritmen används för att klassificera eller gruppera olika objekt baserat på deras attribut eller funktioner i ett K-antal grupper. Här är K ett heltal. K-medel beräknar avståndet (med hjälp av avståndsformeln) och hittar sedan det minsta avståndet mellan datapunkterna och centroidklustret för att klassificera data.

Låt oss förstå K-medel genom att använda det lilla exemplet med de fyra objekten, och varje objekt har två attribut.

Objektnamn Attribut_X Attribut_Y
M1 1 1
M2 2 1
M3 4 3
M4 5 4

K-medel för att lösa numeriskt exempel:

För att lösa ovanstående numeriska problem genom K-medel måste vi följa följande steg:

K-Means-algoritmen är väldigt enkel. Först måste vi välja valfritt slumpmässigt antal K och sedan välja klumparnas centrum eller centrum. För att välja centroider kan vi välja valfritt slumpmässigt antal objekt för initialiseringen (beror på värdet på K).

K-Means-algoritmens grundläggande steg är som följer:

  1. Fortsätter att springa tills inga objekt rör sig från centroiderna (stabila).
  2. Vi väljer först några centroider slumpmässigt.
  3. Sedan bestämmer vi avståndet mellan varje objekt och centroider.
  4. Gruppera objekten baserat på minsta avstånd.

Så varje objekt har två punkter som X och Y, och de representerar i grafutrymmet enligt följande:

Så vi väljer ursprungligen värdet på K = 2 som slumpmässigt för att lösa vårt problem ovan.

Steg 1: Ursprungligen väljer vi de två första objekten (1, 1) och (2, 1) som våra centroider. Nedanstående diagram visar detsamma. Vi kallar dessa centroider C1 (1, 1) och C2 (2,1). Här kan vi säga att C1 är grupp_1 och C2 är grupp_2.

Steg 2: Nu beräknar vi varje objektdatapunkt till centroider med hjälp av den euklidiska avståndsformeln.

För att beräkna avståndet använder vi följande formel.

Vi beräknar avståndet från objekt till centroider, som visas i bilden nedan.

Så vi beräknade varje objektdatapunktsavstånd genom ovanstående avståndsmetod och fick äntligen avståndsmatrisen enligt nedan:

DM_0 =

0 1 3.61 5 C1 = (1,1)

kluster1

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

kluster2

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

Nu beräknade vi varje objekts avståndsvärde för varje centroid. Exempelvis har objektpunkterna (1,1) ett avståndsvärde till c1 är 0 och c2 är 1.

Eftersom vi från ovanstående avståndsmatris får reda på att objektet (1, 1) har ett avstånd till kluster1 (c1) är 0 och till kluster2 (c2) är 1. Så objektet ett är nära själva cluster1.

På samma sätt, om vi kontrollerar objektet (4, 3) är avståndet till kluster1 3.61 och till cluster2 är 2.83. Så objektet (4, 3) kommer att flyttas till cluster2.

På samma sätt, om du letar efter objektet (2, 1) är avståndet till kluster1 1 och till kluster2 är 0. Så detta objekt kommer att flyttas till cluster2.

Nu, enligt deras avståndsvärde, grupperar vi poängen (objektkluster).

G_0 =

A B C D
1 0 0 0   grupp 1
0 1 1 1   grupp_2

Nu, enligt deras avståndsvärde, grupperar vi poängen (objektkluster).

Och slutligen kommer grafen att se ut nedan efter att ha gjort klustret (G_0).

Iteration_1: Nu beräknar vi nya centroider när initialgrupper ändras på grund av avståndsformeln som visas i G_0. Så, group_1 har bara ett objekt, så dess värde är fortfarande c1 (1,1), men group_2 har 3 objekt, så det nya centroidvärdet är

Så nya c1 (1,1) och c2 (3.66, 2.66)

Nu måste vi åter beräkna hela avståndet till nya centroider som vi beräknat tidigare.

DM_1 =

0 1 3.61 5 C1 = (1,1)

kluster1

grupp 1
3.14 2.36 0.47 1.89 C2 = (3.66,2.66)

kluster2

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

Iteration_1 (objektkluster): Nu, på uppdrag av den nya avståndsmatrisen (DM_1), beräknar vi den enligt det. Så vi flyttar M2-objektet från group_2 till group_1 som regel om minsta avstånd till centroids, och resten av objektet kommer att vara detsamma. Så nya kluster blir som nedan.

G_1 =

A B C D
1 1 0 0   grupp 1
0 0 1 1   grupp_2

Nu måste vi beräkna de nya centroiderna igen, eftersom båda objekten har två värden.

Så nya centroider kommer att vara

Så, efter att vi fått de nya centroiderna, kommer klustringen att se ut nedan:

c1 = (1.5, 1)

c2 = (4.5, 3.5)

Iteration_2: Vi upprepar steget där vi beräknar det nya avståndet för varje objekt till nya beräknade centroider. Så efter beräkningen får vi följande avståndsmatris för iteration_2.

DM_2 =

0.5 0.5 3.20 4.61 C1 = (1.5, 1)

kluster1

grupp 1
4.30 3.54 0.71 0.71 C2 = (4.5, 3.5)

kluster2

grupp_2

A B C D

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

Återigen gör vi klusteruppgifterna baserat på minsta avstånd som vi gjorde tidigare. Så efter att ha gjort det fick vi klustermatrisen som är densamma som G_1.

G_2 =

A B C D
1 1 0 0   grupp 1
0 0 1 1   grupp_2

Som här, G_2 == G_1, så ingen ytterligare iteration krävs, och vi kan stanna här.

K-Means Implementation med Python:

Nu ska vi implementera K-betyder-algoritmen i python. För att implementera K-medel kommer vi att använda den berömda Iris dataset, som är öppen källkod. Denna dataset har tre olika klasser. Denna dataset har i princip fyra funktioner: Sepal längd, sepal bredd, kronblad längd och kronblad bredd. Den sista kolumnen berättar namnet på klassen på den raden som setosa.

Datauppsättningen ser ut som nedan:

För implementeringen av python k-betyder måste vi importera de bibliotek som krävs. Så vi importerar Panda, Numpy, Matplotlib och även KMeans från sklearn.clutser enligt nedan:

Vi läser Iris.csv-dataset med read_csv-pandas metod och visar de 10 bästa resultaten med head-metoden.

Nu läser vi bara de funktioner i datasetet som vi krävde för att träna modellen. Så vi läser alla de fyra funktionerna i datauppsättningarna (sepal längd, sepal bredd, kronblad längd, kronblad bredd). För det skickade vi de fyra indexvärdena [0, 1, 2, 3] till iloc-funktionen i pandas dataram (df) som visas nedan:

Nu väljer vi antalet kluster slumpmässigt (K = 5). Vi skapar objektet för K-betyder-klassen och passar sedan in vår x-dataset i den för träning och förutsägelse enligt nedan:

Nu ska vi visualisera vår modell med det slumpmässiga K = 5-värdet. Vi kan tydligt se fem kluster, men det ser ut som att det inte är korrekt, som visas nedan.

Så vårt nästa steg är att ta reda på antingen antalet kluster var korrekt eller inte. Och för det använder vi Elbow-metoden. Elbow-metoden används för att ta reda på det optimala antalet kluster för en viss dataset. Denna metod kommer att användas för att ta reda på om värdet på k = 5 var korrekt eller inte eftersom vi inte får tydliga kluster. Så efter det går vi till följande graf, som visar att värdet på K = 5 inte är korrekt eftersom det optimala värdet faller mellan 3 eller 4.

Nu ska vi köra ovanstående kod igen med antalet kluster K = 4 som visas nedan:

Nu ska vi visualisera ovanstående K = 4-kluster för nybyggnad. Nedanstående skärm visar att klustringen nu sker genom k-medel.

Slutsats

Så vi studerade K-betyder-algoritmen i både numerisk kod och pythonkod. Vi har också sett hur vi kan ta reda på antalet kluster för en viss dataset. Ibland kan armbågsmetoden inte ge rätt antal kluster, så i så fall finns det flera metoder som vi kan välja.

Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...