Clasificación de flores con Scikit-Learn

Resumen

Scikit-Learn es la librería de Python que convierte cualquier receta de machine learning en código reproducible. Si trabajas con datos y quieres entrenar modelos de clasificación de forma consistente, esta herramienta te permite probar varios algoritmos con la misma lógica y comparar su rendimiento en minutos.

A lo largo de esta guía vas a ver cómo se carga el famoso Iris Dataset, cómo se divide la información en entrenamiento y prueba, cómo se normaliza y, finalmente, cómo se comparan cuatro modelos distintos para elegir el ganador.

Qué es Scikit-Learn y por qué se usa tanto

Piensa en una caja de herramientas donde cada pieza está bien diseñada y todas funcionan con la misma lógica. Eso es Scikit-Learn: una librería consistente, elegante y poderosa, nacida en 2007 durante un Google Summer of Code y mantenida hoy por una comunidad internacional respaldada por instituciones como Inria y Google [00:32].

¿Qué hace especial a Scikit-Learn? Su API se basa en tres métodos universales: .fit para entrenar, .predict para predecir y .score para evaluar. Una vez que dominas un modelo, sabes usar prácticamente todos.

Entre sus ventajas destacan:

  • API clara y consistente entre todos sus modelos.
  • Parámetros inteligentes por defecto que funcionan bien sin ajustes complejos.
  • Documentación extensa y datasets integrados ideales para aprender.

Cómo se prepara el Iris Dataset para clasificar flores

El Iris Dataset contiene medidas de pétalos y sépalos de tres especies de flores, y el objetivo es predecir a qué especie pertenece cada registro [01:18]. Es uno de los conjuntos de datos más famosos en machine learning porque permite ver con claridad cómo se separan los grupos.

Después de cargar las librerías, asignas la información a variables como X (atributos) y Y (objetivo), y graficas los datos para detectar visualmente cómo se forman los clusters entre especies.

Por qué dividir en train y test con estratificación

La división se hace con train_test_split, usando en este caso un 25% para prueba [02:30]. Lo interesante aparece con el parámetro de estratificación sobre la variable Y: garantiza que la muestra aleatoria conserve la misma distribución de la variable objetivo, es decir, que entrenamiento y prueba contengan proporciones equivalentes de cada especie.

La semilla aleatoria, fijada en cero, asegura que el experimento sea reproducible.

Cuándo conviene escalar los datos antes de entrenar

Algunos algoritmos necesitan que los datos estén normalizados para funcionar bien. Con el StandardScaler ajustas la información de X_train y aplicas la misma transformación a X_test [03:20]. Para los modelos que no requieren normalización, puedes usar las variables originales sin escalar.

¿Qué es el StandardScaler? Es una técnica que ajusta los datos para que tengan media cero y desviación estándar uno. Se usa en modelos sensibles a la escala como regresión logística o support vector machines.

Cómo comparar varios modelos de clasificación con Scikit-Learn

Para demostrar que el proceso es el mismo sin importar el algoritmo, se entrenan cuatro modelos distintos sobre el Iris Dataset [03:45]:

  1. Regresión logística, ideal para clasificaciones lineales.
  2. Árbol de decisión, que divide los datos según reglas jerárquicas.
  3. Random Forest, una combinación de varios árboles aleatorios.
  4. Support Vector Machine (SVM), que busca el mejor margen de separación.

Los modelos que requieren datos normalizados reciben los datasets escalados; los demás trabajan con la versión natural. Un ciclo for recorre cada modelo, lo entrena y guarda su calificación en una variable común para facilitar la comparación.

Qué resultados obtuvo cada modelo

Las métricas obtenidas fueron las siguientes [05:10]:

  • Regresión logística: 86% de precisión y F1 de 86%.
  • Árbol de decisión: 97% de precisión y F1 de 97%.
  • Random Forest: 94% de precisión.
  • Support Vector Machine: 97% de precisión.

Aunque el SVM y el árbol de decisión empataron en porcentaje, al pedir el máximo con más decimales, el árbol de decisión resultó el mejor modelo para este conjunto de datos.

Cómo interpretar la matriz de confusión y el área bajo la curva

El modelo ganador no solo entrega un porcentaje. También genera una matriz de clasificación que muestra cuántos casos clasificó bien y cuántos confundió entre especies. El área bajo la curva (AUC) del árbol de decisión llegó al 97%, lo que indica que prácticamente todos los casos quedaron bien clasificados.

¿Qué significa el F1 score? Es una métrica que combina precisión y recall en un solo valor. Cuando ambos importan por igual, un F1 alto indica que el modelo equilibra bien aciertos y errores.

Cómo predecir nuevos datos con el modelo entrenado

La última parte del ejercicio toma datos nuevos, los pasa por el mismo escalador y los evalúa con el árbol de decisión seleccionado [07:20]. La predicción devolvió correctamente las tres especies esperadas: setosa, versicolor y virginica. Eso confirma que el modelo está clasificando bien y que el flujo completo (cargar, dividir, escalar, entrenar, predecir) es replicable con cualquier dataset.

Tu reto es entrenar un modelo de clasificación con Scikit-Learn usando Iris u otro dataset que te interese. El notebook debe incluir carga y exploración de datos, al menos tres modelos distintos y una comparación de rendimiento. Cuéntame en los comentarios cuál fue el mejor modelo y por qué.