Iris más allá del análisis descriptivo: un mapa de ruta en Python

El dataset Iris es, probablemente, el conjunto de datos más usado para introducir análisis estadístico y machine learning: 150 flores de tres especies (setosa, versicolor y virginica), medidas en cuatro variables (largo y ancho de sépalo y pétalo). La mayoría de los tutoriales se quedan en histogramas y estadísticas descriptivas. En esta publicación vamos un paso más allá: se presenta nueve direcciones para seguir analizando los datos una vez superado el análisis descriptivo básico. Cubre desde comparación de modelos de clasificación, hasta reducción de dimensionalidad, clustering no supervisado, explicabilidad de modelos (SHAP/LIME), detección de outliers, ingeniería de características, bootstrapping, pipelines de scikit-learn y una mini app o API interactiva para predecir la especie de una flor.

Carolina Ramírez Patiño

7/21/20263 min read

Todo el código está en Python usando pandas, seaborn y scikit-learn.

1. Carga de datos

El dataset tiene 150 filas, 4 variables numéricas y ningún valor nulo, así que no requiere limpieza previa.

2. Análisis descriptivo

Un vistazo rápido a las estadísticas generales:

Lo interesante aparece al desagregar por especie: el largo y ancho del pétalo varían mucho más entre especies que las medidas del sépalo, lo que sugiere que serán las variables más útiles para clasificar.

setosa tiene pétalos notablemente más pequeños (media de 1.46 cm de largo) que versicolor (4.26 cm) y virginica (5.55 cm), con muy poca superposición.

Correlación entre variables

El largo y ancho del pétalo están fuertemente correlacionados entre sí (r = 0.96) y con el largo del sépalo (r ≥ 0.82). El ancho del sépalo, en cambio, correlaciona débil y negativamente con el resto.

Distribución por especie

En el pairplot se ve con claridad que setosa se separa por completo del resto usando cualquier combinación con variables de pétalo, mientras que versicolor y virginica tienen cierta superposición. Esto ya nos da una pista de qué tan difícil será el problema de clasificación: fácil para una especie, algo más retador para las otras dos.Escribe tu texto aquí...

3. De la descripción a la predicción: comparando clasificadores

Con esta base exploratoria, la pregunta natural es: ¿qué tan bien puede un modelo predecir la especie solo con estas cuatro medidas? Y más interesante aún: ¿todos los algoritmos se comportan igual de bien en un problema "fácil" como este?

Preparación de los datos

Se separa el 25% de los datos para prueba (test_size=0.25), estratificando por especie para mantener la proporción de clases, y se estandarizan las variables (media 0, desviación 1), lo cual es importante para modelos sensibles a la escala como SVM y KNN.

Seis modelos, un mismo criterio

La validación cruzada de 5 particiones evita depender de un único split de entrenamiento/prueba para juzgar cada modelo.

Resultados

Algunas lecturas de esta tabla: todos los modelos superan el 89% de accuracy, lo que confirma que Iris es un problema relativamente sencillo de separar linealmente, sobre todo gracias a las variables de pétalo. Naive Bayes obtiene el mejor promedio en validación cruzada (0.97), pero SVM con kernel RBF es el que mejor generaliza al set de prueba (0.9474), y el árbol de decisión individual queda último, un resultado esperado dado que tiende a sobreajustar más que sus alternativas de ensamble como Random Forest.

Mirando de cerca al mejor modelo

Tal como anticipaba el pairplot, setosa se clasifica perfectamente (100% de precisión y recall) porque sus pétalos no se solapan con las otras especies. Los pocos errores del modelo ocurren exclusivamente entre versicolor y virginica, que sí comparten una zona de ambigüedad en sus medidas de pétalo.

Cierre

Pasar del análisis descriptivo a comparar modelos de clasificación no solo confirma lo que ya intuíamos visualmente (que setosa es fácil de distinguir y las otras dos especies se confunden ocasionalmente), sino que además cuantifica esa dificultad con métricas concretas y permite elegir con criterio qué algoritmo usar.