تنفيذ بايثون للمجموعات k. k-means هي تقنية تعلم غير خاضعة للرقابة تحاول تجميع نقاط بيانات متشابهة معًا في عدد محدد من المجموعات بواسطة المستخدم. يوضح المثال أدناه تقدم المجموعات لمجموعة بيانات Iris باستخدام خوارزمية تهيئة النقطه الوسطى k-means++.
تعني k محاولات تحديد مستخدم محدد لعدد k (<N) من المجموعات من مجموعة من المتجهات ذات القيمة الحقيقية ذات الأبعاد N. تستمر الخوارزمية بمحاولة تقليل مجموع المسافات المربعة من مركز المجموعة إلى أعضاء المجموعة. تستمر الخوارزمية الأساسية في ثلاث مراحل:
إخراج الخوارزمية عبارة عن تعيين كتلة لكل نقطة بيانات، ومستوى نهائي من "التشويه". لا تنتج الخوارزمية حلاً مثاليًا يمكن إثباته، وقد تتسبب مراكز المجموعة الأولية في تعطل الخوارزمية في الحل الأمثل محليًا والذي من الواضح أنه دون المستوى الأمثل (راجع المثال الأساسي ثنائي الأبعاد في قسم النتائج).
لقد ركزت الكثير من الأبحاث على:
بدلاً من تهيئة النقط الوسطى العشوائية كما في الخطوة 1 أعلاه، k-means++ ينشر احتماليًا النقط الوسطى الأولية لتجنب التكوين الأولي السيئ، الخوارزمية هي:
تعطي هذه التقنية الأفضلية لنقاط البيانات التي ليست قريبة من النقط الوسطى الأولية الأخرى، وتستخدم سياسة اختيار تذكرنا باختيار عجلة الروليت (أو اللياقة البدنية المتناسبة) الذي غالبًا ما يستخدم في الخوارزميات الجينية.
تم وصف K-Means في أفضل 10 خوارزميات لاستخراج البيانات؛
تم توضيح وسائل K-Means في نظرية المعلومات والاستدلال وخوارزميات التعلم، مقتطف منها هنا؛
البروفيسور أندرو مور من CMU لديه بعض الملاحظات الجيدة هنا؛
مثال Edureka، باستخدام بيانات الجريمة
K-Means++، والورقة الكاملة هنا
دراسة مقارنة لطرق التهيئة الفعالة لخوارزمية التجميع K-Means
لدى SciPy تطبيق k-means. الهدف من هذا العمل هو بناء تطبيق بايثون خالص لأغراض التعلم ومساعدة الآخرين على تعلم خوارزمية k-means. سيتمكن القراء المهتمون الذين لديهم الحد الأدنى من الخبرة في لغة بايثون من قراءة هذا الرمز وتخطيه دون التعقيد الإضافي لمكتبة مثل SciPy. ليس بأي حال من الأحوال مخصص للاستخدام الإنتاجي :)
قم بتشغيل الكود باستخدام مترجم بايثون:
python kmeans.py ./resources/<config.cfg>
حيث config.cfg هو ملف تكوين نص عادي. تنسيق ملف التكوين هو إملاء بايثون مع الحقول التالية:
{
'data_file' : '\resources\iris.csv',
'data_project_columns' : ['sepal_length','sepal_width','petal_length','petal_width','class'],
'k' : 3,
'cluster_atts' : ['sepal_length','sepal_width','petal_length','petal_width'],
'init_cluster_func' : 'kmeans_plus_plus',
'plot_config' :
{'output_file_prefix' : 'iris',
'plots_configs': [
{'plot_atts' : ['sepal_length','sepal_width']},
{'plot_atts' : ['sepal_length','petal_length']},
{'plot_atts' : ['sepal_length','petal_width']},
{'plot_atts' : ['sepal_width','petal_length']},
{'plot_atts' : ['sepal_width','petal_width']},
{'plot_atts' : ['sepal_width','petal_width']}
]
}
}
عليك أن تحدد:
مجموعة بيانات Iris (iris.config)، من Lichman, M. (2013). مستودع التعلم الآلي UCI. إيرفاين، كاليفورنيا: كلية المعلومات وعلوم الكمبيوتر بجامعة كاليفورنيا، هي مجموعة بيانات معروفة جدًا في مجتمع التعلم الآلي. فيما يلي نتائج مجموعاتي الأولية العشوائية:
تم إنشاء هذه البيانات لأغراض تصحيح الأخطاء (راجع basic2d.config)، وهي توضح تأثير الاختيار السيئ للمجموعات العشوائية الأولية. توضح النتائج أدناه تكوينًا أوليًا للنقطه الوسطى يمنع الخوارزمية من الوصول إلى مهمة المجموعة الواضحة. في هذه الحالة، يعني موضع النقطه الوسطى الحمراء أن النقطه الوسطى الزرقاء تلتقط جميع نقاط البيانات في الربعين السفلي الأيسر والأيمن السفلي.
مجموعة بيانات الجريمة (crime.config) مأخوذة من Edureka، هنا.