Datavitenskap

K-Means Clustering

K-Means Clustering

Koden for denne bloggen, sammen med datasettet, er tilgjengelig på følgende lenke https: // github.com / shekharpandey89 / k-betyr

K-Means-klynging er en maskinlæringsalgoritme uten tilsyn. Hvis vi sammenligner K-Means uovervåket klyngealgoritme med den overvåkede algoritmen, er det ikke nødvendig å trene modellen med merkede data. K-Means algoritme brukes til å klassifisere eller gruppere forskjellige objekter basert på deres attributter eller funksjoner i et K antall grupper. Her er K et heltall. K-Means beregner avstanden (ved hjelp av avstandsformelen) og finner deretter minimumsavstanden mellom datapunktene og sentrumsgruppen for å klassifisere dataene.

La oss forstå K-midlene ved hjelp av det lille eksemplet ved hjelp av de 4 objektene, og hvert objekt har to attributter.

Objektnavn Attributt_X Attributt_Y
M1 1 1
M2 2 1
M3 4 3
M4 5 4

K-midler for å løse numerisk eksempel:

For å løse det ovennevnte numeriske problemet gjennom K-Means, må vi følge følgende trinn:

K-Means-algoritmen er veldig enkel. Først må vi velge hvilket som helst tilfeldig antall K og deretter velge sentroider eller sentrum av klyngene. For å velge sentroider kan vi velge hvilket som helst tilfeldig antall objekter for initialiseringen (avhenger av verdien av K).

De grunnleggende trinnene for K-Means-algoritmen er som følger:

  1. Fortsetter å løpe til ingen gjenstander beveger seg fra sentroidene (stabile).
  2. Vi velger først noen sentroider tilfeldig.
  3. Deretter bestemmer vi avstanden mellom hvert objekt og sentroider.
  4. Gruppere objektene basert på minimumsavstand.

Så hvert objekt har to punkter som X og Y, og de representerer på grafområdet som følger:

Så vi valgte i utgangspunktet verdien av K = 2 som tilfeldig for å løse problemet vårt ovenfor.

Trinn 1: I utgangspunktet velger vi de to første objektene (1, 1) og (2, 1) som våre sentroider. Grafen nedenfor viser det samme. Vi kaller disse sentroidene C1 (1, 1) og C2 (2,1). Her kan vi si at C1 er gruppe_1 og C2 er gruppe_2.

Trinn 2: Nå skal vi beregne hvert objektdatapunkt til sentroider ved hjelp av den euklidiske avstandsformelen.

For å beregne avstanden bruker vi følgende formel.

Vi beregner avstanden fra objekter til sentroider, som vist på bildet nedenfor.

Så vi beregnet hvert objektdatapunktavstand gjennom avstandsmetoden ovenfor, til slutt fikk vi avstandsmatrisen som gitt nedenfor:

DM_0 =

0 1 3.61 5 C1 = (1,1)

klynge1

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

klynge2

gruppe_2
EN B C D
1 2 4 5   X
1 1 3 4   Y

Nå beregnet vi hvert objekts avstandsverdi for hver sentroid. For eksempel har objektpunktene (1,1) en avstandsverdi til c1 er 0 og c2 er 1.

Fra avstandsmatrisen ovenfor finner vi ut at objektet (1, 1) har en avstand til klynge1 (c1) er 0 og til klynge2 (c2) er 1. Så objektet en er nær selve cluster1.

Tilsvarende, hvis vi sjekker objektet (4, 3), er avstanden til klynge1 3.61 og til cluster2 er 2.83. Så objektet (4, 3) vil skifte til cluster2.

Tilsvarende, hvis du ser etter objektet (2, 1), er avstanden til klynge1 1 og til klynge2 er 0. Så dette objektet vil skifte til cluster2.

Nå, i henhold til avstandsverdien, grupperer vi poengene (objektklynging).

G_0 =

EN B C D
1 0 0 0   gruppe_1
0 1 1 1   gruppe_2

I henhold til avstandsverdien grupperer vi poengene (objektklynging).

Og til slutt vil grafen se ut som nedenfor etter å ha gjort klyngingen (G_0).

Iterasjon_1: Nå skal vi beregne nye sentroider etter hvert som gruppene ble endret på grunn av avstandsformelen som vist i G_0. Så, group_1 har bare ett objekt, så verdien er fortsatt c1 (1,1), men group_2 har 3 objekter, så den nye sentrumsverdien er

Så, nye c1 (1,1) og c2 (3.66, 2.66)

Nå må vi igjen beregne hele avstanden til nye sentroider som vi beregnet tidligere.

DM_1 =

0 1 3.61 5 C1 = (1,1)

klynge1

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

klynge2

gruppe_2
EN B C D
1 2 4 5   X
1 1 3 4   Y

Iteration_1 (klynging av objekter): Nå, på vegne av beregningen av den nye avstandsmatrisen (DM_1), klynger vi den i henhold til det. Så vi skifter M2-objektet fra group_2 til group_1 som regel om minimumsavstand til sentroider, og resten av objektet vil være den samme. Så ny klynging blir som nedenfor.

G_1 =

EN B C D
1 1 0 0   gruppe_1
0 0 1 1   gruppe_2

Nå må vi beregne de nye sentroidene igjen, da begge objektene har to verdier.

Så, nye sentroider vil være

Så etter at vi har fått de nye sentroidene, vil klyngingen se ut som nedenfor:

c1 = (1.5, 1)

c2 = (4.5, 3.5)

Iterasjon_2: Vi gjentar trinnet der vi beregner den nye avstanden til hvert objekt til nye beregnede sentroider. Så etter beregningen vil vi få følgende avstandsmatrise for iterasjon_2.

DM_2 =

0.5 0.5 3.20 4.61 C1 = (1.5, 1)

klynge1

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

klynge2

gruppe_2

A B C D

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

Igjen, vi gjør klyngingsoppgavene basert på minimumsavstanden som vi gjorde før. Så etter å ha gjort det, fikk vi klyngematrisen som er den samme som G_1.

G_2 =

EN B C D
1 1 0 0   gruppe_1
0 0 1 1   gruppe_2

Som her, G_2 == G_1, så det kreves ingen ytterligere iterasjon, og vi kan stoppe her.

K-Means Implementering ved bruk av Python:

Nå skal vi implementere K-betyr-algoritmen i python. For å implementere K-middel skal vi bruke det berømte Iris-datasettet, som er åpen kildekode. Dette datasettet har tre forskjellige klasser. Dette datasettet har i utgangspunktet fire funksjoner: Sepal lengde, sepal bredde, kronblad lengde og kronblad bredde. Den siste kolonnen vil fortelle navnet på klassen på den raden som setosa.

Datasettet ser ut som nedenfor:

For implementeringen av python k-betyr, må vi importere de nødvendige bibliotekene. Så vi importerer Pandaer, Numpy, Matplotlib og også KMeans fra sklearn.clutser som gitt nedenfor:

Vi leser Iris.csv datasett ved hjelp av read_csv pandas metode og vil vise de 10 beste resultatene ved hjelp av hodemetoden.

Nå leser vi bare de funksjonene i datasettet som vi krevde for å trene modellen. Så vi leser alle de fire funksjonene i datasettene (sepal lengde, sepal bredde, petal lengde, petal bredde). For det overførte vi de fire indeksverdiene [0, 1, 2, 3] til iloc-funksjonen til pandas dataramme (df) som vist nedenfor:

Nå velger vi antall klynger tilfeldig (K = 5). Vi oppretter objektet til K-middelklassen og passer deretter x-datasettet vårt til det for trening og prediksjon som vist nedenfor:

Nå skal vi visualisere modellen vår med den tilfeldige K = 5-verdien. Vi kan tydelig se fem klynger, men det ser ut til at den ikke er nøyaktig, som vist nedenfor.

Så vårt neste trinn er å finne ut om antallet klynger var nøyaktig eller ikke. Og for det bruker vi albuen-metoden. Elbow-metoden brukes til å finne ut det optimale antallet klyngen for et bestemt datasett. Denne metoden vil bli brukt for å finne ut om verdien av k = 5 var riktig eller ikke, ettersom vi ikke får klare klynger. Så etter det går vi til følgende graf, som viser at verdien av K = 5 ikke er riktig fordi den optimale verdien faller mellom 3 eller 4.

Nå skal vi kjøre ovennevnte kode igjen med antall klynger K = 4 som vist nedenfor:

Nå skal vi visualisere ovennevnte K = 4 nybyggklynging. Skjermbildet nedenfor viser at nå er klyngingen gjort gjennom k-middel.

Konklusjon

Så vi studerte K-betyr-algoritmen i både numerisk og python-kode. Vi har også sett hvordan vi kan finne ut antall klynger for et bestemt datasett. Noen ganger kan ikke Albue-metoden gi riktig antall klynger, så i så fall er det flere metoder vi kan velge.

Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...
Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...
Åpne kildeporter for kommersielle spillmotorer
Gratis, åpen kildekode og plattformspillmotorrekreasjoner kan brukes til å spille gamle så vel som noen av de ganske nylige spilletitlene. Denne artik...