90- كورس برمجة Machine Learning بلغة البايثون Python شرح – K-means

K-means في بايثون

مفهوم K-means في التعلم الآلي

K-means هو واحد من أشهر خوارزميات التجميع المستخدمة في التعلم الآلي لتحليل البيانات وتقسيمها إلى مجموعات مختلفة بناءً على خصائصها. تعتمد هذه الخوارزمية على تقسيم البيانات إلى عدد محدد من المجموعات، حيث يتم تحديد هذا العدد مسبقًا. يتميز K-means بسهولته في الفهم والتنفيذ، مما يجعله خيارًا شائعًا للعديد من التطبيقات العملية التي تتطلب تقسيم البيانات إلى مجموعات.

كيفية عمل K-means

تبدأ عملية K-means بتحديد عدد المجموعات K التي سيتم تقسيم البيانات إليها. بعد ذلك، يتم اختيار K من النقاط العشوائية كوسيط للمجموعات الأولية. ثم، يتم تعيين كل نقطة في البيانات إلى أقرب وسيط بناءً على المسافة الإقليدية. بعد تعيين جميع النقاط، يتم تحديث موقع كل وسيط ليكون متوسط النقاط المعينة له. يتم تكرار هذه الخطوات حتى يستقر موقع الوسيطات أو يصل إلى أقصى عدد من التكرارات المحددة مسبقًا.

تطبيق K-means في بايثون

يمكن تنفيذ خوارزمية K-means بسهولة بواسطة مكتبة scikit-learn في بايثون. إليك مثال بسيط يوضح كيفية استخدام هذه الخوارزمية:

from sklearn.cluster import KMeans
    import numpy as np
    import matplotlib.pyplot as plt

    # إنشاء مجموعة بيانات عشوائية
    X = np.random.rand(100, 2)

    # تطبيق K-means
    kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

    # الحصول على المجموعات والتنبؤات
    labels = kmeans.labels_
    centroids = kmeans.cluster_centers_

    # عرض النتائج
    plt.scatter(X[:, 0], X[:, 1], c=labels)
    plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', color='red')
    plt.title('K-means Clustering')
    plt.show()

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

تحديات K-means

على الرغم من فعالية K-means في العديد من السيناريوهات، إلا أنه يواجه بعض التحديات مثل الحاجة إلى تحديد عدد المجموعات مسبقًا، وحساسيته للنقاط البداية العشوائية، وصعوبة التعامل مع المجموعات غير الكروية. من المهم إجراء تحليل مسبق للبيانات واختبار الخوارزمية بعدة إعدادات لتحقيق أفضل النتائج الممكنة.