Implementarea K-înseamnă Clustering pe setul de date privind criminalitatea



Implementarea grupării Kmeans pe setul de date al criminalității SUA

În acest blog, veți înțelege ce este clusterizarea K-mean și cum poate fi implementat pe datele criminale colectate în diferite state americane. Datele conțin infracțiuni comise precum: asalt, crimă și viol în arestări la 100.000 de rezidenți în fiecare dintre cele 50 de state americane în 1973. Odată cu analizarea datelor, veți afla și despre:

data tip date SQL server
    • Găsirea numărului optim de clustere.
    • Minimizarea distorsiunii
    • Crearea și analiza curbei cotului.
  • Înțelegerea mecanismului algoritmului k-înseamnă.

Să începem cu analiza. Datele arată ca:





dataset

Faceți clic pe imagine pentru a descărca acest set de date

Aveți nevoie de acest set de date? Faceți clic pe imaginea de mai sus pentru ao descărca.



Mai întâi să pregătim datele pentru analiză. Pentru a face acest lucru, ar trebui să eliminăm orice valori NA care ar putea fi prezente în date și să le convertim într-o matrice.

> 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') = List of 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Murder' 'Assault' 'UrbanPop' 'Rape' '

Să luăm numărul de clustere ca fiind 5. Funcția Kmeans () ia datele de intrare și numărul de clustere în care datele vor fi grupate. Sintaxa este: kmeans (date, k) unde k este numărul de centre de cluster.

> clasa cl (cl) [1] „kmeans”

Analizând clusterizarea:



> str (cl) Listă de 9 $ cluster: Numit int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'nume') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ centre: num [1: 5, 1: 4] 2.95 6.11 12.14 5.59 11.3 ... ..- attr (*,' dimnames ') = List of 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Crimă' 'Asalt' 'UrbanPop' 'Viol '$ 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'

Funcția str () oferă structura kmeans-ului, care include diverși parametri, cum ar fi withinss, betweenss, etc, analizând care puteți afla performanța kmeans-urilor.

între sume: între suma pătratelor, adică asemănarea intraclusteră

withinss: În cadrul sumei pătratului, adică a asemănării între grupuri

totwithinss: Suma tuturor withins-urilor tuturor clusterelor, adică similaritatea totală intra-cluster

O grupare bună, va avea o valoare mai mică a withins și o valoare mai mare a betweens, care depinde de numărul de clustere „k” alese inițial. Să vedem cum putem găsi valoarea optimă a „k”.

Găsirea valorii optime a „k”

O valoare optimă a „k” este valoarea care ne oferă un set convergent de clustere cu distorsiuni minime. Cu cât distorsiunea este mai mare, cu atât mai rău vor fi grupurile formate.

Deformare:

Distorsiunea poate fi calculată în termeni de „withinss” din fiecare dintre grupuri. Cu cât valoarea „withinss” a unui anumit cluster este mai mică, va fi mai dens populată, deci o distorsiune minimă.

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

Această funcție preia datele și valoarea lui k și returnează „km $ totwithinss” pentru aceasta. „Km $ totwithinss” este suma totală a pătratelor din interiorul clusterului, incluzând astfel încorporarea tuturor celor 5 clustere create, adicăsuma (withinss). Cu cât valoarea „km $ totwithinss” este mai mare, distorsiunea va fi mai mare.

Pentru k = 5, withinss este 24417.02

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

Să creștem valoarea lui k de la 5 la 10 și să observăm diferența.

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

Se poate observa că pe măsură ce valoarea lui K crește, distorsiunea scade.

Putem scoate diferitele valori ale „km $ totwithinss” și le putem trasa într-un grafic pentru a găsi relația dintre distorsiune și valoarea lui k. Următoarea funcție face asta pentru noi:

analiza sentimentului twitter folosind scânteie
> kmeans.dis maxk = 10> dis = kmeans.dis (crime, maxk)> complot (1: maxk, dis, type = 'b', xlab = 'Number of Clusters', + ylab = 'Distortion', + col = „albastru”)

Ta Da !!! Astfel avem cu noi faimoasa curbă a cotului.

Curba cotului:

Acesta este graficul dintre „k”, numărul de clustere și „totwithinss” (sau distorsiune) pentru fiecare valoare a lui k. Puteți vedea când numărul de cluster este mai mic, există o scădere treptată a distorsiunii, dar pe măsură ce continuăm să creștem valoarea lui k, rata de reducere a valorilor distorsiunii devine constantă.

Această valoare de k dincolo de care rata de distorsiune devine constantă este valoarea optimă. Aici k = 4.

Să aplicăm câteva animații pentru a înțelege modul în care R ne-a dat rezultatele grupate.

> bibliotecă (animație)> cl<- kmeans.ani(crime, 4)

Algoritm de grupare Kmeans:

Să înțelegem algoritmul pe care funcționează clusterizarea k-means:

Pasul 1. Dacă k = 4, selectăm 4 puncte aleatorii și le presupunem a fi centre de cluster pentru clusterele care trebuie create.

Pasul 2. Luăm un punct de date aleatoriu din spațiu și aflăm distanța acestuia de toate cele 4 centre de clustere. Dacă punctul de date este cel mai aproape de centrul clusterului verde, acesta este colorat în verde și în mod similar toate punctele sunt clasificate în cele 4 clustere.

Pasul 3. Acum calculăm centroidul tuturor punctelor verzi și atribuim acel punct ca centru de cluster pentru acel cluster.

În mod similar, calculăm centroizi pentru toate cele 4 puncte colorate (grupate) și atribuim noii centroizi drept centre de cluster.

Pasul 4. Pasul 2 și pasul 3 sunt rulate iterativ, cu excepția cazului în care centrele clusterului converg într-un punct și nu se mai mișcă.

c ++ fibonacci recursiv


Astfel, ajungem la centrele de clustere convergente.

Se poate vedea că datele sunt împărțite în 4 clustere. Centrele cluster sunt:

> cl $ centres 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

Clusterul-4 cu „New Mexico” ca centru al clusterului are o rată imensă de criminalitate, având și cea mai mare populație.

Cluster-3 și Cluster-2 urmăresc.

Fiecărui stat i se atribuie un cluster, în funcție de care putem prezice acum clasamentul criminalității sale. Ieșirea arată ca:

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii și vă vom răspunde.

Postări asemănatoare: