La oss forstå K-betyr ved å bruke det lille eksemplet ved å bruke de 4 objektene, og hvert objekt har 2 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 ovennevnte numeriske problem gjennom K-midler, må vi følge følgende trinn:
K-middel-algoritmen er veldig enkel. Først må vi velge et tilfeldig antall K og deretter velge centroids eller sentrum av klyngene. For å velge centroids, kan vi velge et hvilket som helst tilfeldig antall objekter for initialiseringen (avhenger av verdien av k).
K-middel-algoritmen Grunnleggende trinn er som følger:
Så hvert objekt har to punkter som X og Y, og de representerer på grafrommet som følgende:
Så vi velger opprinnelig verdien av k = 2 som tilfeldig for å løse vårt problem ovenfor.
Trinn 1: Til å begynne med velger vi de to første objektene (1, 1) og (2, 1) som våre centroids. Grafen nedenfor viser det samme. Vi kaller disse centroidene C1 (1, 1) og C2 (2,1). Her kan vi si at C1 er gruppe_1 og C2 er Group_2.
Trinn 2: Nå vil vi beregne hvert objektdatapunkt til centroider ved bruk av den euklidiske avstandsformelen.
For å beregne avstanden bruker vi følgende formel.
Vi beregner avstanden fra objekter til centroids, som vist i bildet nedenfor.
Så vi beregnet alle objektdatapunktavstand gjennom avstandsmetoden ovenfor, fikk endelig avstandsmatrisen som gitt nedenfor:
Dm_0 =
0 | 1 | 3.61 | 5 | C1 = (1,1) Cluster1 | gruppe_1 |
1 | 0 | 2.83 | 4.24 | C2 = (2,1) Cluster2 | gruppe_2 |
EN | B | C | D | |
---|---|---|---|---|
1 | 2 | 4 | 5 | X |
1 | 1 | 3 | 4 | Y |
Nå beregnet vi hvert objekts avstandsverdi for hver centroid. For eksempel har objektpunktene (1,1) en avstandsverdi til C1 er 0 og C2 er 1.
Ettersom vi fra ovennevnte avstandsmatrise finner ut at objektet (1, 1) har en avstand til Cluster1 (C1) er 0 og til Cluster2 (C2) er 1. Så objektet en er nær Cluster1 selv.
Tilsvarende, hvis vi sjekker objektet (4, 3), er avstanden til klyngen1 3.61 og til Cluster2 er 2.83. Så, objektet (4, 3) vil skifte til cluster2.
Tilsvarende, hvis du sjekker for objektet (2, 1), er avstanden til Cluster1 1 og til Cluster2 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 |
Nå, i henhold til avstandsverdien, grupperer vi poengene (objektklynging).
Og til slutt vil grafen se ut som nedenfor etter å ha gjort gruppering (G_0).
Iterasjon_1: Nå vil vi beregne nye centroids etter hvert som de første gruppene endret på grunn av avstandsformelen som vist i G_0. Så gruppen_1 har bare ett objekt, så verdien er fremdeles C1 (1,1), men Group_2 har 3 objekter, så den nye centroidverdien er
Så ny C1 (1,1) og C2 (3.66, 2.66)
Nå må vi igjen beregne all avstanden til nye centroids som vi beregnet før.
Dm_1 =
0 | 1 | 3.61 | 5 | C1 = (1,1) Cluster1 | gruppe_1 |
3.14 | 2.36 | 0.47 | 1.89 | C2 = (3.66,2.66) Cluster2 | gruppe_2 |
EN | B | C | D | |
---|---|---|---|---|
1 | 2 | 4 | 5 | X |
1 | 1 | 3 | 4 | Y |
Iterasjon_1 (objektklynging): Nå, på vegne av beregningen av nye distansematrise (DM_1), grupperer vi den i henhold til den. Så vi forskyver M2 -objektet fra gruppe_2 til gruppe_1 som regelen om minimum avstand til centroids, og resten av objektet vil være det samme. Så ny klynging vil være 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 centroidene igjen, ettersom begge objektene har to verdier.
Så nye centroids vil være
Så etter at vi har fått de nye centroidene, vil grupperingene se ut 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 centroids. 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) Cluster1 | gruppe_1 |
4.30 | 3.54 | 0.71 | 0.71 | C2 = (4.5, 3.5) Cluster2 | gruppe_2 |
A B C D
EN | B | C | D | |
---|---|---|---|---|
1 | 2 | 4 | 5 | X |
1 | 1 | 3 | 4 | Y |
Igjen, vi gjør klyngeoppgavene 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 ikke ytterligere iterasjon, og vi kan stoppe her.
K-betyr implementering ved bruk av Python:
Nå skal vi implementere K-Means-algoritmen i Python. For å implementere K-betyr, 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 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-Means, 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, sepalbredde, kronblad, kronblad bredde). For det passerte vi de fire indeksverdiene [0, 1, 2, 3] inn i ILOC -funksjonen til Pandas dataramme (DF) som vist nedenfor:
Nå velger vi antall klynger tilfeldig (k = 5). Vi lager gjenstanden for K-Means-klassen og passer deretter til vårt X-datasett 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 som om det ikke er nøyaktig, som vist nedenfor.
Så vårt neste trinn er å finne ut at antallet klynger var nøyaktig eller ikke. Og for det bruker vi albuemetoden. Albuemetoden 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, da vi ikke får klar gruppering. Så etter det går vi til følgende graf, som viser at verdien på k = 5 ikke er riktig fordi den optimale verdien faller mellom 3 eller 4.
Nå skal vi kjøre koden ovenfor igjen med antall klynger k = 4 som vist nedenfor:
Nå skal vi visualisere ovennevnte k = 4 nybyggende klynger. Skjermbildet nedenfor viser at nå er klyngen gjort gjennom K-betyr.
Konklusjon
Så vi studerte K-Means-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 albuemetoden gi riktig antall klynger, så i så fall er det flere metoder som vi kan velge.
Koden for denne bloggen, sammen med datasettet, er tilgjengelig på følgende lenke https: // github.com/shekharpandey89/k-middel