Внедряване на К-означава клъстериране на престъпления набор от данни



Прилагане на Kmeans клъстериране на набора от данни за престъпленията в САЩ

В този блог ще разберете какво е К-означава клъстериране и как то може да бъде приложено върху криминалните данни, събрани в различни щати на САЩ. Данните съдържат престъпления, извършени като: нападение, убийство и изнасилване при арести на 100 000 жители във всеки от 50-те щата на САЩ през 1973 г. Заедно с анализа на данните ще научите и за:

    • Намиране на оптималния брой клъстери.
    • Минимизиране на изкривяването
    • Създаване и анализ на кривата на лакътя.
  • Разбиране на механизма на k-средния алгоритъм.

Нека започнем с анализа. Данните изглеждат като:





dataset

Кликнете върху изображението, за да изтеглите този набор от данни

Нуждаете се от този набор от данни? Кликнете върху горното изображение, за да го изтеглите.



Първо нека подготвим данните за анализа. За да направим това, трябва да премахнем всички стойности на NA, които могат да присъстват в данните, и да преобразуваме данните в матрица.

> престъпление0 престъпност str (престъпление) номер [1:50, 1: 4] 13,2 10 8,1 8,8 9 7,9 3,3 5,9 15,4 17,4 ... - attr (*, 'dimnames') = Списък на 2 .. $: chr [1 : 50] „Алабама“ „Аляска“ „Аризона“ „Арканзас“ ... .. $: chr [1: 4] „Убийство“ „Нападение“ „UrbanPop“ „Изнасилване“

Нека приемем броя на клъстерите на 5. Функцията Kmeans () взема входните данни и броя на клъстерите, в които данните трябва да бъдат групирани. Синтаксисът е: k означава (данни, k), където k е броят на клъстерните центрове.

> клас cl (cl) [1] 'kmeans'

Анализиране на клъстерирането:



> str (cl) Списък с 9 $ клъстер: Име int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' Алабама '' Аляска '' Аризона '' Арканзас '... $ центрове: num [1: 5, 1: 4] 2,95 6,11 12,14 5,59 11,3 ... ..- attr (*,' dimnames ') = Списък от 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Murder' 'Assault' 'UrbanPop' 'Rape '$ totss: num 355808 $ insidess: 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'

Функцията str () дава структурата на kmeans, която включва различни параметри като insidess, betweenss и т.н., анализирайки кои можете да разберете ефективността на kmeans.

interss: Между сумата на квадратите, т.е.подобност на вътреклъстер

Withinss: В рамките на сума от квадрат, т.е.

totwithinss: Сума от цялата вътрешност на всички клъстери, т.е. Общо вътрешно-клъстерно сходство

Доброто клъстериране ще има по-ниска стойност на вътре и по-висока стойност на между, което зависи от първоначално избрания брой клъстери ‘k’. Нека видим как можем да намерим оптималната стойност на ‘k’.

Намиране на оптималната стойност на ‘k’

Оптимална стойност на ‘k’ е стойността, която ни дава сближен набор от клъстери с минимално изкривяване. Колкото по-голямо е изкривяването, толкова по-лоши ще бъдат образуваните клъстери.

Изкривяване:

Изкривяването може да се изчисли от гледна точка на „вътрешността“ от всеки от клъстерите. Колкото по-малка е стойността на „вътрешността“ на даден клъстер, толкова по-гъсто населен ще бъде той, като по този начин минимално изкривяване.

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

Тази функция приема данните и стойността на k и връща „km $ totwithinss“ за нея. ‘Km $ totwithinss’ е общата сума от квадрати в рамките на клъстера, като по този начин включва вътрешността на всичките 5 създадени клъстера, т.е.сума (в рамките на). Колкото по-висока е стойността на „km $ totwithinss“, толкова по-голямо ще бъде изкривяването.

За k = 5, вътрешността е 24417,02

> kmeans.wss.k (престъпление, 5) [1] 24417.02

Нека да увеличим стойността на k от 5 на 10 и да наблюдаваме разликата.

> kmeans.wss.k (престъпление, 10) [1] 11083.04

Вижда се, че с увеличаване на стойността на K изкривяването намалява.

Можем да извадим различните стойности на ‘km $ totwithinss’ и да ги начертаем в графика, за да намерим връзката между изкривяването и стойността на k. Следващата функция прави това за нас:

> kmeans.dis maxk = 10> dis = kmeans.dis (престъпление, maxk)> парцел (1: maxk, dis, type = 'b', xlab = 'Брой клъстери', + ylab = 'Изкривяване', + col = 'синьо')

Ta Da !!! По този начин имаме известната крива на лакътя с нас.

Крива на лакътя:

Това е графиката между „k“, броя на клъстерите и „totwithinss“ (или изкривяване) за всяка стойност на k. Можете да видите, когато броят на клъстера е по-малък, има постепенно намаляване на изкривяванията, но докато продължаваме да увеличаваме стойността на k, скоростта на намаляване на стойностите на изкривяване става постоянна.

Тази стойност на k, над която скоростта на изкривяване става постоянна, е оптималната стойност. Тук k = 4.

видове набори в java

Нека приложим малко анимация, за да разберем как R ни даде клъстерираните резултати.

> библиотека (анимация)> cl<- kmeans.ani(crime, 4)

Алгоритъм за клъстериране на Kmeans:

Нека разберем алгоритъма, върху който работи к-средната клъстеризация:

Етап 1. Ако k = 4, избираме 4 случайни точки и ги приемаме за центрове на клъстери, за да бъдат създадени клъстерите.

Стъпка 2. Взимаме произволна точка от данни от пространството и откриваме нейното разстояние от всичките 4 центъра на клъстери. Ако точката с данни е най-близо до центъра на зеления клъстер, тя е оцветена в зелено и по същия начин всички точки са категоризирани между 4-те клъстера.

Стъпка # 3. Сега изчисляваме центроида на всички зелени точки и присвояваме тази точка като център на клъстера за този клъстер.

По същия начин изчисляваме центроидите за всичките 4 цветни (клъстерирани) точки и присвояваме новите центроиди като центрове на клъстера.

Стъпка # 4. Стъпка-2 и стъпка-3 се изпълняват итеративно, освен ако клъстерните центрове не се сближат в дадена точка и вече не се движат.


По този начин достигаме до сближените клъстерни центрове.

Вижда се, че данните са разделени на 4 клъстера. Клъстерните центрове са:

> cl $ центрове Убийство Нападение UrbanPop Rape Тексас 4.740741 104.8519 62.96296 16.10 Луизиана 10.907143 219.9286 71.71429 25.95 Южна Каролина 13.375000 284.5000 46.25000 25.05 Ню Мексико 11.040000 298.0000 77.60000 32.68

Клъстер-4 с „Ню Мексико“ като клъстер център има огромен процент на престъпност и с най-много население.

Проследяване на клъстер-3 и клъстер-2.

На всяка държава е присвоен клъстер, в зависимост от това кой сега можем да предскажем класацията на престъпността. Резултатът изглежда като:

Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас.

Подобни публикации:

разлика между javascript и jquery