Melaksanakan Pengelompokan K-bermaksud pada Kumpulan Data Jenayah



Pelaksanaan pengelompokan Kmeans pada kumpulan data jenayah AS

Di blog ini, anda akan memahami apa itu pengelompokan K-means dan bagaimana ia dapat dilaksanakan pada data jenayah yang dikumpulkan di pelbagai negara AS. Data tersebut mengandungi jenayah yang dilakukan seperti: serangan, pembunuhan, dan pemerkosaan dalam penangkapan setiap 100,000 penduduk di setiap 50 negeri AS pada tahun 1973. Bersama dengan menganalisis data, anda juga akan mengetahui tentang:

    • Mencari bilangan kluster yang optimum.
    • Meminimumkan penyelewengan
    • Membuat dan menganalisis keluk siku.
  • Memahami mekanisme algoritma k-means.

Mari kita mulakan dengan analisis. Data kelihatan seperti:





dataset

Klik pada gambar untuk memuat turun set data ini

Perlukan set data ini? Klik pada gambar di atas untuk memuat turunnya.



Pertama mari kita sediakan data untuk analisis. Untuk melakukannya, kita harus membuang sebarang nilai NA yang mungkin ada dalam data dan mengubah data menjadi matriks.

> jenayah0 jenayah str (jenayah) angka [1:50, 1: 4] 13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ... - attr (*, 'dimnames') = Senarai 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Pembunuhan' 'Serangan' 'UrbanPop' 'Rogol'

Mari kita anggap jumlah kluster menjadi 5. Fungsi Kmeans () mengambil data input dan jumlah kluster di mana data tersebut akan dikelompokkan. Sintaksnya adalah: kmeans (data, k) di mana k adalah bilangan pusat kluster.

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

Menganalisis Pengelompokan:



> str (cl) Senarai kluster 9 $: Dinamakan int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ center: num [1: 5, 1: 4] 2.95 6.11 12.14 5.59 11.3 ... ..- attr (*,' dimnames ') = Senarai 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Pembunuhan' 'Serangan' 'UrbanPop' 'Rogol '$ 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 $ $ Ifault: int 0 - attr (*, 'class') = chr 'kmeans'

Fungsi str () memberikan struktur kmeans yang merangkumi pelbagai parameter seperti ininss, betweenss, dll, menganalisis yang mana anda dapat mengetahui prestasi kmeans.

betweenss: Antara jumlah petak iaitu persamaan Intracluster

withinss: Dalam jumlah kuadrat iaitu persamaan Intercluster

totwithinss: Jumlah semua inins dari semua kluster iaitu. Jumlah persamaan intra-kluster

Penggabungan yang baik, akan mempunyai nilai inins yang lebih rendah dan nilai betweens yang lebih tinggi yang bergantung pada jumlah kluster ‘k’ yang dipilih pada awalnya. Mari kita lihat bagaimana kita dapat mencari nilai optimum ‘k’.

Mencari nilai optimum ‘k’

Nilai ‘k’ yang optimum adalah nilai yang memberi kita sekumpulan kelompok berkumpul dengan distorsi minimum. Semakin besar penyelewengan, semakin teruk kluster yang terbentuk.

Penyelewengan:

Penyelewengan boleh dikira dalam bentuk ‘withinss’ dari setiap kelompok. Semakin rendah nilai ‘withinss’ dari kluster tertentu, populasinya akan lebih padat, jadi minimum penyimpangan.

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

Fungsi ini mengambil data dan nilai k dan mengembalikan ‘km $ totwithinss’ untuknya. ‘Km $ totwithinss’ adalah jumlah jumlah petak dalam kelompok, sehingga termasuk inins dari 5 kelompok yang dibuat iaitujumlah (withinss). Semakin tinggi nilai ‘km $ totwithinss’, semakin besar perbezaannya.

Untuk k = 5, withinss ialah 24417.02

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

Mari tingkatkan nilai k dari 5 hingga 10, dan perhatikan perbezaannya.

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

Ini dapat dilihat bahawa apabila nilai K meningkat, distorsi menurun.

Kita dapat mengambil nilai yang berbeza dari 'km $ totwithinss' dan memetakannya dalam grafik untuk mencari hubungan antara distorsi dan nilai k. Fungsi berikut melakukannya untuk kita:

> kmeans.dis maxk = 10> dis = kmeans.dis (jenayah, maxk)> plot (1: maxk, dis, type = 'b', xlab = 'Number of Clusters', + ylab = 'Distortion', + col = 'biru')

Ta Da !!! Oleh itu, kami mempunyai kurva siku yang terkenal dengan kami.

Lengkung Siku:

Ini adalah plot antara ‘k’, jumlah kluster dan ‘totwithinss’ (atau herotan) untuk setiap nilai k. Anda dapat melihat apabila jumlah kluster kurang, ada penurunan secara bertahap dalam distorsi tetapi ketika kami terus meningkatkan nilai k, laju pengurangan nilai distorsi menjadi tetap.

Nilai k ini melebihi kadar distorsi yang tetap adalah nilai optimum. Di sini k = 4.

Marilah kita menerapkan beberapa animasi untuk memahami bagaimana R memberi kita hasil kelompok.

> perpustakaan (animasi)> cl<- kmeans.ani(crime, 4)

Algoritma pengelompokan Kmeans:

Mari kita fahami algoritma kluster k-means berfungsi:

pindahkan fail ke contoh tetingkap ec2

Langkah 1. Sekiranya k = 4, kami memilih 4 titik rawak dan menganggapnya sebagai pusat kluster untuk kluster dibuat.

Langkah # 2. Kami mengambil titik data rawak dari ruang tersebut dan mengetahui jaraknya dari semua 4 pusat kluster. Sekiranya titik data paling dekat dengan pusat kluster hijau, berwarna hijau dan serupa juga semua titik dikategorikan di antara 4 kluster.

Langkah # 3. Sekarang kita mengira pusat semua titik hijau dan menetapkan titik itu sebagai pusat kluster untuk kluster itu.

Begitu juga, kami mengira centroid untuk semua 4 titik berwarna (berkelompok) dan menetapkan centroid baru sebagai pusat kluster.

Langkah # 4. Langkah-2 dan langkah-3 dijalankan secara berulang, kecuali pusat kluster berkumpul pada satu titik dan tidak lagi bergerak.


Oleh itu, kami sampai ke pusat kluster konvergen.

Dapat dilihat bahawa data tersebut terbahagi kepada 4 kluster. Pusat kluster adalah:

> cl $ centre Murder Assault UrbanPop Rape Texas 4.740741 104.8519 62.96296 16.10 Louisiana 10.907143 219.9286 71.71429 25.95 Carolina Selatan 13.375000 284.5000 46.25000 25.05 New Mexico 11.040000 298.0000 77.60000 32.68

Cluster-4 dengan ‘New Mexico’ sebagai pusat kluster mempunyai kadar jenayah yang besar dengan populasi tertinggi juga.

Susulan Cluster-3 dan Cluster-2.

Setiap negara diberi kelompok, bergantung pada mana kita sekarang dapat meramalkan peringkat kejahatannya. Hasilnya kelihatan seperti:

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda.

Catatan berkaitan: