تنفيذ K-mean Clustering on the Crime Dataset



تنفيذ مجموعات Kmeans على مجموعة بيانات الجريمة الأمريكية

في هذه المدونة ، ستفهم ما المقصود بالتجميع بوسائل K وكيف يمكن تنفيذه على البيانات الجنائية التي تم جمعها في ولايات أمريكية مختلفة. تحتوي البيانات على جرائم تم ارتكابها مثل: الاعتداء والقتل والاغتصاب أثناء الاعتقالات لكل 100000 مقيم في كل ولاية من الولايات الأمريكية الخمسين في عام 1973. إلى جانب تحليل البيانات ، ستتعرف أيضًا على:

    • إيجاد العدد الأمثل للعناقيد.
    • تقليل التشويه
    • تكوين وتحليل منحنى الكوع.
  • فهم آلية خوارزمية k-mean.

دعونا نبدأ بالتحليل. تبدو البيانات كما يلي:





dataset

انقر على الصورة لتنزيل مجموعة البيانات هذه

هل تحتاج إلى مجموعة البيانات هذه؟ اضغط على الصورة أعلاه لتنزيلها.



أولاً ، دعنا نجهز البيانات للتحليل. للقيام بذلك ، يجب علينا إزالة أي قيم NA قد تكون موجودة في البيانات وتحويل البيانات إلى مصفوفة.

> 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') = List of 2 .. $: chr [1 : 50] 'ألاباما' ألاسكا 'أريزونا' أركنساس '... .. $: chr [1: 4]' القتل '' الاعتداء '' UrbanPop '' الاغتصاب '

لنأخذ عدد المجموعات ليكون 5. تأخذ وظيفة Kmeans () بيانات الإدخال وعدد المجموعات التي سيتم تجميع البيانات فيها. الصيغة هي: kmeans (data، k) حيث k هو عدد مراكز الكتلة.

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

تحليل التجميع:



> str (cl) قائمة 9 $ الكتلة: Named int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*، 'names') = chr [1:50] ' ألاباما 'ألاسكا' أريزونا 'أركنساس' ... المراكز $: عدد [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] 'القتل' 'الاعتداء' 'UrbanPop' 'الاغتصاب '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ tot.withinss: num 28240 $ betweens: num 327568 $ size: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ ifault: int 0 - attr (*، 'class') = chr 'kmeans'

تعطي الدالة str () هيكل kmeans الذي يتضمن معلمات مختلفة مثل withinss و betweenss وما إلى ذلك ، والتحليل الذي يمكنك معرفة أداء kmeans.

بين مجموع المربعات ، أي تشابه Intracluster

withinss: ضمن مجموع مربع أي التشابه بين المجموعات

totwithinss: مجموع جميع الأجزاء الداخلية لجميع المجموعات ، أي إجمالي التشابه داخل الكتلة

التجميع الجيد ، سيكون له قيمة أقل من ininss وقيمة أعلى بين بين التي تعتمد على عدد المجموعات 'k' المختارة في البداية. دعونا نرى كيف يمكننا إيجاد القيمة المثلى لـ 'k'.

إيجاد القيمة المثلى لـ 'k'

القيمة المثلى لـ 'k' هي القيمة التي تعطينا مجموعة متقاربة من المجموعات مع الحد الأدنى من التشويه. كلما زاد التشويه ، ستشكل المجموعات الأسوأ.

تشوه:

يمكن حساب التشويه من حيث 'ininss' من كل مجموعة. كلما قلت قيمة 'الأجزاء الداخلية' لمجموعة معينة ، ستكون أكثر كثافة سكانية ، وبالتالي الحد الأدنى من التشويه.

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

تأخذ هذه الوظيفة البيانات وقيمة k وتعيد 'km $ totwithinss' لها. 'km $ totwithinss' هو إجمالي مجموع المربعات داخل المجموعة ، وبالتالي بما في ذلك العناصر الموجودة في جميع المجموعات الخمس التي تم إنشاؤها ، أيمجموع. كلما زادت قيمة 'km $ totwithinss' ، سيكون التشوه أكبر.

بالنسبة إلى k = 5 ، يكون withinss 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 (crime، maxk)> مؤامرة (1: maxk، dis، type = 'b'، xlab = 'Number of Clusters'، + ylab = 'Distortion'، + col = 'أزرق')

تا دا !!! وهكذا لدينا منحنى الكوع الشهير معنا.

منحنى الكوع:

هذه هي الحبكة الواقعة بين 'k' ، وعدد المجموعات و 'totwithinss' (أو التشويه) لكل قيمة k. يمكنك أن ترى عندما يكون عدد الكتلة أقل ، هناك انخفاض تدريجي في التشويه ولكن مع استمرارنا في زيادة قيمة k ، يصبح معدل تقليل قيم التشويه ثابتًا.

هذه القيمة لـ k والتي بعدها يصبح معدل التشويه ثابتًا هي القيمة المثلى. هنا k = 4.

دعونا نطبق بعض الرسوم المتحركة لفهم كيف أعطانا R النتائج المجمعة.

> مكتبة (رسوم متحركة)> cl<- kmeans.ani(crime, 4)

خوارزمية التجميع كمينز:

دعونا نفهم الخوارزمية التي يعمل عليها تجميع الوسائل k:

الخطوة 1. إذا كانت k = 4 ، فإننا نختار 4 نقاط عشوائية ونفترض أنها مراكز عنقودية للمجموعات التي سيتم إنشاؤها.

الخطوة 2. نأخذ نقطة بيانات عشوائية من الفضاء ونكتشف بعدها عن جميع مراكز المجموعات الأربعة. إذا كانت نقطة البيانات هي الأقرب إلى مركز العنقود الأخضر ، يتم تلوينها باللون الأخضر وبالمثل يتم تصنيف جميع النقاط بين المجموعات الأربع.

الخطوه 3. الآن نحسب النقطه الوسطى لجميع النقاط الخضراء ونخصص تلك النقطة كمركز الكتلة لتلك المجموعة.

عبر اختبار المتصفح في محرك الويب السيلينيوم

وبالمثل ، نحسب النقط الوسطى لجميع النقاط الأربع الملونة (العنقودية) ونخصص النقط الوسطى الجديدة كمراكز الكتلة.

الخطوة رقم 4. يتم تشغيل الخطوتين 2 و 3 بشكل متكرر ، ما لم تتقارب مراكز الكتلة عند نقطة ما ولم تعد تتحرك.


وهكذا نصل إلى مراكز العناقيد المتقاربة.

يمكن ملاحظة أن البيانات مقسمة إلى 4 مجموعات. مراكز الكتلة هي:

> cl $ Centers Murder Assault UrbanPop Rape Texas 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 متابعة.

يتم تعيين مجموعة لكل ولاية ، اعتمادًا على ما يمكننا الآن توقع ترتيب الجريمة فيه. يبدو الإخراج كما يلي:

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك.

المنشورات ذات الصلة: