Implementering av K-betyr Clustering på Crime Dataset



Implementering av Kmeans-gruppering i det amerikanske kriminaldatasettet

I denne bloggen vil du forstå hva som er K-betyr klynging og hvordan det kan implementeres på kriminelle data samlet i forskjellige amerikanske stater. Dataene inneholder forbrytelser begått som: overfall, drap og voldtekt ved arrestasjoner per 100.000 innbyggere i hver av de 50 amerikanske statene i 1973. I tillegg til å analysere dataene vil du også lære om:

    • Finne det optimale antall klynger.
    • Minimerer forvrengning
    • Opprette og analysere albuekurven.
  • Forstå mekanismen til k-betyr algoritme.

La oss starte med analysen. Dataene ser ut som:





dataset

Klikk på bildet for å laste ned dette datasettet

Trenger du dette datasettet? Klikk på bildet over for å laste det ned.



La oss først forberede dataene for analysen. For å gjøre det, bør vi fjerne eventuelle NA-verdier som kan være til stede i dataene og konvertere dataene til en matrise.

> kriminalitet0 kriminalitet str (forbrytelse) num [1:50, 1: 4] 13,2 10 8,1 8,8 9 7,9 3,3 5,9 15,4 17,4 ... - attr (*, 'dimnames') = Liste over 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Murder' 'Assault' 'UrbanPop' 'Rape'

La oss ta antall klynger som skal være 5. Kmeans () -funksjonen tar inngangsdataene og antall klynger der dataene skal grupperes. Syntaksen er: kmeans (data, k) hvor k er antall klyngesentre.

> cl klasse (cl) [1] 'kmeans'

Analyse av klyngingen:



> str (cl) Liste over 9 $ klynger: Navngitt int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ sentre: num [1: 5, 1: 4] 2,95 6,11 12,14 5,59 11,3 ... ..- attr (*,' dimnames ') = Liste over 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Mord' 'Overfall' 'UrbanPop' 'Voldtekt '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ tot.withinss: num 28240 $ betweenss: num 327568 $ size: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ ifault: int 0 - attr (*, 'class') = chr 'kmeans'

Str () -funksjonen gir strukturen til kmeans som inkluderer forskjellige parametere som withinss, betweenss, etc, og analyserer hvilke du kan finne ut ytelsen til kmeans.

betweenss: Mellom sum av kvadrater, dvs. intraklusterlikhet

withinss: Innen sum av kvadrat, dvs. intercluster-likhet

totwithinss: Summen av alle withinss av alle klyngene, dvs. total likhet innen klyngen

En god gruppering vil ha en lavere verdi på withinss og høyere verdi på betweenss, som avhenger av antall klynger ‘k’ som ble valgt først. La oss se hvordan vi kan finne den optimale verdien av ‘k’.

Finne den optimale verdien av ‘k’

En optimal verdi av ‘k’ er verdien som gir oss et konvergert sett med klynger med minimal forvrengning. Jo større forvrengning, verre blir klyngene som dannes.

Forvrengning:

Forvrengningen kan beregnes i form av 'withinss' fra hver av klyngene. Mindre verdien av 'withinss' av en bestemt klynge, tettere befolket vil den være, og dermed minimal forvrengning.

kmeans.wss.k<- function(crime, k){ km = kmeans(crime, k) return (km$tot.withinss) }

Denne funksjonen tar opp dataene og verdien av k og returnerer ‘km $ totwithinss’ for den. ‘Km $ totwithinss’ er den totale summen av kvadrater innen klyngen, og inkluderer dermed medinss av alle de 5 klyngene som er opprettet, dvs.sum (withinss). Høyere verdi av ‘km $ totwithinss’, større blir forvrengningen.

hvordan lage dynamiske websider

For k = 5 er withinss 24417.02

> kmeans.wss.k (forbrytelse, 5) [1] 24417.02

La oss øke verdien av k fra 5 til 10, og observere forskjellen.

> kmeans.wss.k (forbrytelse, 10) [1] 11083.04

Det kan sees at når verdien av K øker, forvrenger forvrengningen.

Vi kan ta ut de forskjellige verdiene til ‘km $ totwithinss’ og plotte dem i en graf for å finne forholdet mellom forvrengning og verdien av k. Følgende funksjon gjør det for oss:

> kmeans.dis maxk = 10> dis = kmeans.dis (forbrytelse, maxk)> plot (1: maxk, dis, type = 'b', xlab = 'Antall klynger', + ylab = 'Distortion', + col = 'blå')

Ta Da !!! Dermed har vi den berømte albuekurven med oss.

Albuekurve:

Dette er plottet mellom ‘k’, antall klynger og ‘totwithinss’ (eller forvrengning) for hver verdi av k. Du kan se når antall klynger er mindre, det er en gradvis reduksjon i forvrengning, men når vi fortsetter å øke verdien av k, blir hastigheten på reduksjon av forvrengningsverdiene konstant.

Denne verdien av k utover hvilken forvrengningshastigheten blir konstant, er den optimale verdien. Her er k = 4.

La oss bruke litt animasjon for å forstå hvordan R ga oss de grupperte resultatene.

> bibliotek (animasjon)> kl<- kmeans.ani(crime, 4)

Kmeans grupperingsalgoritme:

La oss forstå algoritmen som k-betyr klynging fungerer på:

Trinn 1. Hvis k = 4, velger vi 4 tilfeldige punkter og antar at de er klyngesentre for klyngene som skal opprettes.

Steg 2. Vi tar opp et tilfeldig datapunkt fra rommet og finner ut avstanden fra alle de 4 klyngesentrene. Hvis datapunktet er nærmest det grønne klyngesenteret, farges det grønt, og på samme måte er alle punktene kategorisert blant de 4 klyngene.

hvordan du varsler i javascript

Trinn 3. Nå beregner vi sentroid av alle de grønne punktene og tilordner det punktet som klyngesenter for den klyngen.

På samme måte beregner vi sentroider for alle de 4 fargede (grupperte) punktene og tildeler de nye sentroidene som klyngesentrene.

Trinn 4. Trinn 2 og trinn 3 kjøres iterativt, med mindre klyngesentrene konvergerer på et punkt og ikke lenger beveger seg.


Dermed når vi de konvergerte klyngesentrene.

Det kan sees at dataene er delt inn i 4 klynger. Klyngesentrene er:

> cl $ sentre Murder Assault UrbanPop Rape Texas 4.740741 104.8519 62.96296 16.10 Louisiana 10.907143 219.9286 71.71429 25.95 South Carolina 13.375000 284.5000 46.25000 25.05 New Mexico 11.040000 298.0000 77.60000 32.68

Klynge-4 med ‘New Mexico’ som klyngesenter har en enorm kriminalitetsrate med høyest befolkning også.

Klynge-3 og Klynge-2 følger opp.

Hver stat tildeles en klynge, avhengig av hvilken vi nå kan forutsi dens rangering av kriminalitet. Utgangen ser ut som:

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet, så kommer vi tilbake til deg.

Relaterte innlegg: