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
Devolucions
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:
- El codi següent importa dues biblioteques. Estem important sklearn.metrics per predir la precisió del model i biblioteques numpy.
- Els valors reals de la mostra són y_true = ['1', '1', '0', '0', '1', '1', '0'].
- ['1', '1', '0', '0', '1', '1', '0'] aquests són els valors predits del model per a les dades de mostra.
- Precisió = ( matrix[0][0] + matrix[-1][-1] ) / numpy.sum(matrix) s'utilitza per obtenir la puntuació de precisió del model de classificació.
- 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ó.