logo

Accuracy_Score en Sklearn

Una etapa crucial en el flujo de trabajo de la ciencia de datos es medir la precisión de nuestro modelo utilizando la métrica adecuada. En este tutorial, aprenderemos dos métodos para calcular la precisión de clase prevista de la muestra fuente: manualmente y usando la biblioteca scikit-learn de Python.

Aquí hay un resumen de los temas que hemos discutido en este tutorial.

  • Calcular manualmente precision_score
  • Calculando precision_score usando scikit learn
  • Scikit aprende los ejemplos de precision_score
  • ¿Cómo funciona scikit learn precision_score?

¿Qué es la precisión?

Una de las métricas más utilizadas para calcular el rendimiento de los modelos de clasificación es la precisión. El porcentaje de etiquetas que nuestro modelo predijo con éxito está representado por la precisión. Por ejemplo, si nuestro modelo clasificara con precisión 80 de 100 etiquetas, su precisión sería de 0,80.

Creación de una función para calcular la puntuación de precisión

Creemos una función de Python para calcular la puntuación de precisión de los valores predichos, dado que ya tenemos las etiquetas verdaderas de la muestra y las etiquetas predichas por el modelo.

Código

función estática en 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 

La función anterior acepta valores para las etiquetas predichas del modelo de clasificación y las etiquetas verdaderas de la muestra como argumentos y calcula la puntuación de precisión. Aquí, repetimos cada par de etiquetas verdaderas y predichas en paralelo para registrar el número de predicciones correctas. Luego dividimos ese número por el número total de etiquetas para calcular la puntuación de precisión.

Aplicaremos la función en una muestra ahora.

Código

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

Producción:

 0.9777777777777777 

Obtenemos 0,978 como puntuación de precisión para las predicciones del modelo de clasificación de vectores de soporte.

Tenga en cuenta que el uso de matrices numerosas para vectorizar el cálculo de igualdad puede hacer que el código mencionado anteriormente sea más eficiente.

Precisión usando precision_score() de Sklearn

El método precision_score() de sklearn.metrics acepta las etiquetas verdaderas de la muestra y las etiquetas predichas por el modelo como sus parámetros y calcula la puntuación de precisión como un valor flotante, que también se puede utilizar para obtener la puntuación de precisión en Python. Hay varias funciones útiles para calcular métricas de evaluación típicas en la clase sklearn.metrics. Usemos la función precision_score() de sklearn para calcular la puntuación de precisión del modelo de clasificación de vectores de soporte utilizando el mismo conjunto de datos de muestra que antes.

ex de nombre de usuario

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

Usamos esto para calcular la puntuación de precisión de la clasificación. Este método calcula la precisión de los subgrupos en la clasificación de etiquetas múltiples; El subconjunto de etiquetas previsto de un conjunto de datos debe coincidir con precisión con el conjunto de datos real de etiquetas en y_true.

Parámetros

    y_true (tipo matriz 1d o matriz que indica etiqueta/matriz dispersa):Estas son las verdaderas etiquetas para una muestra determinada.y_pred (similar a una matriz 1d, o matriz que indica etiqueta/matriz dispersa):Etiquetas previstas que ha devuelto un modelo de clasificación.normalizar (bool, predeterminado = Verdadero):Proporciona el número de muestras predichas clasificadas con éxito si la respuesta es Falso. Devuelve la proporción de muestras predichas correctamente clasificadas si es Verdadero.sample_weight (tipo matriz de forma (n,), predeterminado = Ninguno):Pesos de muestra.

Devoluciones

    puntuación (flotante):Da la proporción de muestras clasificadas exitosamente (flotantes) si normalize == True; de lo contrario, devuelve el recuento de muestras predichas clasificadas correctamente (int). 1 tiene una precisión del 100% para normalizar == Verdadero y el recuento de muestras proporcionado con normalizar == Falso.

Ejemplo de puntuación_precisión

Código

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

Producción:

 0.9777777777777777 

Cuando se utilizan indicadores de etiquetas binarias con múltiples etiquetas:

Código

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

Producción:

 0.5 

Cómo funciona scikit learn precision_score

El método precision_score del paquete sklearn.metrics asigna precisión de subconjunto en la clasificación de etiquetas múltiples.

decodificación javascript base64

Se requiere que las etiquetas que el modelo ha predicho para la muestra dada y las etiquetas verdaderas de la muestra coincidan exactamente.

La precisión describe el comportamiento del modelo en todas las clases. Si todas las clases son comparativamente significativas, es útil.

La relación entre el recuento de predicciones precisas y el número total de muestras o el número total de predicciones se utiliza para determinar la precisión del modelo.

Código:

  1. El siguiente código importa dos bibliotecas. Estamos importando sklearn.metrics para predecir la precisión del modelo y numerosas bibliotecas.
  2. Los valores verdaderos de la muestra son y_true = ['1', '1', '0', '0', '1', '1', '0'].
  3. ['1', '1', '0', '0', '1', '1', '0'] estos son los valores predichos del modelo para los datos de muestra.
  4. Precisión = (matriz[0][0] + matriz[-1][-1] ) / numpy.sum(matriz) se utiliza para obtener la puntuación de precisión del modelo de clasificación.
  5. La puntuación de precisión se muestra como resultado mediante print(exactitud).

Código

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

Producción:

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

Entonces, en este tutorial, aprendimos scikit-learn precision_score en Python y examinamos algunos ejemplos de implementación.