שלב מכריע בזרימת העבודה של מדעי הנתונים הוא למדוד את הדיוק של המודל שלנו באמצעות המדד המתאים. במדריך זה, נלמד שתי שיטות לחישוב דיוק המחלקה החזוי של מדגם המקור: באופן ידני ושימוש בספריית sikit-learn של Python.
להלן סקירה של הנושאים שדנו בהם במדריך זה.
- חישוב ידני של דיוק_ציון
- חישוב דיוק_ציון באמצעות scikit learning
- Scikit למד דוגמאות של accuracy_score
- איך עובד sikit learning accuracy_score?
מה זה דיוק?
אחד המדדים הנפוצים שמחשבים את הביצועים של מודלים לסיווג הוא דיוק. אחוז התוויות שהמודל שלנו חזה בהצלחה מיוצג על ידי דיוק. לדוגמה, אם המודל שלנו סיווג במדויק 80 מתוך 100 תוויות, הדיוק שלו יהיה 0.80.
יצירת פונקציה לחישוב ציון דיוק
בואו ניצור פונקציית Python כדי לחשב את ציון דיוק הערכים החזויים, בהתחשב בכך שכבר יש לנו את התוויות האמיתיות של המדגם והתוויות חזו את המודל.
replaceall ב-string java
קוד
# 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 כציון הדיוק עבור התחזיות של מודל Support Vector Classification.
שים לב ששימוש במערכים numpy כדי ליצור וקטור את חישוב השוויון יכול להפוך את הקוד שהוזכר לעיל ליעיל יותר.
דיוק באמצעות accuracy_score() של Sklearn
שיטת accuracy_score() של sklearn.metrics, מקבלת את התוויות האמיתיות של המדגם ואת התוויות הנחזות על ידי המודל כפרמטרים שלה ומחשבת את ציון הדיוק כערך צף, שניתן להשתמש בו גם כדי לקבל את ציון הדיוק ב-Python. ישנן מספר פונקציות מועילות לחישוב מדדי הערכה טיפוסיים במחלקה sklearn.metrics. בואו נשתמש בפונקציית accuracy_score() של sklearn כדי לחשב את ציון הדיוק של מודל Support Vector Classification תוך שימוש באותו מערך נתונים לדוגמה כמו קודם.
sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)
אנו משתמשים בזה לחישוב ציון הדיוק של הסיווג. שיטה זו מחשבת דיוק תת-קבוצות בסיווג רב-תווית; תת-קבוצת התוויות החזויה של מערך נתונים חייבת להתאים במדויק למערך הנתונים האמיתי של התוויות ב-y_true.
פרמטרים
החזרות
דוגמה של 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
איך sikit learn accuracy_score עובד
שיטת accuracy_score של חבילת sklearn.metrics מקצה דיוק של תת-קבוצות בסיווג ריבוי תוויות.
נדרש שהתוויות שהמודל חזה עבור המדגם הנתון והתוויות האמיתיות של המדגם תואמות במדויק.
הדיוק מתאר את התנהגות המודל בכל המעמדות. אם כל השיעורים משמעותיים יחסית, זה מועיל.
היחס בין ספירת התחזיות המדויקות למספר הכולל של הדגימות או המספר הכולל של התחזיות משמש לקביעת דיוק המודל.
קוד:
- הקוד שלהלן מייבא שתי ספריות. אנו מייבאים sklearn.metrics לחיזוי דיוק המודל וספריות numpy.
- הערכים האמיתיים של המדגם הם y_true = ['1', '1', '0', '0', '1', '1', '0'].
- ['1', '1', '0', '0', '1', '1', '0'] אלו הם הערכים החזויים של המודל עבור נתוני המדגם.
- דיוק = ( מטריצה[0][0] + מטריצה[-1][-1] ) / numpy.sum(מטריקס) משמש כדי לקבל את ציון הדיוק של מודל הסיווג.
- ציון הדיוק מוצג כפלט באמצעות הדפסה (דיוק).
קוד
# 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 accuracy_score ב-Python ובחנו כמה דוגמאות ליישום.