كيفية تفسير تقرير التصنيف في sklearn (مع مثال)


عندما نستخدم نماذج التصنيف في التعلم الآلي، فإننا نستخدم ثلاثة مقاييس شائعة لتقييم جودة النموذج:

1. الدقة : نسبة التوقعات الإيجابية الصحيحة مقارنة بإجمالي التوقعات الإيجابية.

2. الاستدعاء : نسبة التوقعات الإيجابية الصحيحة مقارنة بإجمالي الإيجابيات الفعلية.

3. درجة F1 : المتوسط التوافقي المرجح للدقة والاستذكار. كلما كان النموذج أقرب إلى 1، كان النموذج أفضل.

  • درجة F1: 2* (الدقة * الاستدعاء) / (الدقة + الاستدعاء)

باستخدام هذه المقاييس الثلاثة، يمكننا أن نفهم مدى قدرة نموذج تصنيف معين على التنبؤ بالنتائج لمتغيرات استجابة معينة.

لحسن الحظ، عند تركيب نموذج تصنيف في بايثون، يمكننا استخدام وظيفة Classification_report() من مكتبة sklearn لإنشاء هذه المقاييس الثلاثة.

يوضح المثال التالي كيفية استخدام هذه الوظيفة عمليًا.

مثال: كيفية استخدام تقرير التصنيف في sklearn

في هذا المثال، سنلائم نموذج الانحدار اللوجستي الذي يستخدم النقاط ويساعد على التنبؤ بما إذا كان سيتم ضم 1000 لاعب كرة سلة جامعي مختلف إلى الدوري الاميركي للمحترفين أم لا.

أولاً، سنقوم باستيراد الحزم اللازمة لإجراء الانحدار اللوجستي في بايثون:

 import pandas as pd
import numpy as np
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn. metrics import classification_report

بعد ذلك، سنقوم بإنشاء إطار بيانات يحتوي على معلومات 1000 لاعب كرة سلة:

 #make this example reproducible
n.p. random . seeds (1)

#createDataFrame
df = pd. DataFrame ({' points ': np. random . randint (30, size=1000),
                   ' assists ': np. random . randint (12, size=1000),
                   ' drafted ': np. random . randint (2, size=1000)})

#view DataFrame
df. head ()

	points assists drafted
0 5 1 1
1 11 8 0
2 12 4 1
3 8 7 0
4 9 0 0

ملحوظة : تشير القيمة 0 إلى أن اللاعب لم تتم صياغته بينما تشير القيمة 1 إلى أن اللاعب قد تمت صياغته.

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

 #define the predictor variables and the response variable
X = df[[' points ', ' assists ']]
y = df[' drafted ']

#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split (X,y,test_size=0.3,random_state=0)  

#instantiate the model
logistic_regression = LogisticRegression()

#fit the model using the training data
logistic_regression. fit (X_train,y_train)

#use model to make predictions on test data
y_pred = logistic_regression. predict (X_test)

وأخيرًا، سوف نستخدم وظيفة Classification_report() لطباعة مقاييس التصنيف الخاصة بنموذجنا:

 #print classification report for model
print (classification_report(y_test, y_pred))

              precision recall f1-score support

           0 0.51 0.58 0.54 160
           1 0.43 0.36 0.40 140

    accuracy 0.48 300
   macro avg 0.47 0.47 0.47 300
weighted avg 0.47 0.48 0.47 300

وإليك كيفية تفسير النتيجة:

توضيح : من بين جميع اللاعبين الذين توقع نموذجهم أن يتم تجنيدهم، 43% فقط تم تجنيدهم بالفعل.

تذكير : من بين جميع اللاعبين الذين تمت صياغتهم بالفعل، توقع النموذج هذه النتيجة بشكل صحيح فقط لـ 36% منهم.

نقاط F1 : يتم حساب هذه القيمة على النحو التالي:

  • درجة F1: 2* (الدقة * الاستدعاء) / (الدقة + الاستدعاء)
  • نتيجة F1: 2*(.43*.36)/(.43+.36)
  • تصنيف F1: 0.40 .

نظرًا لأن هذه القيمة ليست قريبة جدًا من 1، فهذا يخبرنا أن النموذج لا يتنبأ بشكل جيد بما إذا كان سيتم تجنيد اللاعبين أم لا.

الدعم : تخبرنا هذه القيم ببساطة بعدد اللاعبين الذين ينتمون إلى كل فئة في مجموعة بيانات الاختبار. يمكننا أن نرى أنه من بين اللاعبين في مجموعة بيانات الاختبار، هناك 160 لاعبًا لم تتم صياغتهم و 140 كانوا كذلك.

ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة Classification_report() هنا .

مصادر إضافية

توفر البرامج التعليمية التالية معلومات إضافية حول استخدام نماذج التصنيف في بايثون:

كيفية تنفيذ الانحدار اللوجستي في بايثون
كيفية إنشاء مصفوفة الارتباك في بايثون
كيفية حساب الدقة المتوازنة في بايثون

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *