Implementierung von K-means Clustering im Crime Dataset

Implementierung von Kmeans-Clustering im US-amerikanischen Kriminalitätsdatensatz

In diesem Blog erfahren Sie, was K-bedeutet Clustering ist und wie es auf die in verschiedenen US-Bundesstaaten gesammelten kriminellen Daten implementiert werden kann. Die Daten enthalten Straftaten wie: Körperverletzung, Mord und Vergewaltigung bei Verhaftungen pro 100.000 Einwohner in jedem der 50 US-Bundesstaaten im Jahr 1973. Neben der Analyse der Daten erfahren Sie auch Folgendes:

    • Finden der optimalen Anzahl von Clustern.
    • Verzerrung minimieren
    • Erstellen und Analysieren der Ellbogenkurve.
  • Den Mechanismus des k-means-Algorithmus verstehen.

Beginnen wir mit der Analyse. Die Daten sehen aus wie:





dataset

Klicken Sie auf das Bild, um diesen Datensatz herunterzuladen

Benötigen Sie diesen Datensatz? Klicken Sie auf das obige Bild, um es herunterzuladen.



Bereiten wir zunächst die Daten für die Analyse vor. Zu diesem Zweck sollten wir alle NA-Werte entfernen, die möglicherweise in den Daten vorhanden sind, und die Daten in eine Matrix konvertieren.

> Verbrechen0 Verbrechen str (Verbrechen) 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 von 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Murder' 'Assault' 'UrbanPop' 'Rape'

Nehmen wir die Anzahl der Cluster als 5. Die Funktion Kmeans () verwendet die Eingabedaten und die Anzahl der Cluster, in denen die Daten geclustert werden sollen. Die Syntax lautet: kmeans (Daten, k) wobei k die Anzahl der Clusterzentren ist.

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

Analyse des Clusters:



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

Die Funktion str () gibt die Struktur der km-Werte an, die verschiedene Parameter wie Inss, Zwischenwerte usw. enthält, und analysiert, anhand derer Sie die Leistung von km-Werten ermitteln können.

zwischen: Quadratsumme, d. h. Intracluster-Ähnlichkeit

Innerhalb: Innerhalb der Summe des Quadrats, d. h. der Intercluster-Ähnlichkeit

totwithinss: Summe aller Innereien aller Cluster, d. h. Gesamtähnlichkeit innerhalb des Clusters

Ein gutes Clustering hat einen niedrigeren Wert für Inneres und einen höheren Wert für Zwischenwerte, was von der Anzahl der ursprünglich ausgewählten Cluster 'k' abhängt. Lassen Sie uns sehen, wie wir den optimalen Wert von 'k' finden können.

Finden des optimalen Wertes von 'k'

Ein optimaler Wert von 'k' ist der Wert, der uns eine konvergierte Menge von Clustern mit minimaler Verzerrung gibt. Je größer die Verzerrung ist, desto schlechter sind die gebildeten Cluster.

Verzerrung:

Die Verzerrung kann in Form von 'Withinss' aus jedem der Cluster berechnet werden. Je geringer der Wert von 'insidess' eines bestimmten Clusters ist, desto dichter ist er besiedelt, wodurch die Verzerrung minimal ist.

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

Diese Funktion nimmt die Daten und den Wert von k auf und gibt dafür den 'km $ totwithinss' zurück. 'Km $ totwithinss' ist die Gesamtsumme der Quadrate innerhalb des Clusters, einschließlich der Summe aller 5 erstellten Cluster, d. H.Summe (innerhalb). Je höher der Wert von 'km $ totwithinss' ist, desto größer ist die Verzerrung.

Für k = 5 ist insidess 24417.02

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

Erhöhen wir den Wert von k von 5 auf 10 und beobachten den Unterschied.

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

Es ist ersichtlich, dass mit zunehmendem Wert von K die Verzerrung abnimmt.

Wir können die verschiedenen Werte von 'km $ totwithinss' herausnehmen und in einem Diagramm darstellen, um die Beziehung zwischen Verzerrung und dem Wert von k zu ermitteln. Die folgende Funktion erledigt das für uns:

> kmeans.dis maxk = 10> dis = kmeans.dis (Verbrechen, maxk)> Handlung (1: maxk, dis, Typ = 'b', xlab = 'Anzahl der Cluster', + ylab = 'Verzerrung', + col = 'blau')

Ta Da !!! So haben wir die berühmte Ellbogen-Kurve bei uns.

Ellbogen-Kurve:

Dies ist die Darstellung zwischen 'k', der Anzahl der Cluster und dem 'totwithinss' (oder der Verzerrung) für jeden Wert von k. Sie können sehen, wenn die Anzahl der Cluster geringer ist, die Verzerrung allmählich abnimmt, aber wenn wir den Wert von k weiter erhöhen, wird die Rate der Verringerung der Verzerrungswerte konstant.

Dieser Wert von k, ab dem die Verzerrungsrate konstant wird, ist der optimale Wert. Hier ist k = 4.

Datenwissenschaft was ist das?

Wenden wir eine Animation an, um zu verstehen, wie R zu den Clusterergebnissen geführt hat.

> Bibliothek (Animation)> cl<- kmeans.ani(crime, 4)

Kmeans Clustering-Algorithmus:

Lassen Sie uns den Algorithmus verstehen, mit dem k-means Clustering funktioniert:

Schritt 1. Wenn k = 4 ist, wählen wir 4 zufällige Punkte aus und nehmen an, dass sie Clusterzentren für die zu erstellenden Cluster sind.

Schritt 2. Wir nehmen einen zufälligen Datenpunkt aus dem Raum und ermitteln seine Entfernung zu allen 4 Clusterzentren. Wenn der Datenpunkt dem grünen Clusterzentrum am nächsten liegt, wird er grün gefärbt, und in ähnlicher Weise werden alle Punkte unter den 4 Clustern kategorisiert.

Schritt 3. Jetzt berechnen wir den Schwerpunkt aller grünen Punkte und weisen diesen Punkt als Clusterzentrum für diesen Cluster zu.

In ähnlicher Weise berechnen wir Schwerpunkte für alle 4 farbigen (gruppierten) Punkte und weisen die neuen Schwerpunkte als Clusterzentren zu.

Schritt 4. Schritt 2 und Schritt 3 werden iterativ ausgeführt, es sei denn, die Cluster-Zentren konvergieren an einem Punkt und bewegen sich nicht mehr.


So erreichen wir die konvergierten Clusterzentren.

Es ist ersichtlich, dass die Daten in 4 Cluster unterteilt sind. Die Cluster-Zentren sind:

> cl $ center Murder Assault UrbanPop Vergewaltigung 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

Cluster-4 mit „New Mexico“ als Clusterzentrum weist eine enorme Kriminalitätsrate mit der höchsten Bevölkerungszahl auf.

Cluster-3 und Cluster-2 folgen.

Jedem Staat wird ein Cluster zugewiesen, je nachdem, wie wir jetzt sein Kriminalitätsranking vorhersagen können. Die Ausgabe sieht wie folgt aus:

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren und wir werden uns bei Ihnen melden.

Zusammenhängende Posts:

Was ist eine Methode Javascript