logo

Accuracy_Score في Sklearn

تتمثل إحدى المراحل الحاسمة في سير عمل علم البيانات في قياس دقة نموذجنا باستخدام المقياس المناسب. في هذا البرنامج التعليمي، سنتعلم طريقتين لحساب دقة الفئة المتوقعة للعينة المصدر: يدويًا وباستخدام مكتبة Scikit-Learn الخاصة بـ Python.

فيما يلي ملخص للمواضيع التي ناقشناها في هذا البرنامج التعليمي.

  • حساب دقة_النتيجة يدويًا
  • حساب درجة الدقة باستخدام scikit Learn
  • تعلم Scikit أمثلة على دقة_النتيجة
  • كيف يعمل scikit على دقة_الدقة؟

ما هي الدقة؟

الدقة هي إحدى المقاييس المستخدمة على نطاق واسع والتي تحسب أداء نماذج التصنيف. يتم تمثيل النسبة المئوية للتسميات التي تنبأ بها نموذجنا بنجاح بالدقة. على سبيل المثال، إذا قام نموذجنا بتصنيف 80 من 100 تصنيف بدقة، فستكون دقته 0.80.

إنشاء وظيفة لحساب درجة الدقة

لنقم بإنشاء دالة بايثون لحساب درجة دقة القيم المتوقعة، نظرًا لأن لدينا بالفعل تسميات حقيقية للعينة والعلامات المتوقعة للنموذج.

شفرة

 # Python program to define a function to compute accuracy score of model's predicted class # Defining a function which takes true values of the sample and values predicted by the model def compute_accuracy(Y_true, Y_pred): correctly_predicted = 0 # iterating over every label and checking it with the true sample for true_label, predicted in zip(Y_true, Y_pred): if true_label == predicted: correctly_predicted += 1 # computing the accuracy score accuracy_score = correctly_predicted / len(Y_true) return accuracy_score 

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

سوف نقوم بتطبيق الوظيفة على عينة الآن.

عشوائي ليس في جافا

شفرة

 # Python program to compute accuracy score using the function compute_accuracy # Importing the required libraries import numpy as np from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Splitting the dataset in training and test data X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 0) # Training the model using the Support Vector Classification class of sklearn svc = SVC() svc.fit(X_train, Y_train) # Computing the accuracy score of the model Y_pred = svc.predict(X_test) score = compute_accuracy(Y_test, Y_pred) print(score) 

انتاج:

 0.9777777777777777 

حصلنا على 0.978 كدرجة دقة لتنبؤات نموذج تصنيف ناقلات الدعم.

لاحظ أن استخدام المصفوفات numpy لتوجيه حساب المساواة يمكن أن يجعل الكود المذكور أعلاه أكثر كفاءة.

الدقة باستخدام دقة Sklearn's Accuracy_score()

تقبل طريقة الدقة_score() الخاصة بـ sklearn.metrics التسميات الحقيقية للعينة والتسميات التي تنبأ بها النموذج كمعلمات خاصة بها وتحسب درجة الدقة كقيمة عائمة، والتي يمكن استخدامها أيضًا للحصول على درجة الدقة في Python. هناك العديد من الوظائف المفيدة لحساب مقاييس التقييم النموذجية في فئة sklearn.metrics. دعونا نستخدم وظيفة sklearn's Accuracy_score() لحساب درجة دقة نموذج تصنيف ناقلات الدعم باستخدام نفس مجموعة البيانات النموذجية كما في السابق.

sklearn.metrics.accuracy_score (y_true، y_pred، *، تطبيع = صحيح، Sample_weight = لا شيء)

نحن نستخدم هذا لحساب درجة دقة التصنيف. تحسب هذه الطريقة دقة المجموعة الفرعية في التصنيف متعدد الملصقات؛ يجب أن تتطابق مجموعة التسميات الفرعية المتوقعة لمجموعة البيانات بدقة مع مجموعة البيانات الفعلية للتسميات في y_true.

حدود

    y_true (يشبه المصفوفة 1d، أو المصفوفة التي تشير إلى التسمية/المصفوفة المتفرقة):هذه هي التسميات الحقيقية لعينة معينة.y_pred (يشبه المصفوفة 1d، أو المصفوفة التي تشير إلى التسمية/المصفوفة المتفرقة):التسميات المتوقعة التي عاد إليها نموذج التصنيف.التطبيع (منطقي، افتراضي = صحيح):إنه يعطي عدد العينات المتوقعة المصنفة بنجاح إذا كانت الإجابة خاطئة. إرجاع نسبة العينات المتوقعة المصنفة بشكل صحيح إذا كانت True.Sample_weight (مصفوفة الشكل (n,)، الافتراضي = لا شيء):أوزان العينة.

عائدات

    النتيجة (تعويم):يعطي نسبة العينات المصنفة بنجاح (العائمة) إذا تم التطبيع == True؛ وبخلاف ذلك، فإنه يُرجع عدد العينات المتوقعة المصنفة بنجاح (int). 1 دقة 100% للتطبيع == صحيح وعدد العينات المقدمة مع التطبيع == خطأ.

مثال على Accuracy_score

شفرة

تسلسل سلسلة جافا
 # Python program to compute accuracy score using the function accuracy_score # Importing the required libraries import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.svm import SVC from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Splitting the dataset in training and test data X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 0) # Training the model using the Support Vector Classification class of sklearn svc = SVC() svc.fit(X_train, Y_train) # Computing the accuracy_score of the model Y_pred = svc.predict(X_test) score = accuracy_score(Y_test, Y_pred) print(score) 

انتاج:

 0.9777777777777777 

عند استخدام مؤشرات التسمية الثنائية مع تسميات متعددة:

شفرة

 # Python program to show how to calculate accuracy score for multi-label data import numpy as np accuracy_score(np.array([[1, 1], [2, 1]]), np.ones((2, 2))) 

انتاج:

 0.5 

كيف يعمل scikit على دقة_النتيجة

تقوم طريقة Accuracy_score الخاصة بحزمة sklearn.metrics بتعيين دقة المجموعة الفرعية في التصنيف متعدد الملصقات.

من الضروري أن تتطابق التسميات التي تنبأ بها النموذج للعينة المعطاة والتسميات الحقيقية للعينة تمامًا.

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

يتم استخدام نسبة عدد التنبؤات الدقيقة إلى العدد الإجمالي للعينات أو العدد الإجمالي للتنبؤات لتحديد دقة النموذج.

قائمة مرتبطة مزدوجة

شفرة:

  1. يستورد الكود أدناه مكتبتين. نحن نقوم باستيراد sklearn.metrics للتنبؤ بدقة النموذج والمكتبات العددية.
  2. القيم الحقيقية للعينة هي y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1'، '1'، '0'، '0'، '1'، '1'، '0'] هذه هي القيم المتوقعة للنموذج لبيانات العينة.
  4. يتم استخدام الدقة = ( مصفوفة [0] [0] + مصفوفة [-1] [-1] ) / numpy.sum(matrix) للحصول على درجة دقة نموذج التصنيف.
  5. يتم عرض درجة الدقة كمخرج باستخدام الطباعة (الدقة).

شفرة

 # Pythpn program to show how accuracy_score works # import libraries import numpy as np import sklearn.metrics # Creating a true and predicted sample Y_true = ['1', '1', '0', '0', '1', '1', '0'] Y_pred = ['1', '0', '1', '1', '0', '1', '1'] # finding a confusion matrix matrix = sklearn.metrics.confusion_matrix(Y_true, Y_pred) matrix = np.flip(matrix) print('Confusion Matrix: 
', matrix) accuracy = (matrix[0][0] + matrix[-1][-1]) / np.sum(matrix) print(accuracy) 

انتاج:

 Confusion Matrix: [[2 2] [3 0]] 0.2857142857142857 

لذا، في هذا البرنامج التعليمي، تعلمنا دقة scikit-learn في لغة Python واختبرنا بعض أمثلة التنفيذ.