Implementação de clustering K-means no conjunto de dados do crime



Implementação de cluster de Kmeans no conjunto de dados de crimes dos EUA

Neste blog, você entenderá o que é clustering K-means e como ele pode ser implementado nos dados criminais coletados em vários estados dos EUA. Os dados contêm crimes cometidos como: agressão, assassinato e estupro em prisões por 100.000 residentes em cada um dos 50 estados dos EUA em 1973. Além de analisar os dados, você também aprenderá sobre:

    • Encontrar o número ideal de clusters.
    • Minimizando distorção
    • Criação e análise da curva do cotovelo.
  • Compreendendo o mecanismo do algoritmo k-means.

Vamos começar com a análise. Os dados se parecem com:





dataset

Clique na imagem para baixar este conjunto de dados

Precisa deste conjunto de dados? Clique na imagem acima para fazer o download.



Primeiro, vamos preparar os dados para a análise. Para fazer isso, devemos remover quaisquer valores NA que possam estar presentes nos dados e converter os dados em uma matriz.

> 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') = Lista de 2 .. $: chr [1 : 50] 'Alabama' 'Alasca' 'Arizona' 'Arkansas' ... $: chr [1: 4] 'Assassinato' 'Assalto' 'UrbanPop' 'Estupro'

Vamos considerar o número de clusters como 5. A função Kmeans () pega os dados de entrada e o número de clusters nos quais os dados devem ser agrupados. A sintaxe é: kmeans (dados, k) onde k é o número de centros do cluster.

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

Analisando o Clustering:



> str (cl) Lista de 9 $ cluster: Int denominado [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'nomes') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ centers: num [1: 5, 1: 4] 2,95 6,11 12,14 5,59 11,3 ... ..- attr (*,' dimnames ') = Lista de 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Assassinato' 'Assalto' 'UrbanPop' 'Estupro '$ 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'

A função str () fornece a estrutura dos kmeans que inclui vários parâmetros como inss, betweenss, etc, analisando os quais você pode descobrir o desempenho dos kmeans.

betweenss: Entre a soma dos quadrados, ou seja, similaridade intracluster

dentro de si: dentro da soma do quadrado, ou seja, similaridade entre aglomerados

totwithinss: Soma de todas as entrelinhas de todos os clusters, ou seja, similaridade intra-cluster total

Um bom agrupamento terá um valor menor de dentro e maior valor de entre que depende do número de clusters ‘k’ escolhidos inicialmente. Vamos ver como podemos encontrar o valor ideal de 'k'.

Encontrando o valor ideal de 'k'

Um valor ideal de 'k' é o valor que nos dá um conjunto convergente de clusters com distorção mínima. Quanto maior a distorção, piores serão os clusters formados.

Distorção:

A distorção pode ser calculada em termos de 'dentro' de cada um dos clusters. Menor o valor de 'entranhas' de um determinado cluster, mais densamente povoado será, portanto, distorção mínima.

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

Esta função pega os dados e o valor de ke retorna o ‘km $ totwithinss’ para ele. ‘Km $ totwithinss’ é a soma total dos quadrados dentro do cluster, incluindo, assim, os limites de todos os 5 grupos criados, ou seja,soma (dentro). Quanto maior o valor de ‘km $ totwithinss’, maior será a distorção.

Para k = 5, inss é 24417,02

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

Vamos aumentar o valor de k de 5 para 10 e observar a diferença.

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

Pode-se ver que conforme o valor de K aumenta, a distorção diminui.

família de colunas cassandra vs tabela

Podemos retirar os diferentes valores de ‘km $ totwithinss’ e traçá-los em um gráfico para encontrar a relação entre a distorção e o valor de k. A seguinte função faz isso para nós:

> kmeans.dis maxk = 10> dis = kmeans.dis (crime, maxk)> plot (1: maxk, dis, type = 'b', xlab = 'Número de clusters', + ylab = 'Distorção', + col = 'azul')

Ta Da !!! Portanto, temos a famosa curva do cotovelo conosco.

Curva do cotovelo:

Este é o gráfico entre 'k', o número de clusters e o 'totwithinss' (ou distorção) para cada valor de k. Você pode ver que quando o número de aglomerados é menor, há uma diminuição gradual na distorção, mas à medida que continuamos aumentando o valor de k, a taxa de redução dos valores de distorção se torna constante.

Este valor de k além do qual a taxa de distorção se torna constante é o valor ideal. Aqui k = 4.

Vamos aplicar alguma animação para entender como R nos deu os resultados agrupados.

> biblioteca (animação)> cl<- kmeans.ani(crime, 4)

Algoritmo de agrupamento Kmeans:

Vamos entender o algoritmo no qual funciona o agrupamento de k-means:

Passo 1. Se k = 4, selecionamos 4 pontos aleatórios e assumimos que são centros de cluster para os clusters a serem criados.

Passo 2. Pegamos um ponto de dados aleatório do espaço e descobrimos sua distância de todos os 4 centros dos clusters. Se o ponto de dados estiver mais próximo do centro do cluster verde, ele será colorido em verde e, da mesma forma, todos os pontos serão categorizados entre os 4 clusters.

Etapa 3. Agora calculamos o centróide de todos os pontos verdes e atribuímos esse ponto como o centro do cluster para aquele cluster.

Da mesma forma, calculamos os centróides para todos os 4 pontos coloridos (agrupados) e atribuímos os novos centróides como centros do agrupamento.

Passo 4. As etapas 2 e 3 são executadas iterativamente, a menos que os centros do cluster convirjam em um ponto e não se movam mais.

string de data java até o momento


Assim, chegamos aos centros dos clusters convergentes.

Pode-se observar que os dados estão divididos em 4 clusters. Os centros do cluster são:

> cl $ centers Assassinato Assalto UrbanPop Estupro Texas 4,740741 104,8519 62,96296 16,10 Louisiana 10,907143 219,9286 71,71429 25,95 Carolina do Sul 13,375000 284,5000 46,25000 25,05 Novo México 11,040000 298,0000 77,60000 32,68

Cluster-4 com ‘Novo México’ como o centro do cluster tem uma enorme taxa de criminalidade com a maior população também.

Acompanhamento do Cluster-3 e Cluster-2.

Cada estado é atribuído a um cluster, dependendo do qual podemos agora prever sua classificação de crimes. A saída é semelhante a:

Tem alguma questão para nós? Mencione isso na seção de comentários e entraremos em contato com você.

Postagens relacionadas: