import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
Cargar el conjunto de datos de flores Iris
datos_iris = datasets.load_iris()
Crear el DataFrame con las características de las flores
df_flores = pd.DataFrame(data=datos_iris.data, columns=datos_iris.feature_names)
df_flores['especie'] = datos_iris.target # Cambiado 'target' por 'especie'
Separar los atributos medibles (características) y las etiquetas (especies)
atributos_flores = df_flores.iloc[:, :-1]
especies_flores = df_flores['especie']
Dividir los datos en conjuntos de entrenamiento y prueba (80% entrenamiento, 20% prueba)
atributos_entrenamiento, atributos_prueba, especies_entrenamiento, especies_prueba = train_test_split(
atributos_flores, especies_flores, test_size=0.2, random_state=42
)
Crear y entrenar el modelo de Árbol de Decisión
clasificador_arbol = DecisionTreeClassifier(random_state=42)
clasificador_arbol.fit(atributos_entrenamiento, especies_entrenamiento)
Hacer predicciones utilizando los datos de prueba
especies_predichas = clasificador_arbol.predict(atributos_prueba)
Evaluar el rendimiento del modelo
precision_modelo = accuracy_score(especies_prueba, especies_predichas)
print(f'Precisión del modelo: {precision_modelo:.2f}')
Aplicar validación cruzada para una evaluación más robusta
puntuaciones_validacion_cruzada = cross_val_score(clasificador_arbol, atributos_flores, especies_flores, cv=5)
print(f'Precisión media en la validación cruzada: {puntuaciones_validacion_cruzada.mean():.2f}')