Menerapkan K-means Clustering pada Dataset Crime



Implementasi clustering Kmeans pada dataset kejahatan AS

Di blog ini, Anda akan memahami apa itu K-means clustering dan bagaimana hal itu dapat diterapkan pada data kriminal yang dikumpulkan di berbagai negara bagian AS. Data tersebut berisi kejahatan yang dilakukan seperti: penyerangan, pembunuhan, dan pemerkosaan dalam penangkapan per 100.000 penduduk di masing-masing 50 negara bagian AS pada tahun 1973. Selain menganalisis data, Anda juga akan mempelajari tentang:

    • Menemukan jumlah cluster yang optimal.
    • Meminimalkan distorsi
    • Membuat dan menganalisis kurva siku.
  • Memahami mekanisme algoritma k-means.

Mari kita mulai dengan analisisnya. Datanya terlihat sebagai:





dataset

Klik pada gambar untuk mendownload dataset ini

Butuh kumpulan data ini? Klik gambar di atas untuk mendownloadnya.



Pertama mari kita siapkan data untuk analisis. Untuk melakukannya, kita harus menghapus nilai NA apa pun yang mungkin ada dalam data dan mengubah data menjadi matriks.

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

Mari kita ambil jumlah cluster menjadi 5. Fungsi Kmeans () mengambil data input dan jumlah cluster tempat data akan di-cluster. Sintaksnya adalah: kmeans (data, k) di mana k adalah jumlah pusat cluster.

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

Menganalisis Pengelompokan:



> str (cl) Daftar 9 $ cluster: Dinamakan int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ pusat: nomor [1: 5, 1: 4] 2.95 6.11 12.14 5.59 11.3 ... ..- attr (*,' dimnames ') = Daftar 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Pembunuhan' 'Assault' 'UrbanPop' 'Pemerkosaan '$ 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'

Fungsi str () memberikan struktur kmean yang mencakup berbagai parameter seperti withinss, betweenss, dll, menganalisis yang dapat Anda gunakan untuk mengetahui kinerja kmean.

betweenss: Antara jumlah kuadrat, yaitu kesamaan Intracluster

withinss: Dalam jumlah kuadrat, yaitu kesamaan Intercluster

totwithinss: Jumlah semua withins dari semua cluster yaitu Total kesamaan intra-cluster

Clustering yang baik, akan memiliki nilai withinss yang lebih rendah dan nilai antara yang lebih tinggi tergantung pada jumlah cluster 'k' yang dipilih pada awalnya. Mari kita lihat bagaimana kita dapat menemukan nilai optimal dari 'k'.

apa itu charat di java

Menemukan nilai optimal 'k'

Nilai optimal 'k' adalah nilai yang memberi kita kumpulan cluster yang terkonvergensi dengan distorsi minimum. Semakin besar distorsi, semakin buruk cluster yang terbentuk.

Distorsi:

Distorsi dapat dihitung dalam istilah 'withins' dari masing-masing cluster. Semakin kecil nilai 'withins' dari cluster tertentu, cluster tersebut akan semakin padat, sehingga distorsi minimum.

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 total jumlah dalam cluster kotak, sehingga termasuk dalam semua 5 cluster yang dibuat, yaitujumlah (withinss). Semakin tinggi nilai 'km $ totwithinss', semakin besar distorsinya.

Untuk k = 5, withins adalah 24417.02

> kmeans.wss.k (kejahatan, 5) [1] 24417,02

Mari kita tingkatkan nilai k dari 5 menjadi 10, dan amati perbedaannya.

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

Dapat dilihat bahwa dengan meningkatnya nilai K, distorsi menurun.

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

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

Ta Da !!! Jadi kami memiliki kurva siku yang terkenal dengan kami.

Kurva Siku:

Ini adalah plot antara 'k', jumlah cluster dan 'totwithins' (atau distorsi) untuk setiap nilai k. Anda dapat melihat ketika jumlah cluster lebih sedikit, ada penurunan distorsi secara bertahap tetapi saat kami terus meningkatkan nilai k, laju pengurangan nilai distorsi menjadi konstan.

Nilai k ini di mana laju distorsi menjadi konstan adalah nilai optimal. Di sini k = 4.

Mari kita menerapkan beberapa animasi untuk memahami bagaimana R memberi kita hasil yang dikelompokkan.

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

Algoritma pengelompokan Kmeans:

Mari kita pahami algoritma tempat kerja pengelompokan k-means:

Langkah 1. Jika k = 4, kami memilih 4 titik acak dan menganggapnya sebagai pusat cluster untuk cluster yang akan dibuat.

Langkah 2. Kami mengambil titik data acak dari luar angkasa dan mencari tahu jaraknya dari semua 4 pusat cluster. Jika titik data paling dekat dengan pusat cluster hijau, maka akan diberi warna hijau dan demikian pula semua titik dikategorikan di antara 4 cluster.

Langkah # 3. Sekarang kita menghitung centroid dari semua titik hijau dan menetapkan titik itu sebagai pusat cluster untuk cluster itu.

Demikian pula, kami menghitung sentroid untuk semua 4 titik berwarna (berkerumun) dan menetapkan sentroid baru sebagai pusat kluster.

Langkah # 4. Langkah-2 dan langkah-3 dijalankan secara iteratif, kecuali jika pusat cluster bertemu pada satu titik dan tidak lagi bergerak.


Jadi, kami mencapai pusat cluster yang terkonvergensi.

Terlihat bahwa datanya terbagi menjadi 4 cluster. Pusat cluster adalah:

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

Cluster-4 dengan 'New Mexico' sebagai pusat cluster memiliki tingkat kejahatan yang sangat besar dengan populasi tertinggi juga.

Cluster-3 dan Cluster-2 tindak lanjut.

Setiap negara bagian diberi sebuah cluster, bergantung pada yang sekarang kami dapat memprediksi peringkat kejahatannya. Outputnya terlihat sebagai:

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.

konversikan tanggal string menjadi tanggal di java

Posting terkait: