El análisis exploratorio de datos (EDA) es un paso clave antes de aplicar un algoritmo como un árbol de decisión, ya que te permite:
- Entender la estructura y calidad del dataset.
- Detectar valores faltantes o atípicos.
- Visualizar relaciones entre variables.
- Evaluar qué variables podrían ser importantes para la predicción.
✅ Pasos del Análisis Exploratorio de Datos (EDA) para Árbol de Decisión
1. Cargar los datos y revisar estructura
import pandas as pd
df = pd.read_csv('autos.csv') # ejemplo
print(df.head())
print(df.info())
print(df.describe())
2. Identificar la variable objetivo (target)
Verifica si es una variable categórica (clasificación) o numérica (regresión).
print(df['tipo_auto'].value_counts())
Ejemplo de categorías: ['fósil', 'eléctrico', 'híbrido']
3. Visualizar la distribución de la variable target
import seaborn as sns
import matplotlib.pyplot as plt
sns.countplot(x='tipo_auto', data=df)
plt.title('Distribución del tipo de automóvil')
plt.show()
4. Revisar valores nulos
print(df.isnull().sum())
Soluciones:
- Imputar valores nulos (media, moda, etc.)
- Eliminar columnas o filas con muchos nulos
5. Revisar correlaciones entre variables numéricas
Aunque los árboles no necesitan variables escaladas ni normalizadas, es útil conocer la relación entre variables.
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
6. Codificar variables categóricas
Los árboles pueden trabajar con etiquetas numéricas, así que debes convertir las categorías:
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['tipo_auto'] = le.fit_transform(df['tipo_auto'])
Aplica lo mismo a otras columnas categóricas si es necesario.
7. Detectar outliers
Puedes usar diagramas de caja (boxplots):
sns.boxplot(x=df['potencia'])
plt.title('Potencia - detección de outliers')
plt.show()
8. Análisis bivariado
Estudia cómo se relacionan las variables predictoras con la variable objetivo:
sns.boxplot(x='tipo_auto', y='consumo', data=df)
9. Feature importance (opcional luego del modelo)
Los árboles te permiten saber qué variables son más importantes después del entrenamiento:
from sklearn.tree import DecisionTreeClassifier
X = df.drop('tipo_auto', axis=1)
y = df['tipo_auto']
modelo = DecisionTreeClassifier()
modelo.fit(X, y)
importances = modelo.feature_importances_
for col, imp in zip(X.columns, importances):
print(f"{col}: {imp:.3f}")