logo

Accuracy_Score a Sklearn

Una etapa crucial en el flux de treball de la ciència de dades és mesurar la precisió del nostre model utilitzant la mètrica adequada. En aquest tutorial, aprendrem dos mètodes per calcular la precisió de classe prevista de la mostra font: manualment i utilitzant la biblioteca scikit-learn de Python.

Aquí teniu un resum dels temes que hem tractat en aquest tutorial.

  • Càlcul manual de accuracy_score
  • Càlcul de accuracy_score mitjançant scikit learn
  • Scikit aprèn els exemples de accuracy_score
  • Com funciona Scikit Learn accuracy_score?

Què és la precisió?

Una de les mètriques àmpliament utilitzades que calcula el rendiment dels models de classificació és la precisió. El percentatge d'etiquetes que el nostre model va predir amb èxit està representat per la precisió. Per exemple, si el nostre model classificava amb precisió 80 de 100 etiquetes, la seva precisió seria de 0,80.

Creació de funcions per calcular la puntuació de precisió

Creem una funció Python per calcular la puntuació de precisió dels valors predits, atès que ja tenim les etiquetes reals de la mostra i les etiquetes van predir el model.

Codi

 # 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 

La funció anterior accepta valors per a les etiquetes previstes del model de classificació i les etiquetes reals de la mostra com a arguments i calcula la puntuació de precisió. Aquí, iterem a través de cada parell d'etiquetes reals i predites en paral·lel per registrar el nombre de prediccions correctes. A continuació, dividim aquest nombre pel nombre total d'etiquetes per calcular la puntuació de precisió.

Aplicarem la funció a una mostra ara.

arp una ordre

Codi

 # 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) 

Sortida:

 0.9777777777777777 

Obtenim 0,978 com a puntuació de precisió per a les prediccions del model de classificació de vectors de suport.

Tingueu en compte que l'ús de matrius numpy per vectoritzar el càlcul d'igualtat pot fer que el codi esmentat anteriorment sigui més eficient.

Precisió utilitzant accuracy_score() de Sklearn

El mètode accuracy_score() de sklearn.metrics accepta les etiquetes reals de la mostra i les etiquetes previstes pel model com a paràmetres i calcula la puntuació de precisió com a valor flotant, que també es pot utilitzar per obtenir la puntuació de precisió en Python. Hi ha diverses funcions útils per calcular mètriques d'avaluació típiques a la classe sklearn.metrics. Utilitzem la funció accuracy_score() de sklearn per calcular la puntuació de precisió del model de classificació de vectors de suport utilitzant el mateix conjunt de dades de mostra que anteriorment.

sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=Cap)

Utilitzem això per calcular la puntuació de precisió de la classificació. Aquest mètode calcula la precisió del subgrup en la classificació multietiqueta; el subconjunt d'etiquetes previst d'un conjunt de dades ha de coincidir amb precisió amb el conjunt de dades real d'etiquetes a y_true.

Paràmetres

    y_true (com a matriu 1d o matriu que indica etiqueta / matriu escassa):Aquestes són les etiquetes reals per a una mostra determinada.y_pred (semblant a matriu 1d, o matriu que indica etiqueta / matriu escassa):Etiquetes previstes que ha retornat un model de classificació.normalitzar (bool, predeterminat = True):Proporciona el nombre de mostres predites classificades amb èxit si la resposta és Falsa. Retorna la proporció de mostres predites classificades correctament si és cert.pes_mostra (forma de matriu (n,), per defecte = Cap):Peses de mostra.

Devolucions

    puntuació (float):Proporciona la proporció de mostres classificades amb èxit (float) si es normalitza == True; en cas contrari, retorna el recompte de mostres predites classificades correctament (int). 1 és una precisió del 100% per normalitzar == Cert i el recompte de mostres proporcionat amb normalitzar == Fals.

Exemple de Accuracy_score

Codi

llista de matrius en l'ordenació java
 # 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) 

Sortida:

 0.9777777777777777 

Quan utilitzeu indicadors d'etiquetes binaris amb diverses etiquetes:

Codi

 # 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))) 

Sortida:

 0.5 

Com funciona scikit learn accuracy_score

El mètode accuracy_score del paquet sklearn.metrics assigna la precisió del subconjunt en la classificació multietiqueta.

Es requereix que les etiquetes que el model ha predit per a la mostra donada i les etiquetes reals de la mostra coincideixin exactament.

La precisió descriu el comportament del model a totes les classes. Si totes les classes són comparablement significatives, és útil.

La relació entre el nombre de prediccions precises i el nombre total de mostres o el nombre total de prediccions s'utilitza per determinar la precisió del model.

convencions de denominació de Java

Codi:

  1. El codi següent importa dues biblioteques. Estem important sklearn.metrics per predir la precisió del model i biblioteques numpy.
  2. Els valors reals de la mostra són y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1', '1', '0', '0', '1', '1', '0'] aquests són els valors predits del model per a les dades de mostra.
  4. Precisió = ( matrix[0][0] + matrix[-1][-1] ) / numpy.sum(matrix) s'utilitza per obtenir la puntuació de precisió del model de classificació.
  5. La puntuació de precisió es mostra com a sortida mitjançant print(exactitud).

Codi

 # 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) 

Sortida:

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

Així, en aquest tutorial, hem après scikit-learn accuracy_score a Python i hem examinat alguns exemples d'implementació.