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

ال AffinityPropagation وتطبيقها في Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

هي طريقة لعمل تقسيم للبيانات الغير معنونة unlabeled data ويستخدم في التعلم بلا إشراف..
يقوم AffinityPropagation بإنشاء المجموعات عن طريق إرسال الرسائل بين أزواج العينات حتى تصل إلى مرحلة التقارب يتم بعد ذلك وصف الداتا بعدد صغير من النماذج والتي تم اعتبارها الأكثر تمثيلاً للعينات الأخرى (مثلا لدينا 5 تفاحات حمراء  نعتبر أن تفاحة حمراء واحدة ممثلة عن ال5 تفاحات  ولكن يجب أن تكون في هذه التفاحة الصفات الأقرب للمثالية) تعتبر الرسائل المرسلة بين الأزواج مدى تماثل عينة واحدة لتكون ممثلاً للعينات الأخرى، يتم تحديث النتائج من الأزواج الأخرى بشكل متكرر حتى نصل إلى مرحلة التقارب واعتماد الأزواج النهائية.
يتم استخدامها عبر الموديول sklearn.cluster.
استدعاء المكتبات:

from sklearn.cluster import AffinityPropagation

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

AP = AffinityPropagation(damping=0.5, max_iter=200,copy=True,preference=None,affinity='euclidean',verbose=0)

الوسيط  الأول damping يأخذ قيمة بين 0.5 و 1 يمثل مدى الحفاظ على القيمة الحالية بالنسبة للقيم الواردة من الرسائل وذلك لتجنب التفاوت في القيم العددية عند تحديث هذه القيم.
الوسيط الثاني  max_iter أكبر عدد للتكرارات.
الوسيط الثالث copy قيمة بوليانية إذا كان false فإنه سوف يتم العمل على نسخة من البيانات الأصلية أي تعديل على البيانات سوف يكون دائم أما إذا كان True تؤخذ نسخة من البيانات.
الوسيط الرابع  preference مصفوفة تمثل وزن العينة حيث يتم اختيار  العينات ذات الوزن الأكبر كنماذج أو ممثل عن العينات المماثلة الأخرى وإذا لم يتم تمرير شيئ يتم اعتبار المتوسط هو الوزن لكل قيمة.
الوسيط الخامس affinity قيمة التقارب يتم استخدام المسافة الأقليدية لحساب التقارب ’euclidean’ أو المسافة المحسوبة سابقا  ‘precomputed’
الوسيط السادس verbose  قيمة بوليانية إذا كان false  وكان هناك خرج فلا يظهر أما True يظهر الخرج.
طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامه سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train, X_test  تسطيع كتابة الأتي لعملية التدريب.
الشكل العام للموديل:

AP = AffinityPropagation(damping=0.5, max_iter=200,copy=True,preference=None,affinity='euclidean',verbose=0)
AP.fit(X_train)

حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب.
يوجد دالة أخرى تستخدم لغرض التنبؤ كالاتي:
نستطيع فيها حساب قيم التقسيم على التدريب والاختبار عن طريق التابع predict  ويكون وفق الشكل:
طباعة الخرج على الاختبار والتدريب..

y_pred_train = AP.predict(X_train)
y_pred_test = AP.predict(X_test)
print('AP Train data are : ' ,y_pred_train)
print('AP Test data are : ' ,y_pred_test)

لنأخذ مثال يوضح الموديل 
استدعاء المكتبات:

from sklearn.cluster import AffinityPropagation
import numpy as np
تعين داتا دخل مزيفة
X = np.array([[0, 4], [3, 5], [1, 1],[2, 3], [5, 5], [4, 2]])

بناء الموديل:

AP = AffinityPropagation(damping=0.5, max_iter=200)
AP.fit(X)

طباعة تصنيف العينة:

AP.predict([[0, 0], [4, 4]])

النتيجة:

array([1, 0], dtype=int64)

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...