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

تطبيق معيار f1-score في مكتبة Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

أولاً يجب أن تحذر فهذا المعيار يستخدم مع مهام التصنيف Classification.
وهو يجمع بين المعيارين precision و recall ويحقق توازن بين قيمتهما.

إن f1score هي قيمة تساوي:

f1score = 2 * (precision * recall) / (precision + recall)

قيمة f1 تكون بين ال 0 و 1 وكلما زادت القيمة كلما كان أداء النموذج أدق.
يتم استخدامها عبر الموديول:

sklearn.metrics.f1_score

ويمكنك تطبيقها بالشكل التالي:

from sklearn.metrics import f1_score
# f1_score(y_true, y_pred,average='micro')
F1Score = f1_score(y_test, y_pred, average='micro')
print('F1 Score is : ', F1Score)

 

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

  • 1

يعرف ايضاً F1 Score ب balanced F-score أو F-measure و يستخدم في حالة مشاكل تصنيف البيانات لقياس دقة و كفاءة النموذج و يعتبر أكثر شمولاً من Precision و Recall لأنهما قد يقدمان نتائج غير دقيقة، مثلاً في حالة عدم التوزيع المتساوي للأصناف Imbalanced classes وهي حالة معظم التصنفيات الحقيقية على أرض الواقع.

from sklearn.metrics import f1_score #sklearn تحميل الدالة من مكتبة 

#تجهيز البيانات، تقسيمهاو تدريب النموذج بالإضافة بإختباره

f1_score(y_true, y_pred) #تمرير القيم الناتجة من النموذج و الحقيقية للدالة

يمكنك إستخدام F1 score دون تمرير parameter في حال كان التصنيف لصنفين فقط binary is the default ولكن في حال كان التصنيف يتضمن أكثر من صنفين يمكننا أن نمرر إحدى القيم لحساب المتوسط:

{‘micro’, ‘macro’, ‘samples’,’ weighted’, ‘binary’} يمكنك الرجوع للمثال السابق.

كما يمكننا أن نقوم بإستخدام دالة precision_recall_fscore_support والتي ترجع قيم كل من precision، recall،F1score بالإضافة لمعامل رابع يسمي support، القيمة الثالثة الراجعة من الدالة هي قيمة F1 score، راجع المثال التالي:

precision_recall_fscore_support(y_true, y_pred, average='macro')

لاحظ انه في هذا المثال حددنا نوع F1 score و هو عبارة عن macro. والتي تعني حساب الدقة لكل صنف على حدة و من ثم إيجاد القيمة المتوسطة لها، وهي طريقة لا تأخذ في الحسبان التوزيع غير المتساوي للأصناف.

لا تنسى أن تقوم بإستدعاء الدالة عن طريق مكتبة sklearn كالتالي:

from sklearn.metrics import precision_recall_fscore_support

الطريقة الأخرى للحصول على قيم الF1 score هي بإستخدام دالة classification_report و التي تقوم بإستخراج نتائج الدقة للنموذج في شكل جدول متكامل و المحتوية على F1 score. راجع المثال التالي:

from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred, labels=mylabels))

الدالة تستقبل قيم النموذج، القيم الحقيقية المتوقع التنبؤ بها، و اخيراً التصنفيات، هذه الدالة تعطي ناتج F1 score في شكل مفصل و محتوي على الدقة محسوبة بثلاث طرق macro، micro، weighted.

 

 

 

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

  • 0
بتاريخ On 18‏/6‏/2021 at 22:16 قال ريم المهدي:

يعرف ايضاً F1 Score ب balanced F-score أو F-measure و يستخدم في حالة مشاكل تصنيف البيانات لقياس دقة و كفاءة النموذج و يعتبر أكثر شمولاً من Precision و Recall لأنهما قد يقدمان نتائج غير دقيقة، مثلاً في حالة عدم التوزيع المتساوي للأصناف Imbalanced classes وهي حالة معظم التصنفيات الحقيقية على أرض الواقع.

from sklearn.metrics import f1_score #sklearn تحميل الدالة من مكتبة 

#تجهيز البيانات، تقسيمهاو تدريب النموذج بالإضافة بإختباره

f1_score(y_true, y_pred) #تمرير القيم الناتجة من النموذج و الحقيقية للدالة

يمكنك إستخدام F1 score دون تمرير parameter في حال كان التصنيف لصنفين فقط binary is the default ولكن في حال كان التصنيف يتضمن أكثر من صنفين يمكننا أن نمرر إحدى القيم لحساب المتوسط:

{‘micro’, ‘macro’, ‘samples’,’ weighted’, ‘binary’} يمكنك الرجوع للمثال السابق.

كما يمكننا أن نقوم بإستخدام دالة precision_recall_fscore_support والتي ترجع قيم كل من precision، recall،F1score بالإضافة لمعامل رابع يسمي support، القيمة الثالثة الراجعة من الدالة هي قيمة F1 score، راجع المثال التالي:

precision_recall_fscore_support(y_true, y_pred, average='macro')

لاحظ انه في هذا المثال حددنا نوع F1 score و هو عبارة عن macro. والتي تعني حساب الدقة لكل صنف على حدة و من ثم إيجاد القيمة المتوسطة لها، وهي طريقة لا تأخذ في الحسبان التوزيع غير المتساوي للأصناف.

لا تنسى أن تقوم بإستدعاء الدالة عن طريق مكتبة sklearn كالتالي:

from sklearn.metrics import precision_recall_fscore_support

الطريقة الأخرى للحصول على قيم الF1 score هي بإستخدام دالة classification_report و التي تقوم بإستخراج نتائج الدقة للنموذج في شكل جدول متكامل و المحتوية على F1 score. راجع المثال التالي:

from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred, labels=mylabels))

الدالة تستقبل قيم النموذج، القيم الحقيقية المتوقع التنبؤ بها، و اخيراً التصنفيات، هذه الدالة تعطي ناتج F1 score في شكل مفصل و محتوي على الدقة محسوبة بثلاث طرق macro، micro، weighted.

 

 

 

السلام عليكم ممكن سؤال اني مشروع تخرجي كشف التسلل بالديب ليرنك واريد مساعده 

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

  • 0
بتاريخ 2 ساعة قال Zainab Aljofe:

السلام عليكم ممكن سؤال اني مشروع تخرجي كشف التسلل بالديب ليرنك واريد مساعده 

وعليكم السلام، ما التسلل المراد اكتشافه؟ هل المقصود مجال الأمن السيبراني، من أجل تحسين دقة وكفاءة أنظمة كشف التسلل التقليدية؟

وأرجو توضيح السؤال والمطلوب لمساعدتك.

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

  • 0
بتاريخ 3 دقائق مضت قال Mustafa Suleiman:

وعليكم السلام، ما التسلل المراد اكتشافه؟ هل المقصود مجال الأمن السيبراني، من أجل تحسين دقة وكفاءة أنظمة كشف التسلل التقليدية؟

وأرجو توضيح السؤال والمطلوب لمساعدتك.

نعم اني طالبة امن سيبراني  مشروع تخرجي  Intrusion detection system using deep learing عندي اشكال بالجزء العملي مداعرف شلون طلعtesting هو الكود عندي بس مو اني كتبته لذالك مدااعرف  اطلعه

بتاريخ 16 دقائق مضت قال Mustafa Suleiman:

وعليكم السلام، ما التسلل المراد اكتشافه؟ هل المقصود مجال الأمن السيبراني، من أجل تحسين دقة وكفاءة أنظمة كشف التسلل التقليدية؟

وأرجو توضيح السؤال والمطلوب لمساعدتك.

يعني اريد افهم التطبيق العملي وشلون طلعت الاكيورسي وال F1 Score وprecision و Recall 

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

  • 0
بتاريخ 9 دقائق مضت قال Zainab Aljofe:

نعم اني طالبة امن سيبراني  مشروع تخرجي  Intrusion detection system using deep learing عندي اشكال بالجزء العملي مداعرف شلون طلعtesting هو الكود عندي بس مو اني كتبته لذالك مدااعرف  اطلعه

استخدمي وظيفة load_dataset() من sklearn لتحميل مجموعة بيانات كشف التسلل، وهناك مجموعات بيانات كشف التسلل العامة المتاحة، مثل CICIDS2017 أو CSE-CICIDS.

بعد ذلك استخدمي وظيفة train_test_split() لتقسيم البيانات إلى مجموعات تدريب واختبار، وتأكدي من أن مجموعات التدريب والاختبار متوازنة من حيث توزيع الفئات (هجمات وتصرفات طبيعية).

ثم معالجة البيانات وإنشاء الإختبارات وتقييم النموذج، وستحتاجين إلى التالي:

  • StandardScaler(): تطبيع البيانات.
  • OneHotEncoder(): ترميز البيانات الفئوية.
  • CountVectorizer(): تحليل ترددات الكلمات.
  • TfidfVectorizer(): تحويل وثائق النص إلى ميزات TF-IDF.
  • accuracy_score(): حساب دقة النموذج.
  • recall_score(): حساب معدل الكشف (TPR).
  • precision_score(): حساب الدقة.

ستجدي هنا مرجع جيد لك، وبيانات تدريب وإختبار ونموذج للكود في الصفحة 132:

https://drive.google.com/file/d/1jU0pIHpAOjk_1e4COwZwn5ilcNISxo1Y/view

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

  • 0

الكود موجود كامل متنفذ والاكيورسي 99% بس المشروع مو اني سويته من النت  لذالك  مااعرف شلون طلعت النتائج وهسه دااكتب بالبحث واكيد احتاج اكتب المعادلات والشرح والخوارزميات وشلون اتنفذ

بتاريخ 11 دقائق مضت قال Mustafa Suleiman:

استخدمي وظيفة load_dataset() من sklearn لتحميل مجموعة بيانات كشف التسلل، وهناك مجموعات بيانات كشف التسلل العامة المتاحة، مثل CICIDS2017 أو CSE-CICIDS.

بعد ذلك استخدمي وظيفة train_test_split() لتقسيم البيانات إلى مجموعات تدريب واختبار، وتأكدي من أن مجموعات التدريب والاختبار متوازنة من حيث توزيع الفئات (هجمات وتصرفات طبيعية).

ثم معالجة البيانات وإنشاء الإختبارات وتقييم النموذج، وستحتاجين إلى التالي:

  • StandardScaler(): تطبيع البيانات.
  • OneHotEncoder(): ترميز البيانات الفئوية.
  • CountVectorizer(): تحليل ترددات الكلمات.
  • TfidfVectorizer(): تحويل وثائق النص إلى ميزات TF-IDF.
  • accuracy_score(): حساب دقة النموذج.
  • recall_score(): حساب معدل الكشف (TPR).
  • precision_score(): حساب الدقة.

ستجدي هنا مرجع جيد لك، وبيانات تدريب وإختبار ونموذج للكود في الصفحة 132:

https://drive.google.com/file/d/1jU0pIHpAOjk_1e4COwZwn5ilcNISxo1Y/view

الكود موجود كامل متنفذ والاكيورسي 99% بس المشروع مو اني سويته من النت  لذالك  مااعرف شلون طلعت النتائج وهسه دااكتب بالبحث واكيد احتاج اكتب المعادلات والشرح والخوارزميات وشلون اتنفذ

بتاريخ 12 دقائق مضت قال Zainab Aljofe:

الكود موجود كامل متنفذ والاكيورسي 99% بس المشروع مو اني سويته من النت  لذالك  مااعرف شلون طلعت النتائج وهسه دااكتب بالبحث واكيد احتاج اكتب المعادلات والشرح والخوارزميات وشلون اتنفذ

الكود موجود كامل متنفذ والاكيورسي 99% بس المشروع مو اني سويته من النت  لذالك  مااعرف شلون طلعت النتائج وهسه دااكتب بالبحث واكيد احتاج اكتب المعادلات والشرح والخوارزميات وشلون اتنفذ

تم تدريب النموذج DNN   حتى تكشف البيانات نورمل او ابنورمل اذا تكدر اساعدني  بفهم الجزء العملي او ترسل مصادر تخص المشروع

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...