اذهب إلى المحتوى
  • 0

تطبيق خوارزمية K-Means باستخدام مكتبة Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

لزيادة الفائدة أود إلقاء مراجعة صغيرة على هذه الخوارزمية قبل أن أعرض لك كيفية تطبيقها:
K-Means طريقة لعمل تقسيم للبيانات الغير معنونة أي unlabeled data يتم أولاً تحديد عدد المجموعات المطلوب Clusters تقوم الخوارزمية بتحديد عدد من النقاط العشوائية وسط النقاط تسمي cluster centroid ويكون عددها هو نفس عدد المجموعات المطلوب ثم يقوم بتقسيم نقاط العينة عبر المراكز  يقوم بعمل تغيير في اماكن المراكز , و يعيد الخطوة , حتي يصل للشكل الأمثل وهو يستخدم في التعلم بلا إشراف.
في Sklearn يتم استخدامها عبر الموديول cluster.KMeans.
#استدعاء المكتبة

from sklearn.cluster import KMeans

في البداية قمنا باستدعاء المكتبة التي يوجد فيها هذا الموديل
#الشكل العام للموديل

sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10, 
                                             random_state=None, copy_x=True,
                                             n_jobs=None, algorithm='auto’)

البارمتر الأول n_clusters وهو عدد العناقيد المراد تكوينها 
البارمتر الثاني init مصفوفه ابعادها عدد الفيتشرز ضرب عدد العناقيد ولتهيئتها يوجد طريقتين الأولى random يتم اختيار مراكز العناقيد الأوليه بشكل عشوائي من الصفوف في الداتا 
و k-means++ يتم اختيار المراكز الأوليه بطريقه ذكيه لتسريع التقارب
البامتر الثالث n_init عدد المرات التي ستعمل فيها الخوارزميه مع مراكز عناقيد مختلفه
البارمتر الرابع random_state للتحكم بآلية التقسيم
البارمتر الخامس  copy_x في حال ضبطه على True سوف يأخذ نسخة من البيانات ولن يتم التعديل عليها أي أن البيانات تعود كما أخذت أما في حال false سوف يتم التعديل على البيانات الاصليه
البارمتر السادس n_jobs عدد المعالجات التي تعمل بالتوازي وبتالي كلما زاد العدد زاد التسريع ,يوضع -1 للدلاله على عمل كامل المعالجات
البارمتر السابع algorithm الخوارزميه التي تستخدمها kmean ويفضل وضع auto لترك kmeans تقرر المناسب لها
طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامه سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train,X_test  تسطيع كتابة الأتي لعملية التدريب
#الشكل العام للموديل

KMeansM=KMeans(n_clusters=8, init='k-means++', n_init=10,
                       random_state=None, copy_x=True,
                       n_jobs=None, algorithm='auto’)
KMeansM.fit(X_train)

حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب  
يوجد دالة أخرى تستخدم لغرض التنبؤ كالاتي
#حساب القيم المتوقعة

y_pred = KMeansModel.predict(X_test)

حيث قمنا بحساب كل سطر من داتا الاختبار  لأي عنقود يتبع
نستطيع حساب دقة الموديل أو كفاءته  على التدريب والاختبار عن طريق التابع score ويكون وفق الشكل
#طباعة الكفاءه على التدريب والاختبار ومراكز العناقيد

print('Train Score is : ' , KMeansM.score(X_train))
print('Test Score is : ' , KMeansM.score(X_test))
print('centers are : ' , KMeansM.cluster_centers_)
#استدعاء المكتبات
from sklearn.cluster import KMeans

#الشكل العام للموديل
KMeansM=sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10,
                       random_state=None, copy_x=True,
                       n_jobs=None, algorithm='auto’)
KMeansM.fit(X_train)

#طباعة الكفاءه على التدريب والاختبار ومراكز العناقيد
print('Train Score is : ' , KMeansM.score(X_train))
print('Test Score is : ' , KMeansM.score(X_test))
print('centers are : ' , KMeansM.cluster_centers_)

#حساب القيم المتوقعه
y_pred = KMeansModel.predict(X_test)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...