Ir al contenido principal

Puntuación F1 en machine learning: Una métrica equilibrada para la precisión y la recuperación

Comprende cómo la puntuación F1 evalúa el rendimiento del modelo combinando precisión y recuperación. Aprende su uso en la clasificación binaria y multiclase, con ejemplos en Python.
Actualizado 12 nov 2025  · 6 min de lectura

Al crear modelos basados en el aprendizaje automático, evaluar el rendimiento de un modelo es tan importante como entrenarlo. Aunque la precisión suele ser la métrica predeterminada, puede resultar engañosa, especialmente en conjuntos de datos desequilibrados en los que hay una clase que domina los datos. 

La puntuación F1 es la media armónica de la precisión y la recuperación. Equilibra la compensación entre falsos positivos y falsos negativos, y proporciona una medida más precisa del rendimiento del modelo.

En aplicaciones como la detección de fraudes, el diagnóstico médico, el filtrado de spam y la detección de fallos, la precisión por sí sola no basta para ofrecer una visión completa. Un modelo puede alcanzar una gran precisión, pero si no detecta casos críticos poco frecuentes, puede que esté haciendo más daño que bien. La puntuación F1 cubre este riesgo. Si aún eres nuevo en el campo de las métricas de evaluación, es posible que desees explorar los conceptos básicos en Fundamentos del machine learning en Python antes de continuar.

¿Qué es la puntuación F1?

La puntuación F1 mide el equilibrio entre la precisión y la recuperación de un modelo. Va de 0 a 1, donde 1 indica una precisión y una recuperación perfectas, y 0 implica un rendimiento deficiente.

  • La precisión ayuda a medir cuántas de todas las predicciones positivas del modelo fueron ciertas.
  • La recuperación es útil para analizar cuántos fueron clasificados correctamente por el modelo entre todos los verdaderos positivos. 

La puntuación F1 combina ambos en una sola cifra, penalizando a los modelos que funcionan bien en uno pero no en el otro. Por ejemplo, uno que recuerde muy bien pero no sea muy preciso puede detectar correctamente todos los casos positivos, pero dar demasiados falsos positivos. La medida F1 garantiza que ambas medidas se tomen conjuntamente. 

Fórmula y explicación de la puntuación F1

La fórmula de la puntuación F1 es:

Fórmula de la puntuación F1

Donde la precisión se define de la siguiente manera:

fórmula de precisión

Y la ecuación para el recuerdo es:

fórmula de recuperación

Aquí, TP = verdaderos positivos (VP), FP = falsos positivos (FP) y FN = falsos negativos (FN).

Se utiliza la media armónica en lugar de la media aritmética porque la primera penaliza las grandes diferencias. En caso de alta precisión pero baja recuperación (o viceversa), la puntuación F1 descenderá significativamente, lo que reflejará un desequilibrio.

Puntuación F1 frente a Precisión

La precisión determina las predicciones correctas del total de predicciones:

Aunque es útil para conjuntos con equilibrio de clases, la precisión puede ser engañosa en problemas con desequilibrio de clases.

Ejemplo:

Si un sistema de filtrado de spam contiene un 90 % de mensajes spam y un 10 % de mensajes que no son spam, un clasificador ingenuo que clasifica todos los correos electrónicos como «spam» obtiene una precisión del 90 %, pero nunca clasifica correctamente los correos electrónicos que no son spam. Eso no sirve de nada en la práctica.

En este caso, la medida F1 es más precisa, ya que tiene en cuenta el coste de los falsos positivos y los falsos negativos, algo que la precisión no hace.

Puntuación F1 para clasificación binaria y multiclase

Clasificación binaria

En la clasificación binaria, la puntuación F1 se calcula en relación con la clase positiva. Por ejemplo, en las pruebas médicas, la clase positiva podría representar «presencia de enfermedad».

Clasificación multiclase

En problemas multiclase, las puntuaciones F1 se amplíanutilizando métodos de promediado:

Método

Descripción

Mejor para

Macro

Calcula F1 de forma independiente para cada clase y, a continuación, obtiene la media.

Conjuntos de datos equilibrados, con la misma ponderación para todas las clases.

Ponderado

Promedios de puntuaciones F1 ponderadas por el soporte de clase (número de muestras por clase).

Conjuntos de datos desequilibrados.

Micro

Agrega las contribuciones de todas las clases para calcular un F1 global.

Situaciones en las que el rendimiento general es más importante.

Esta flexibilidad hace que la puntuación F1sea aplicable a una amplia variedad de problemas de clasificación.

Cómo calcular la puntuación F1 en Python

La biblioteca scikit-learn incluye funciones sencillas para calcular la puntuación F1.

Ejemplo de clasificación binaria

Comienza evaluando un problema sencillo de clasificación binaria en el que las predicciones son 0 o 1. La función f1_score() calcula la puntuación F1 directamente utilizando las etiquetas verdaderas y predichas.

from sklearn.metrics import f1_score

# True labels
y_true = [0, 1, 1, 1, 0, 1, 0, 1]

# Predicted labels
y_pred = [0, 1, 0, 1, 0, 1, 1, 1]

# Calculate F1 Score
print("F1 Score:", round(f1_score(y_true, y_pred, average='binary'),2))
F1 Score: 0.8

Ejemplo de clasificación multiclase

A continuación, puedes ampliar el mismo enfoque a problemas multiclase, en los que el modelo predice más de dos clases. El parámetro « average » controla cómo se agregan las puntuaciones F1 entre clases; las opciones más comunes son « 'macro' », « 'micro' » y « 'weighted' ».

from sklearn.metrics import f1_score, classification_report

y_true = [0, 1, 2, 2, 0, 1, 2, 1, 2]
y_pred = [0, 2, 1, 2, 0, 0, 2, 1, 2]

# Macro, Micro, Weighted F1
print("Macro F1:", round(f1_score(y_true, y_pred, average='macro'),2))
print("Micro F1:", round(f1_score(y_true, y_pred, average='micro'),2))
print("Weighted F1:", round(f1_score(y_true, y_pred, average='weighted'),2))

# Detailed report
print(classification_report(y_true, y_pred))
Macro F1: 0.65
Micro F1: 0.67
Weighted F1: 0.64
              precision    recall  f1-score   support

           0       0.67      1.00      0.80         2
           1       0.50      0.33      0.40         3
           2       0.75      0.75      0.75         4

    accuracy                           0.67         9
   macro avg       0.64      0.69      0.65         9
weighted avg       0.65      0.67      0.64         9

Cuando calculamos F1 o en la clasificación multiclase o multietiqueta, debemos decidir cómo promediar las puntuaciones entre las diferentes clases. El parámetro average en scikit-learn ofrece varias opciones:

  • El binario se utiliza en el caso de dos clases. Nos centramos en la clase positiva y calculamos principalmente precision, recall y F1 para esa clase.

  • Micro implica agregar las contribuciones de todas las clases y luego promediarlas para calcular la métrica promedio. En la práctica, suma el total de verdaderos positivos, falsos negativos y falsos positivos de todas las clases y, a continuación, calcula la precisión, la recuperación y el F1 basándose en estas sumas. El micropromedio aporta valor al permitir ver el rendimiento general independientemente del desequilibrio entre clases.

  • Macro: Calculamos la métrica para cada clase y luego hacemos un promedio sin ponderar. Esto no proporciona un trato igualitario a todas las clases y, por lo tanto, es razonable si todas las clases tienen la misma importancia, incluso si el conjunto de datos está desequilibrado.

  • La ponderación es similar a la macro, pero no otorga el mismo peso a cada clase. Pesa las puntuaciones según el número de instancias verdaderas por clase. Esto implica que las clases más grandes cuentan más en la puntuación final. El promedio ponderado es útil cuando buscamos una visión equilibrada sin ignorar la distribución de clases.

  • Muestras: Se utiliza en problemas con múltiples etiquetas, en los que una muestra puede pertenecer a más de una clase. Aquí, la métrica se calcula para cada instancia y luego se promedia entre todas las instancias.

Estas opciones de promediado nos permiten adaptar la puntuación F1 o Fβ al escenario del problema. Por ejemplo, si clasificamos enfermedades raras para las que las clases minoritarias son de suma importancia, lo adecuado sería utilizar macro o Fβ, donde β > 1. Pero si lo que buscamos es la precisión por clases en todas las clases, el promedio micro o ponderado ofrece una imagen más precisa.

Para necesidades más sofisticadas, scikit-learn también proporciona fbeta_score(), que generaliza F1. Una comprensión más profunda de estas herramientas e es forma parte del programa de científico de machine learning en Python.

Generalización de la puntuación F1 con la puntuación Fβ

La puntuación Fβ generaliza la puntuación F1 dependiendo de si lo que más te interesa es la precisión o la recuperación:

  •  𝛃 > 1 da más importancia al recuerdo.
  •  𝛃 < 1 pone más énfasis en la precisión.

Ejemplos

  • La puntuación F2 se aplica al diagnóstico médico, donde pasar por alto una enfermedad (falso negativo) es peor que una falsa alarma.
  • La puntuación F0.5 es preferible en el filtrado de spam, donde los falsos positivos (confundir correos electrónicos reales) son más costosos.

Caso de uso: Detección de la diabetes con F1 frente a Precisión

Supongamos un conjunto de datos médicos en el que solo el 5 % de los pacientes padecen diabetes. Un modelo que ha sido entrenado para la detección de diabetes puede tener una precisión del 95 %. Pero esta precisión del 95 % se puede conseguir fácilmente prediciendo siempre «sin diabetes» para todo el mundo, lo que hace que este modelo sea inútil.

En su lugar, utilicemos la puntuación F1 para medir el modelo.

from sklearn.metrics import f1_score, fbeta_score, confusion_matrix

# Suppose these are results from a diabetes detection model
y_true = [0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1]  # true outcomes
y_pred = [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1]  # model predictions

print("Accuracy:", round((sum([yt == yp for yt, yp in zip(y_true, y_pred)]) / len(y_true)),2))
print("F1 Score:", round(f1_score(y_true, y_pred),2))
print("F2 Score (recall-focused):", round(fbeta_score(y_true, y_pred, beta=2),2))
Accuracy: 0.88
F1 Score: 0.8
F2 Score (recall-focused): 0.71

¿Por qué elegir F1 o F2 aquí?

  • La precisión es engañosa debido al gran desequilibrio entre las clases.
  • La puntuación F1 garantiza que se tengan en cuenta tanto los falsos positivos (clasificar erróneamente a pacientes normales como diabéticos) como los falsos negativos (no diagnosticar la diabetes).

En este caso de uso, la recuperación es valiosa, ya que un diagnóstico erróneo puede cambiar la vida. Por lo tanto, la puntuación F2 es más adecuada, ya que otorga mayor importancia a la recuperación.

Esto demuestra cómo la familia de métricas F1 proporciona una medida más práctica y útil que la precisión en casos de uso clínico.

Puntos clave

La puntuación F1 nos recuerda que la evaluación de modelos es más que un juego de números. Se trata realmente de comprender las ventajas e inconvenientes que hay detrás de cada predicción. Esto es importante porque, en aplicaciones de la vida real, pasar por alto un caso crítico puede tener graves consecuencias.

A medida que continúes creando y perfeccionando modelos, desarrollar una intuición para métricas como F1 te ayudará a tomar decisiones más conscientes del contexto en lo que respecta al rendimiento. Para profundizar tus habilidades en la aplicación de estos conceptos a conjuntos de datos reales, echa un vistazo al programa de científico de machine learning con Python, donde aprenderás a evaluar, ajustar e implementar modelos de forma eficaz en una variedad de casos de uso.


Vidhi Chugh's photo
Author
Vidhi Chugh
LinkedIn

Transformadora de Datos y Estratega de IA | Conferenciante Internacional | Ética de la IA | Inventora | Mujer Logradora Global | Autora

Preguntas frecuentes

¿Cuál es la importancia de la puntuación F1 en machine learning?

La puntuación F1 es la media armónica de la precisión (cuántos positivos predichos eran correctos) y la recuperación (cuántos positivos reales se detectaron). Proporciona una métrica única que refleja ambos tipos de errores.

¿Por qué se prefiere la puntuación F1 a la precisión en conjuntos de datos desequilibrados?

La precisión puede ser engañosa cuando una clase domina los datos, ya que un modelo puede predecir bien la clase mayoritaria, pero fallar en la clase minoritaria. La puntuación F1 tiene en cuenta tanto los falsos positivos como los falsos negativos, lo que da lugar a una evaluación más justa en estos casos.

¿Cuál es la diferencia entre las puntuaciones F1 y Fβ?

La puntuación F1 pondera por igual la precisión y la recuperación, mientras que la puntuación Fβ permite ajustar ese equilibrio. Por ejemplo, F2 da más importancia a la capacidad de recuerdo (útil en el diagnóstico médico), y F0.5 favorece la precisión (útil en la detección de spam).

¿Cuál es un buen valor de puntuación F1?

Una puntuación F1 cercana a 1 indica una gran precisión y capacidad de recuperación. Lo que es «bueno» depende del ámbito. Por ejemplo, 0,8 puede ser excelente en el ámbito sanitario, pero bajo en la detección de spam.

¿Cómo puedo calcular la puntuación F1 en Python?

La puntuación F1 se puede calcular fácilmente utilizando la función f1_score() de scikit-learn. Admite configuraciones binarias, multiclase y multilabel con un parámetro medio para diferentes estrategias de agregación.

Temas

Aprende con DataCamp

Curso

Foundations of Probability in R

4 h
40.8K
In this course, you'll learn about the concepts of random variables, distributions, and conditioning.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Clasificación en machine learning: Introducción

Aprende sobre la clasificación en machine learning viendo qué es, cómo se utiliza y algunos ejemplos de algoritmos de clasificación.
Zoumana Keita 's photo

Zoumana Keita

14 min

blog

Evaluación de un LLM: Métricas, metodologías y buenas prácticas

Aprende a evaluar grandes modelos lingüísticos (LLM) utilizando métricas clave, metodologías y mejores prácticas para tomar decisiones informadas.
Stanislav Karzhev's photo

Stanislav Karzhev

9 min

Tutorial

Explicación de las funciones de pérdida en el machine learning

Explora el papel crucial de las funciones de pérdida en el machine learning con nuestra completa guía. Comprende la diferencia entre funciones de pérdida y de coste, profundiza en varios tipos como MSE y MAE, y aprende sus aplicaciones en tareas de ML.
Richmond Alake's photo

Richmond Alake

Tutorial

Tutorial de ecuación normal para regresión lineal

Aprende qué es la ecuación normal y cómo puedes utilizarla para construir modelos de machine learning.
Kurtis Pykes 's photo

Kurtis Pykes

Tutorial

Ajuste fino de GPT-3 mediante la API OpenAI y Python

Libere todo el potencial de GPT-3 mediante el ajuste fino. Aprenda a utilizar la API de OpenAI y Python para mejorar este modelo de red neuronal avanzado para su caso de uso específico.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Clasificación de bosques aleatorios con Scikit-Learn

Este artículo trata de cómo y cuándo utilizar la clasificación Random Forest con scikit-learn. Centrado en conceptos, flujo de trabajo y ejemplos. También veremos cómo utilizar la matriz de confusión y las importancias de las características.
Adam Shafi's photo

Adam Shafi

Ver másVer más