Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Aprendizaje no supervisado, Unidad 12 — Mini-proyecto no supervisado, 12.1 — Proyecto guiado ·

Exploración de un dataset real

Exploración de un dataset real

Introducción

El aprendizaje no supervisado es una rama del machine learning que nos permite encontrar patrones y estructuras en los datos sin la necesidad de etiquetas. En este mini-proyecto guiado, exploraremos un conjunto de datos real para descubrir características ocultas y entender mejor cómo funciona el clustering y la reducción de dimensionalidad.

Explicación principal

Exploración inicial del dataset

Para comenzar con nuestro proyecto, cargamos y exploramos brevemente el dataset. En este ejemplo, usaremos un conjunto de datos de ventas de una empresa ficticia que contiene información sobre productos, clientes y transacciones.

import pandas as pd

# Cargar el dataset
df = pd.read_csv('ventas_ficticias.csv')

# Mostrar las primeras filas del dataframe
print(df.head())

# Estadísticas básicas del dataset
print(df.describe())

Aplicación de clustering

Vamos a aplicar un algoritmo de clustering para agrupar los datos basándonos en la similaridad entre las transacciones. Utilizaremos el método k-means debido a su facilidad y amplia utilización.

from sklearn.cluster import KMeans

# Seleccionar características relevantes
X = df[['precio', 'descuento', 'cantidad']]

# Aplicar k-means
kmeans = KMeans(n_clusters=4, random_state=0).fit(X)
df['cluster'] = kmeans.labels_

# Visualizar los resultados
import matplotlib.pyplot as plt

plt.scatter(df['precio'], df['descuento'], c=df['cluster'], cmap='viridis')
plt.xlabel('Precio')
plt.ylabel('Descuento')
plt.title('Agrupación de transacciones por precio y descuento')
plt.show()

Reducción de dimensionalidad

Para visualizar mejor los clusters, aplicaremos la reducción de dimensionalidad utilizando PCA.

from sklearn.decomposition import PCA

# Aplicar PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# Visualizar en 2D
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=df['cluster'], cmap='viridis')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('Agrupación de transacciones reducida a 2 componentes')
plt.show()

Errores típicos / trampas

Sobreinterpretación de los clusters

Una trampa común es interpretar demasiado las estructuras encontradas, creando un sesgo en la toma de decisiones basándose en estos grupos sin una validación adicional.

Clusters "forzados"

A veces, se tiende a ajustar el número de clusters para obtener resultados deseados. Es importante elegir k cuidadosamente y validar su elección.

Falta de validación

No validar los modelos o no utilizar métricas adecuadas puede llevar a conclusiones engañosas sobre la calidad del clustering. Es crucial usar metrícass como el Silhouette Score para evaluar los clusters.

Checklist accionable

  1. Explorar las características: Identificar y seleccionar las características relevantes para el análisis.
  2. Preprocesamiento de datos: Escalar o normalizar las variables numéricas si es necesario.
  3. Aplicar clustering: Utilizar algoritmos como k-means, DBSCAN u otros según la naturaleza del problema.
  4. Reducción de dimensionalidad: Aplicar técnicas como PCA para visualizar mejor los datos.
  5. Evaluación y validación: Usar métricas internas y externas para evaluar el modelo.
  6. Interpretación responsable: Evitar sobreinterpretar las estructuras encontradas, asegurándose de validar los resultados.

Cierre

Siguientes pasos

  • Avanzar a otros algoritmos de clustering como DBSCAN o hierarchical clustering para contrastar resultados.
  • Probar diferentes técnicas de reducción de dimensionalidad y observar cómo afectan la interpretación de los datos.
  • Integrar aprendizaje no supervisado en proyectos reales: Aplicar estos conceptos en análisis exploratorios más complejos o en preprocesamiento para modelos supervisados.

¡Esperamos que este mini-proyecto te haya dado una visión práctica del aprendizaje no supervisado y cómo aplicarlo efectivamente!

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).