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

ال confusion matrix وتطبيقها باستخدام scikit-learn

Meezo ML

السؤال

Recommended Posts

  • 1

error matrix أو confusion_matrix: هي مصفوفة تستخدم لتقييم أداء نماذج التصنيف، أي نستخدمها عندما تكون المهمة هي مهمة تصنيف Classification.
هذه المصفوفة تقوم بحساب TP و FP و FN و TN وترد مصفوفة تعبر عنهم بأبعاد  (n_classes, n_classes).
سأعطي مثال لشرحهم:
تجري إحدى الكليات فحصاً لمرض كورونا باستخدام التعلم الآلي على جميع طلابها.
الناتج إما مصاب بكورونا + أو سليم -.
وبالتالي سيكون هناك 4 حالات من أجل طالب x.
إذا كانت تبدأ بـ  True، فإن التنبؤ كان صحيحاً سواء كان مصاباً بمرض كورونا أم لا.
 إذا كانت تبدأ بـ  False، فإن التنبؤ كان غير صحيح.
P تدل على الفئة الإيجابية و N السلبية، وهما خرج برنامجنا.
True positive (TP): النموذج يتوقع أن الطالب x حالته + والطالب x هو فعلاً مصاب (وهذا جيد).  أي توقع أن الشخص مصاب وهو مصاب فعلاً.
True negative (TN): النموذج يتوقع أن الطالب x حالته - والطالب سليم (وهذا جيد). أي شخص سليم و تنبأ أنه سليم بشكل صحيح.
False positive (FP): النموذج يتوقع أن الطالب x حالته + والطالب غير مصاب (وهذا سيئ). أي شخص سليم وتوقع أنه مصاب.
False negative (FN): النموذج يتوقع أن الطالب x حالته - والطالب مصاب (وهذا الأسوأ). أي شخص مصاب وتوقع أنه سليم.
 

لتطبيقها باستخدام مكتبة Sklearn نستدعي التابع confusion_matrix  من الموديول metrics والمثال التالي يبين كل شيء:

sklearn.metrics.confusion_matrix(y_true, y_pred, normalize=None)

أول وسيطين يمثلان القيم الحقيقية والقيم المتوقعة، على التوالي. أما الوسيط الأخير فهو  اختياري  ويستعمل لعمل normalize للقيم وهو يأخذ 3 قيم:
all: بالتالي يقسم كل قيم المصفوفة على  مجموع كل التوقعات (جرب بنفسك).
true: يقسم كل القيم في عمود j على مجموع القيم فيه.
pred: يقسم كل القيم في سطر i على مجموع القيم فيه.
لاستخراج قيم tp و tn و fp و fn من المصفوفة نستخدم التابع ()ravel مع ملاحظة أنه لايمكنك استخدام هذا التابع إلى في حالة أن التصنيف ثنائي.

from sklearn.metrics import confusion_matrix
y_true = ["cat", "dog", "cat", "cat", "dog", "dog","cat","cat"]
y_pred = ["dog", "dog", "cat", "cat", "dog", "cat","cat","cat"]

# حساب المصفوفة
cm=confusion_matrix(y_true, y_pred,normalize=None') 	
# عرض نتيجة المصفوفة
print(cm)
                    
# لاستخراج القيم 
tp,fp,fn,tn=cm.ravel()

#يمكنك التعبير عن هذه القيم بالرسم    
import matplotlib.pyplot as plt
import seaborn as sea
sea.heatmap(cm, center = True)
plt.show()

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...