# ==========================================
# Clasificación de flores con el dataset Iris
# Aprendizaje Supervisado
# ==========================================
# 1. Importar las librerías necesarias
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 2. Cargar el dataset Iris
iris = load_iris()
# Crear un DataFrame con las características
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# Agregar la columna con la especie
df["especie"] = iris.target
# Mostrar las primeras filas
print("Primeras filas del dataset:")
display(df.head())
# ==========================================
# 3. Preprocesamiento de datos
# ==========================================
# Variables independientes (X)
X = iris.data
# Variable dependiente (y)
y = iris.target
# Dividir datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.30,
random_state=42
)
# ==========================================
# 4. Entrenamiento del modelo
# ==========================================
modelo = DecisionTreeClassifier(random_state=42)
modelo.fit(X_train, y_train)
# ==========================================
# 5. Evaluación del modelo
# ==========================================
predicciones = modelo.predict(X_test)
precision = accuracy_score(y_test, predicciones)
print(f"\nPrecisión del modelo: {precision:.2f}")
# Validación cruzada
scores = cross_val_score(modelo, X, y, cv=5)
print("\nValidación cruzada:")
print(scores)
print(f"Precisión promedio: {scores.mean():.2f}")
# ==========================================
# 6. Probar nuevas muestras
# ==========================================
# Ejemplo 1
nueva_flor = [[5.1, 3.5, 1.4, 0.2]]
prediccion = modelo.predict(nueva_flor)
print("\nPredicción para la nueva flor:")
print(iris.target_names[prediccion][0])
# Ejemplo 2
nueva_flor2 = [[6.4, 3.2, 4.5, 1.5]]
prediccion2 = modelo.predict(nueva_flor2)
print("\nPredicción para la segunda flor:")
print(iris.target_names[prediccion2][0])
# Ejemplo 3
nueva_flor3 = [[7.2, 3.0, 5.8, 1.8]]
prediccion3 = modelo.predict(nueva_flor3)
print("\nPredicción para la tercera flor:")
print(iris.target_names[prediccion3][0])
Carga de datos: Se carga el dataset Iris desde sklearn.datasets y se convierte en un DataFrame de Pandas.
Preprocesamiento: Se separan las características (X) de la especie (y) y se dividen los datos en entrenamiento (70%) y prueba (30%).
Entrenamiento: Se utiliza un Árbol de Decisión (DecisionTreeClassifier) para aprender a clasificar las flores.
Evaluación: Se calcula la precisión del modelo y se realiza una validación cruzada de 5 particiones para comprobar su rendimiento.
Pruebas: Se ingresan tres ejemplos de flores y el modelo predice si corresponden a Setosa, Versicolor o Virginica.