¿Cómo calcular la puntuación F1 en R?

En este artículo, veremos el enfoque para calcular F1 Score utilizando los diversos paquetes y sus diversas funcionalidades en el lenguaje R.

Puntuación F1

La puntuación F o medida F es una medida de la precisión de una prueba. Se calcula a partir de la precisión y el recuerdo de la prueba, donde la precisión es el número de resultados positivos verdaderos dividido por el número de todos los resultados positivos, incluidos los que no se identificaron correctamente, y el recuerdo es el número de resultados positivos verdaderos dividido por el número de todas las muestras que deberían haberse identificado como positivas.

Método 1: usar la función F1_Score del paquete Mlmetrics

Bajo este enfoque para calcular el puntaje f1, el usuario debe instalar e importar el paquete Mlmetrics en la consola R actual y, además, el usuario debe llamar a la función F1_Score() desde este paquete y pasarlo con el parámetro requerido para obtener la puntuación F1 del valor predicho y real y, además, a cambio, esta función devolverá la puntuación F1 de los valores real y predicho dados.

Sintaxis para instalar e importar el paquete Mlmetrics en lenguaje R:

install.package("MLmetrics")
library("MLmetrics")

Función F1_Score(): Esta función se utiliza para calcular la puntuación F1.

Sintaxis: F1_Score(y_true, y_pred, positivo = NULL)

Parámetros:

  • y_true: verdad básica (correcta) 0-1 vector de etiquetas
  • y_pred: vector de etiquetas pronosticado, tal como lo devuelve un clasificador
  • positivo: una string de caracteres opcional para el nivel del factor que corresponde a un resultado «positivo»

Ejemplo: En este ejemplo, estamos creando dos vectores de 10 puntos de datos, uno con los valores reales y otro con los valores pronosticados y con la ayuda de la función F1_Score() del paquete MLmetrics estamos calculando el puntaje f1 en la programación R .

R

# Import Mlmetrics library
library(MLmetrics)
  
# Create Data
actual = c(1,2,28,1,5,6,7,8,9,10)
predicted = c(1,2,3,4,5,6,7,8,9,10)
  
# Calculate F!_Score
F1_Score(predicted,actual)

Producción:

[1] 0.6666667

Método 2: Usar la función confusionMatrix() del paquete caret

En este enfoque para calcular la puntuación F1, el usuario primero debe instalar e importar el paquete de intercalación en la consola R en funcionamiento, y luego el usuario debe llamar a la función confusionMatrix() y pasarle el parámetro requerido. Esto devolverá la puntuación F1 al usuario de los datos proporcionados en el lenguaje R.

Sintaxis para instalar e importar el paquete caret en lenguaje R:

install.package("caret")
library("caret")

Función confusionMatrix(): Calcula una tabulación cruzada de clases observadas y pronosticadas con estadísticas asociadas.

Sintaxis: confusionMatrix(datos, referencia, positivo = NULL, dnn = c(“Predicción”, “Referencia”), …)

Parámetros:

  • datos: un factor de clases predichas
  • referencia: un factor de clases para ser utilizado como los resultados verdaderos
  • positivo: una string de caracteres opcional para el nivel del factor que corresponde a un resultado «positivo» (si eso tiene sentido para sus datos).
  • dnn: un vector de caracteres de dimnames para la tabla
  • …: opciones a pasar.

Ejemplo: en este ejemplo, somos dos vectores, uno con los datos reales y otro con los datos previstos y, además, estamos usando la función confusionMatrix() para obtener la puntuación F1 de los datos dados.

R

# Import caret library
library(caret)
  
# Create Data
actual <- factor(rep(c(1, 2),
                     times=c(16, 24)))
predicted <- factor(rep(c(1, 2, 1, 2),
                        times=c(12, 4, 7, 17)))
  
# create confusion matrix 
confusionMatrix(predicted, actual,
                mode = "everything",
                positive="1")

Producción:

Confusion Matrix and Statistics

          Reference
Prediction  1  2
         1 12  7
         2  4 17
                                         
               Accuracy : 0.725          
                 95% CI : (0.5611, 0.854)
    No Information Rate : 0.6            
    P-Value [Acc > NIR] : 0.07095        
                                         
                  Kappa : 0.4444         
                                         
 Mcnemar's Test P-Value : 0.54649        
                                         
            Sensitivity : 0.7500         
            Specificity : 0.7083         
         Pos Pred Value : 0.6316         
         Neg Pred Value : 0.8095         
              Precision : 0.6316         
                 Recall : 0.7500         
                     F1 : 0.6857         
             Prevalence : 0.4000         
         Detection Rate : 0.3000         
   Detection Prevalence : 0.4750         
      Balanced Accuracy : 0.7292         
                                         
       'Positive' Class : 1 

Método 3: Calcule la puntuación F1 del modelo:

En este método para calcular la puntuación F1 del modelo, el usuario primero debe crear el modelo con respecto a los datos dados, luego el usuario debe calcular la array de confusión de ese modelo, además, la función err_metric() con la array de confusión pasa como su parámetro a la puntuación f1 del modelo construido en el lenguaje de programación R.

Sintaxis: err_metric(cm)

Donde, cm: array de confusión

Ejemplo: En este ejemplo, simplemente crearemos un modelo de regresión logística del conjunto de datos dado y luego usaremos la función err_metrics() para calcular la puntuación f1 en el lenguaje de programación R.

El enlace del conjunto de datos.

R

library(caTools)
data = read.csv('Social_Network_Ads.csv')
data = data[3:5]
split = sample.split(data$Purchased, SplitRatio = 0.75)
train = subset (data, split == TRUE)
test = subset (data, split == FALSE)
train[-3] = scale(train[-3])
test[-3] = scale(test[-3])
classifier = glm(formula = Purchased ~ .,
                 family = binomial,
                 data = train)
prob_pred = predict (classifier, type = 'response', 
                     newdata = test[-3])
y_pred = ifelse (prob_pred > 0.5, 1, 0)
cm = table (test[, 3], y_pred > 0.5)
err_metric(cm)

Producción:

[1] "Precision value of the model:  0.72"
[1] "Accuracy of the model:  0.77"
[1] "Recall value of the model:  0.12"
[1] "False Positive rate of the model:  0.12"
[1] "False Negative rate of the model:  0.42"
[1] "f1 score of the model:  0.21"

Publicación traducida automáticamente

Artículo escrito por geetansh044 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *