Î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:
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: