O etapă crucială în fluxul de lucru al științei datelor este măsurarea acurateței modelului nostru folosind metrica adecvată. În acest tutorial, vom învăța două metode pentru a calcula acuratețea estimată a clasei eșantionului sursă: manual și folosind biblioteca scikit-learn a Python.
Iată o scurtă prezentare a subiectelor pe care le-am discutat în acest tutorial.
- Calcularea manuală a punctajului de precizie
- Calculul accuracy_score folosind scikit Learn
- Scikit învață exemplele lui accuracy_score
- Cum funcționează scikit learn accuracy_score?
Ce este acuratețea?
Una dintre valorile utilizate pe scară largă care calculează performanța modelelor de clasificare este acuratețea. Procentul de etichete pe care modelul nostru le-a prezis cu succes este reprezentat de acuratețe. De exemplu, dacă modelul nostru ar clasifica cu exactitate 80 din 100 de etichete, precizia sa ar fi de 0,80.
Crearea funcției pentru a calcula scorul de precizie
Să creăm o funcție Python pentru a calcula scorul de precizie al valorilor prezise, având în vedere că avem deja etichetele adevărate ale eșantionului și etichetele au prezis modelul.
Cod
structuri de date în 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
Funcția de mai sus acceptă valori pentru etichetele prezise ale modelului de clasificare și etichetele adevărate ale eșantionului ca argumente și calculează scorul de precizie. Aici, repetăm fiecare pereche de etichete adevărate și prezise în paralel pentru a înregistra numărul de predicții corecte. Apoi împărțim acel număr la numărul total de etichete pentru a calcula scorul de precizie.
Vom aplica funcția pe un eșantion acum.
funcție statică în java
Cod
# 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)
Ieșire:
0.9777777777777777
Obținem 0,978 ca scor de precizie pentru predicțiile modelului de clasificare a vectorilor de suport.
Rețineți că utilizarea tablourilor numpy pentru a vectoriza calculul egalității poate face codul menționat mai sus mai eficient.
Precizie folosind scorul de precizie al lui Sklearn ()
Metoda accuracy_score() din sklearn.metrics, acceptă etichetele adevărate ale eșantionului și etichetele prezise de model ca parametrii săi și calculează scorul de precizie ca valoare flotantă, care poate fi, de asemenea, utilizată pentru a obține scorul de precizie în Python. Există mai multe funcții utile pentru a calcula valorile de evaluare tipice în clasa sklearn.metrics. Să folosim funcția accuracy_score() a lui sklearn pentru a calcula scorul de precizie al modelului Support Vector Classification folosind același set de date eșantion ca mai devreme.
sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=Niciunul)
dezactivați modul dezvoltator
Folosim aceasta pentru a calcula scorul de precizie al clasificării. Această metodă calculează acuratețea subgrupului în clasificarea cu mai multe etichete; subsetul de etichete estimat al unui set de date trebuie să se potrivească exact cu setul de date real de etichete în y_true.
Parametrii
Se intoarce
Exemplu de Accuracy_score
Cod
# 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)
Ieșire:
0.9777777777777777
Când utilizați indicatori de etichetă binari cu mai multe etichete:
Cod
# 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)))
Ieșire:
0.5
Cum funcționează scikit learn accuracy_score
Metoda accuracy_score a pachetului sklearn.metrics atribuie acuratețea subsetului în clasificarea cu mai multe etichete.
text îngroșat css
Este necesar ca etichetele pe care modelul le-a prezis pentru eșantionul dat și etichetele adevărate ale eșantionului să se potrivească exact.
Precizia descrie comportamentul modelului în toate clasele. Dacă toate clasele sunt comparabil semnificative, este util.
Raportul dintre numărul de predicții precise și numărul total de eșantioane sau numărul total de predicții este utilizat pentru a determina acuratețea modelului.
hopa in java
Cod:
- Codul de mai jos importă două biblioteci. Importăm sklearn.metrics pentru a estima acuratețea modelului și biblioteci numpy.
- Valorile adevărate ale eșantionului sunt y_true = ['1', '1', '0', '0', '1', '1', '0'].
- [„1”, „1”, „0”, „0”, „1”, „1”, „0”] acestea sunt valorile prezise ale modelului pentru datele eșantionului.
- Precizie = ( matrix[0][0] + matrix[-1][-1] ) / numpy.sum(matrix) este folosit pentru a obține scorul de precizie al modelului de clasificare.
- Scorul de precizie este afișat ca rezultat utilizând tipărirea (precizia).
Cod
# 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)
Ieșire:
Confusion Matrix: [[2 2] [3 0]] 0.2857142857142857
Deci, în acest tutorial, am învățat scikit-learn accuracy_score în Python și am examinat câteva exemple de implementare.