Clasificación de flores con Iris Dataset (Logistic Regression)

Dataset Iris: Consta de tres clases de flores y cuatro características (largo y ancho de sépalos y pétalos). Logistic Regression: Se utiliza para clasificar instancias en una de las tres categorías. Evaluación: Muestra precisión, recall, F1-score para medir el rendimiento del modelo.

Código de ejemplo

Ver en Colab ➜

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

# Cargar el dataset Iris
data = load_iris()
X = data.data  # Características: largo y ancho de sépalos y pétalos
y = data.target  # Etiquetas: tipo de flor (Setosa, Versicolor, Virginica)

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Entrenar un modelo de regresión logística
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# Hacer predicciones
y_pred = model.predict(X_test)

# Evaluar el modelo
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Reporte de clasificación:")
print(classification_report(y_test, y_pred, target_names=data.target_names))

Salida

Accuracy: 1.0
Reporte de clasificación:
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        10
  versicolor       1.00      1.00      1.00         9
   virginica       1.00      1.00      1.00        11

    accuracy                           1.00        30
   macro avg       1.00      1.00      1.00        30
weighted avg       1.00      1.00      1.00        30

Explicación

La salida refleja los resultados de la evaluación del modelo de clasificación en el conjunto de prueba para el problema de clasificación de flores del Iris Dataset. A continuación, se explica cada sección:


1. Accuracy: 1.0

  • Definición: Proporción de predicciones correctas respecto al total de predicciones realizadas.
  • Valor: 1.0 significa que el modelo clasificó correctamente todas las instancias del conjunto de prueba.
    • Este es el mejor resultado posible para la métrica de exactitud (accuracy).

2. Reporte de clasificación

Este reporte proporciona una evaluación detallada para cada clase. Las métricas principales son:

  • Precision: Proporción de predicciones correctas para una clase específica entre todas las predicciones realizadas para esa clase.

    • Ejemplo: Si el modelo predijo "setosa" 12 veces, pero solo 10 son correctas, la precisión sería ( \frac{10}{12} ).
    • Aquí, la precisión es 1.00 para todas las clases porque el modelo no cometió errores.
  • Recall (Sensibilidad): Proporción de instancias correctamente identificadas como pertenecientes a una clase específica.

    • Ejemplo: Si hay 10 instancias reales de "setosa" y el modelo identificó correctamente las 10, el recall es ( \frac{10}{10} ).
    • En este caso, el recall es 1.00 para todas las clases, indicando que el modelo identificó todas las instancias correctamente.
  • F1-Score: Promedio armónico de precisión y recall. Es útil cuando hay un balance entre falsos positivos y falsos negativos.

    • Dado que la precisión y el recall son ambos 1.00, el F1-Score también es 1.00.
  • Support: Número real de instancias en el conjunto de prueba para cada clase.

    • Ejemplo: Hay 10 instancias de "setosa", 9 de "versicolor" y 11 de "virginica".

3. Totales (Promedios)

  • Accuracy: Reiteración del valor global de exactitud.

  • Macro Avg (Promedio macro): Promedio simple de las métricas de todas las clases, sin considerar su tamaño.

    • En este caso, es 1.00 porque todas las clases tienen métricas perfectas.
  • Weighted Avg (Promedio ponderado): Promedio de las métricas ponderado por el número de instancias (support) en cada clase.

    • Aquí también es 1.00 porque no hay errores en ninguna clase.

Conclusión

Este resultado indica que el modelo clasificó todas las instancias del conjunto de prueba de manera perfecta, con precisión, recall y F1-Score de 1.00 para cada clase. Si bien esto parece ideal, en un caso real podría ser indicativo de:

  1. Un conjunto de datos demasiado simple o perfectamente separable.
  2. Posible sobreajuste (overfitting) si los datos de prueba no son suficientemente desafiantes o representativos de datos reales futuros.