APLICACIÓN PRÁCTICA: ÁRBOLES DE DECISIÓN (APRENDIZAJE SUPERVISADO) EN LA CLASIFICACIÓN DE PLANTAS NATIVAS DE LOS ANDES DE BOLIVIA

 

 


Introducción:

Los árboles de decisión son una herramienta poderosa y popular en el aprendizaje supervisado, una rama del Machine Learning. Esta técnica es ampliamente utilizada para tareas de clasificación y regresión, proporcionando modelos intuitivos y fáciles de interpretar. En este artículo, nos enfocaremos en la aplicación de los árboles de decisión para clasificar plantas nativas de los Andes de Bolivia.

1. Fundamentos de los Árboles de Decisión:

 Los árboles de decisión funcionan dividiendo el espacio de datos en regiones más pequeñas. Cada nodo del árbol representa una pregunta o una prueba en una característica específica, bifurcando según la respuesta, hasta llegar a las hojas del árbol, donde se toma la decisión final.

2. Creación de un Árbol de Decisión:

Para ilustrar, vamos a generar un ejemplo práctico con un conjunto de datos ficticio sobre plantas nativas de los Andes de Bolivia.

 

2.1 Generación de Datos Ficticios:

 

Crearemos un dataset que incluye características como Altura, Tipo de Hoja, Época de Floración, entre otras. Este dataset estará disponible en un archivo CSV para su descarga.

 

2.2 Generación de Código Python:

Utilizaremos Python y bibliotecas como Pandas, Scikit-Learn y Matplotlib para desarrollar el árbol de decisión. El código incluirá pasos para cargar los datos, entrenar el modelo y ajustar los parámetros.

 

2.3 Visualización del Árbol:

 

Se proveerá el código para visualizar gráficamente la estructura del árbol, lo que facilita la comprensión de cómo el modelo toma decisiones basadas en las características de las plantas.

 

3. Análisis de la Importancia de las Características y la Poda del Árbol:

 

Este apartado se centrará en dos aspectos clave para

mejorar el rendimiento del árbol de decisión:

 

3.1 Importancia de las Características:

 

Analizaremos cuáles características son más influyentes en la clasificación. Esto se hace evaluando cómo cada característica reduce la impureza en los nodos del árbol. Esta información es crucial para entender qué aspectos de las plantas son más determinantes para su clasificación.

 

3.2 Poda del Árbol:

 

La poda es esencial para evitar el sobreajuste, un problema común en los árboles de decisión. Discutiremos técnicas como la poda basada en costos y la validación cruzada para optimizar la complejidad del árbol, buscando el equilibrio entre la precisión y la generalización del modelo.

 

Los árboles de decisión ofrecen un enfoque robusto y transparente para la clasificación de datos complejos. Al aplicarlos en el contexto de las plantas nativas de los Andes de Bolivia, podemos no solo predecir categorías específicas, sino también entender las características que más influyen en estas predicciones. Esto no solo beneficia la investigación botánica, sino que también proporciona una herramienta educativa valiosa para la enseñanza de conceptos de Machine Learning.

Para llevar a cabo el ejemplo práctico de la aplicación de un árbol de decisión en la clasificación de plantas nativas de los Andes de Bolivia, seguiremos estos pasos:

 

Generación de Datos Ficticios:

   Crearemos un conjunto de datos que contenga características típicas de plantas, como Altura, Tipo de Hoja, Época de Floración, entre otras, y una columna de clasificación con tipos de plantas.

 

Generación de Código Python:

   Desarrollaremos un script en Python que utilice estos datos para entrenar un árbol de decisión. Usaremos bibliotecas como Pandas para la manipulación de datos, Scikit-learn para el modelo de árbol de decisión, y Matplotlib para la visualización.

 

 Visualización del Árbol de Decisión:

   Mostraremos cómo visualizar el árbol de decisión generado para entender cómo se realizan las clasificaciones.

 

Paso 1: Generación de Datos Ficticios

 

Primero, generemos un conjunto de datos ficticio. Vamos a simular un archivo CSV con datos de ejemplo.

 

Aquí tenemos un ejemplo de las primeras filas del conjunto de datos ficticio generado. Cada fila representa una planta, con características como su altura, tipo de hoja, época de floración y el tipo de planta (Herbácea, Arbusto, Árbol). Ahora, guardaremos estos datos en un archivo CSV.

 

Paso 2: Guardar los Datos en un Archivo CSV

Voy a guardar estos datos en un archivo CSV que se podrá descargar.

 


 

El conjunto de datos ha sido guardado como un archivo CSV y puede ser descargado desde el siguiente enlace: [Descargar Dataset Plantas Andinas](sandbox:/mnt/data/dataset_plantas_andinas.csv).

 

Paso 3: Generación del Código Python para el Árbol de Decisión

 

Ahora, procederé a escribir el código en Python para cargar estos datos, entrenar un árbol de decisión y visualizarlo. Explicaré cada paso a medida que avancemos.

 

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.tree import DecisionTreeClassifier, plot_tree

import matplotlib.pyplot as plt

 

# Cargar datos

df = pd.read_csv('dataset_plantas_andinas.csv')

 

# Preprocesamiento de datos

df['Tipo_Hoja'] = df['Tipo_Hoja'].astype('category').cat.codes

df['Epoca_Floracion'] = df['Epoca_Floracion'].astype('category').cat.codes

df['Tipo_Planta'] = df['Tipo_Planta'].astype('category').cat.codes

 

# Separar las características y la etiqueta

X = df.drop('Tipo_Planta', axis=1)

y = df['Tipo_Planta']

 

# Dividir el dataset en conjunto de entrenamiento y prueba

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

 

# Crear y entrenar el modelo de árbol de decisión

modelo_arbol = DecisionTreeClassifier(random_state=42)

modelo_arbol.fit(X_train, y_train)

 

# Visualización del árbol de decisión

plt.figure(figsize=(20,10))

plot_tree(modelo_arbol, filled=True, feature_names=X.columns, class_names=['Herbácea', 'Arbusto', 'Árbol'])

plt.show()

Nota:** Para ejecutar este código, asegúrate de tener instaladas las bibliotecas `pandas`, `scikit-learn` y `matplotlib`. Puedes instalarlas usando `pip install pandas scikit-learn matplotlib`.

 

Crear y entrenar el modelo de árbol de decisión

modelo_arbol = DecisionTreeClassifier(random_state=42)

modelo_arbol.fit(X_train, y_train)

 

Visualización del árbol de decisión

plt.figure(figsize=(20,10))

plot_tree(modelo_arbol, filled=True, feature_names=X.columns, class_names=['Herbácea', 'Arbusto', 'Árbol'])

plt.show()

 

Este código realiza las siguientes operaciones:

 

1. **Carga los Datos:** El archivo CSV es cargado en un DataFrame de Pandas.

 

2. **Preprocesamiento de Datos:** Las columnas categóricas (`Tipo_Hoja` y `Epoca_Floracion`) son convertidas a códigos numéricos para facilitar el análisis.

 

3. **Separación de Características y Etiqueta:** Separamos las características (features) de la etiqueta que queremos predecir (`Tipo_Planta`).

 

4. **División en Conjuntos de Entrenamiento y Prueba:** Los datos se dividen en un conjunto de entrenamiento y otro de prueba.

 

5. **Creación y Entrenamiento del Modelo:** Se crea un árbol de decisión y se entrena con el conjunto de entrenamiento.

 

6. **Visualización del Árbol:** Finalmente, visualizamos el árbol de decisión entrenado.

 

Cuando se ejecute este código, se generará una gráfica que muestra cómo el árbol de decisión toma decisiones basadas en las características de las plantas.

 

Grafica del árbol de Decisiones

 


·         Nodo Raíz (Nodo Superior): El árbol comienza evaluando la característica que mejor divide las muestras. En este caso, parece ser una de las características numéricas (probablemente Altura), aunque no puedo especificar cuál debido a las limitaciones de visualización.

·         Ramas y Nodos Intermedios: Cada ramificación del nodo representa una decisión basada en la característica correspondiente. Por ejemplo, un nodo puede dividir las plantas según si su altura es mayor o menor a un cierto valor. Los nodos intermedios siguen dividiendo las muestras basándose en las características.

·         Hojas (Nodos Finales): Los nodos finales (hojas) del árbol representan las decisiones de clasificación. Cada hoja indica la clase asignada basada en las condiciones de los nodos superiores. La clase asignada en cada hoja es la que tiene mayor número de muestras de esa categoría que llegaron a ese nodo.

·         Profundidad y Complejidad: La profundidad del árbol y el número de nodos muestran la complejidad del modelo. Un árbol muy profundo puede indicar un modelo más complejo, que podría estar sobreajustado a los datos de entrenamiento.

Conclusión

Los árbol de decisión ofrece un modelo paso a paso de cómo las características de las plantas, como la altura, tipo de hoja y época de floración, pueden ser utilizadas para clasificarlas en diferentes categorías.

Reflexión.

Cada camino desde la raíz hasta una hoja representa una serie de decisiones basadas en estas características, conduciendo a una clasificación final.

 

Comentarios

Entradas más populares de este blog

APLICACIÓN PRÁCTICA: REGRESIÓN LINEAL AL CULTIVO DE MAIZ

APLICACIÓN PRÁCTICA: REGRESIÓN LOGÍSTICA EN EL SECTOR AGRÍCOLA

EL ENFOQUE "NAIVE BAYES" EN EL CAMPO DE LA BOTÁNICA EN EL CHACO