Implementació de K-significa agrupació al conjunt de dades de delictes



Implementació de l'agrupació de Kmeans al conjunt de dades de crims dels EUA

En aquest bloc, entendreu què és l’agrupació de K-means i com es pot implementar en les dades criminals recopilades en diversos estats dels EUA. Les dades contenen delictes comesos com: assalt, assassinat i violació en detencions per cada 100.000 residents a cadascun dels 50 estats dels Estats Units el 1973. Juntament amb l'anàlisi de les dades, també coneixereu:

theano vs tensorflow vs keras
    • Trobar el nombre òptim de clústers.
    • Minimització de la distorsió
    • Creació i anàlisi de la corba del colze.
  • Comprensió del mecanisme de l'algorisme k-means.

Comencem amb l’anàlisi. Les dades són:





dataset

Feu clic a la imatge per descarregar aquest conjunt de dades

Necessiteu aquest conjunt de dades? Feu clic a la imatge anterior per descarregar-la.



Primer preparem les dades per a l’anàlisi. Per fer-ho, hauríem d’eliminar els valors NA que poguessin estar presents a les dades i convertir-les en una matriu.

> crime0 crime str (crime) 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') = Llista de 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Assassinat' 'Assalt' 'UrbanPop' 'Violació' '

Prenguem el nombre de clústers a 5. La funció Kmeans () pren les dades d'entrada i el nombre de clústers en què es volen agrupar les dades. La sintaxi és: kmeans (dades, k) on k és el nombre de centres de clústers.

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

Analitzar el clúster:



> str (cl) Llista de 9 $ clúster: Nom amb int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'noms') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ centres: num [1: 5, 1: 4] 2,95 6,11 12,14 5,59 11,3 ... ..- attr (*,' dimnames ') = Llista de 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Assassinat' 'UrbanPop' 'Violació '$ 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'

La funció str () proporciona l'estructura dels kmeans que inclou diversos paràmetres com withinss, betweenss, etc, analitzant els quals podeu esbrinar el rendiment dels kmeans.

entre una suma de quadrats, és a dir, una similitud intraclúster

withinss: dins de la suma del quadrat, és a dir, semblança entre grups

totwithinss: suma de tots els withins de tots els clústers, és a dir, semblança total intra-clúster

Una bona agrupació tindrà un valor inferior de withins i un valor més elevat de betweens, que depèn del nombre de clústers ‘k’ escollits inicialment. Vegem com podem trobar el valor òptim de 'k'.

Trobar el valor òptim de 'k'

Un valor òptim de 'k' és el valor que ens proporciona un conjunt convergent de clústers amb una distorsió mínima. Com més gran sigui la distorsió, pitjor seran els clústers formats.

Distorsió:

La distorsió es pot calcular en termes de 'withinss' de cadascun dels clústers. Com més petit sigui el valor de ‘withinss’ d’un clúster concret, més densament estarà, de manera que es produirà una distorsió mínima.

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

Aquesta funció pren les dades i el valor de k i li retorna els 'km $ totwithinss'. 'Km $ totwithinss' és la suma total de quadrats dins del clúster, inclosos així els insins de tots els 5 clústers creats, és a dir,suma (withinss). Com més gran sigui el valor de 'km $ totwithinss', major serà la distorsió.

Per a k = 5, withinss és 24417,02

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

Augmentem el valor de k de 5 a 10 i observem la diferència.

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

Es pot veure que a mesura que augmenta el valor de K, disminueix la distorsió.

Podem treure els diferents valors de ‘km $ totwithinss’ i representar-los en un gràfic per trobar la relació entre la distorsió i el valor de k. La funció següent ho fa per a nosaltres:

java data string fins a la data
> kmeans.dis maxk = 10> dis = kmeans.dis (crime, maxk)> plot (1: maxk, dis, type = 'b', xlab = 'Nombre de clústers', + ylab = 'Distorsió', + col = 'blau')

Ta Da !!! Així tenim la famosa corba del colze amb nosaltres.

Corba del colze:

Aquesta és la trama entre 'k', el nombre de clústers i els 'totwithinss' (o distorsió) per a cada valor de k. Podeu veure quan el nombre de clústers és menor, hi ha una disminució gradual de la distorsió, però a mesura que anem augmentant el valor de k, la taxa de reducció dels valors de la distorsió es fa constant.

Aquest valor de k més enllà del qual la velocitat de distorsió es converteix en constant és el valor òptim. Aquí k = 4.

Apliquem una mica d’animació per entendre com R ens va donar els resultats agrupats.

> biblioteca (animació)> cl<- kmeans.ani(crime, 4)

Algorisme de clusterització de Kmeans:

Comprenguem l'algorisme en què funciona l'agrupació k-means:

Pas 1. Si k = 4, seleccionem 4 punts aleatoris i suposem que són centres de clúster per als clústers a crear.

Pas 2. Agafem un punt de dades aleatori de l’espai i descobrim la seva distància dels quatre centres de clústers. Si el punt de dades és el més proper al centre del clúster verd, es color de verd i de manera similar tots els punts es classifiquen entre els 4 clústers.

Pas 3. Ara calculem el centre de tots els punts verds i assignem aquest punt com a centre del clúster per a aquest clúster.

De la mateixa manera, calculem els centroides per a tots els 4 punts de colors (agrupats) i assignem els nous centreides com a centres de clústers.

Pas 4. El pas 2 i el pas 3 s’executen de manera iterativa, tret que els centres del clúster convergeixin en un punt i ja no es moguin.

ordenar biblioteca c ++


Així, arribem als centres de clústers convergents.

Es pot veure que les dades es divideixen en 4 clústers. Els centres del clúster són:

> cl $ centres Murder Assault UrbanPop Rape Texas 4.740741 104.8519 62.96296 16.10 Louisiana 10.907143 219.9286 71.71429 25.95 Carolina del Sud 13.375000 284.5000 46.25000 25.05 Nou Mèxic 11.040000 298.0000 77.60000 32.68

El clúster 4 amb 'Nou Mèxic' com a centre del clúster té una enorme taxa de criminalitat amb la població més alta també.

Seguiment del clúster-3 i del clúster-2.

A cada estat se li assigna un clúster, en funció del qual ara podem predir la seva classificació criminal. La sortida té el següent aspecte:

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondrem.

Articles Relacionats: