CursosEmpresasBlogLiveConfPrecios

Encontrar híper-parámetros

Clase 17 de 27 • Curso de Clustering con Python y scikit-learn

Clase anteriorSiguiente clase

Contenido del curso

Fundamentos de clustering

  • 1
    ¿Qué es el clustering en machine learning?

    ¿Qué es el clustering en machine learning?

    04:01 min
  • 2
    Tu primer clustering con scikit-learn

    Tu primer clustering con scikit-learn

    16:57 min
  • 3
    ¿Cuándo usar clustering?

    ¿Cuándo usar clustering?

    05:00 min
  • 4
    ¿Cómo evaluar modelos de clustering?

    ¿Cómo evaluar modelos de clustering?

    12:00 min

K-means

  • 5
    ¿Qué es el algoritmo de K-means y cómo funciona?

    ¿Qué es el algoritmo de K-means y cómo funciona?

    07:30 min
  • 6
    ¿Cuándo usar K-means?

    ¿Cuándo usar K-means?

    03:24 min
  • 7
    Implementando K-means

    Implementando K-means

    14:08 min
  • 8
    Encontrando K

    Encontrando K

    13:06 min
  • 9
    Evaluando resultados de K-means

    Evaluando resultados de K-means

    04:21 min

Hierarchical clustering

  • 10
    ¿Qué es hierarchical clustering y cómo funciona?

    ¿Qué es hierarchical clustering y cómo funciona?

    04:56 min
  • 11
    ¿Cuándo usar hierarchical clustering?

    ¿Cuándo usar hierarchical clustering?

    02:07 min
  • 12
    Implementando hierarchical clustering

    Implementando hierarchical clustering

    09:40 min
  • 13
    Evaluando resultados de hierarchical clustering

    Evaluando resultados de hierarchical clustering

    06:44 min

DBSCAN

  • 14
    ¿Qué es DBSCAN y cómo funciona?

    ¿Qué es DBSCAN y cómo funciona?

    08:27 min
  • 15
    ¿Cuándo usar DBSCAN?

    ¿Cuándo usar DBSCAN?

    02:28 min
  • 16
    Implementando DBSCAN

    Implementando DBSCAN

    09:11 min
  • 17
    Encontrar híper-parámetros

    Encontrar híper-parámetros

    Viendo ahora
  • 18
    Evaluando resultados de DBSCAN

    Evaluando resultados de DBSCAN

    07:35 min

Proyecto: resolviendo un problema con clustering

  • 19
    Preparar datos para clusterizar

    Preparar datos para clusterizar

    13:30 min
  • 20
    Aplicando PCA para clustering

    Aplicando PCA para clustering

    12:08 min
  • 21
    Resolviendo con K-means

    Resolviendo con K-means

    09:24 min
  • 22
    Resolviendo con hierarchical clustering

    Resolviendo con hierarchical clustering

    07:12 min
  • 23
    Resolviendo con DBSCAN

    Resolviendo con DBSCAN

    17:25 min
  • 24
    Resolviendo con DBSCAN (sin PCA)

    Resolviendo con DBSCAN (sin PCA)

    05:24 min
  • 25
    Evaluación resultados de distintos modelos de clustering

    Evaluación resultados de distintos modelos de clustering

    10:47 min

Conclusiones

  • 26
    Proyecto final y cierre

    Proyecto final y cierre

    02:32 min
  • 27

    Comparte tu proyecto de segmentación con clustering y certifícate

    Camilo Corredor

    Camilo Corredor

    student•
    hace 3 años

    Estoy trabajando con una data diferente a la presentada y creo que esto podría servir. En algunos casos por la disposición de los datapoints, puede que el DBSCAN solo genere un cluster, lo que va generar un error en el loop donde se evalua multiples parámetros.

    Esta es la solución:

    <code> dbscan_paramns = list(product(eps_values,min_samples)) sil_scores = [] labels = 0 for p in dbscan_paramns: y_pred = DBSCAN(eps= p[0], min_samples=p[1]).fit_predict(X), y_pred = np.array(y_pred).ravel() if len(np.unique(y_pred)) < 2: print(f'Parameters: {p[0]} and {p[1]}') else: sil_scores.append(silhouette_score(X,y_pred))
    Juan R. Vergara M.

    Juan R. Vergara M.

    student•
    hace 2 años

    Hoy he aprendido que también existe una técnica de la rodilla 😎

      Julián Cárdenas

      Julián Cárdenas

      student•
      hace 2 años

      JAJAJAJ see

    Alejandra Castellanos

    Alejandra Castellanos

    student•
    hace 3 años

    Hola! Tengo una duda sobre los hiper-parámetros. Realicé todo el procedimiento con una base de datos que tenía, varié el epsilon y los min_samples según la escala del ejemplo (junto con el procedimiento de kneighbors y el mapa de calor para ver cuáles valores serían mejores), cuando corrí el resultado solo me salían dos clusters {0,-1}. luego decidí cambiar el epsilon manualmente, para que en lugar de empezar en 0.25, empezara en 0.001, y ahí ya empezó a aumentar el número de clusters. No me queda claro uno cómo puede saber desde qué valor puede empezar a variar el epsilon, no se si es según el tipo de datos que se tienen (en mi caso eran coordenadas geográficas) o si hay alguna guía adicional para definir los valores. Me queda esa duda.

    Muchas gracias!

    Ian Cristian Ariel Yané

    Ian Cristian Ariel Yané

    student•
    hace 2 años

    Alguien sabe si estos hiperparametros se pueden encontrar con gridsearch?

    Mario Chavez

    Mario Chavez

    student•
    hace 2 años
    from itertools import product params = pd.DataFrame({ 'epsilon': [], 'min_samples': [], 'silhouette_score': [] }) for eps, n in product(np.linspace(.2, .4, 10), np.arange(2,10)): y_pred = DBSCAN(eps=eps, min_samples=n).fit_predict(X) params.loc[len(params)] = [eps, n, silhouette_score(X, y_pred)]
    FELIX  DAVID CORDOVA GARCIA

    FELIX DAVID CORDOVA GARCIA

    student•
    hace 3 años

    ¿Porque se analizó con distances[:,1] y no con distances[:2]?

    Adicionalmente se supone que se eligen 3 vecimos pero la primera distancia de cada uno de estos resulta 0, entonces ¿El algortimo NearestNeighbors considera su propio valor como su propio vecino?

      Alarcon7a

      Alarcon7a

      student•
      hace 3 años

      se quiere para este caso el mas cercano

      Fernando Jesús Núñez Valdez

      Fernando Jesús Núñez Valdez

      student•
      hace 3 años

      Puedes realizar la visualización con los tres vecinos mas cercanos y te puedes dar cuenta que el mas cercano es el de la posición 0 y están tan cerca que llegan a traslaparse y dar casi una distancia de 0. La linea azul es la distancia del datapoint con su 1er vecino mas cercano, el naranja con el 2do y finalmente el verde con el 3ro.

      index.png

      from sklearn.neighbors import NearestNeighbors neighbors = NearestNeighbors(n_neighbors=3) neighbors_fit = neighbors.fit(X) distances, index = neighbors_fit.kneighbors() distances = np.sort(distances, axis=0) distances_most_nearest = distances[:,0] plt.plot(distances)
    Juan Riquelme

    Juan Riquelme

    student•
    hace 6 días

    Me surgió la duda de como determinaba el profe el rango indicado de eps\_values y min\_sample\_values. Entonces hablando con mi pana chat_gpt rehice el codigo para que sea un poco más a prueba de balas y siempre me traiga las mejores combinaciones independientemente de mi rango de eps y samples:

    eps_values = np.arange(0.20, 1.1, 0.05) min_samples_values = np.arange(2, 10) results = [] dbscan_params = product(eps_values, min_samples_values) for eps, min_samples in dbscan_params: y_pred = DBSCAN(eps=eps, min_samples=min_samples).fit_predict(X) # Número de clusters sin contar el ruido (-1) unique_clusters = set(y_pred) unique_clusters_no_noise = unique_clusters - {-1} # silhouette ∈ solo si hay al menos 2 clusters if len(unique_clusters_no_noise) >= 2: score = silhouette_score(X, y_pred) results.append({ "eps": eps, "min_samples": min_samples, "n_clusters": len(unique_clusters_no_noise), "silhouette_score": score }) sil_scores_df = pd.DataFrame(results) # Top resultados válidos best = sil_scores_df.sort_values("silhouette_score", ascending=False) # Obtener los mejores parámetros eps_best = best["eps"].head(1).values[0] min_samples_best = best["min_samples"].head(1).values[0] print(f"Mejor eps: {eps_best}, mejor min_samples: {min_samples_best}") best.head(5)
    Leandro Tenjo

    Leandro Tenjo

    student•
    hace 2 años

    ¿De qué sirvió el grafico de rodilla?

    Al final el se tomaron en cuenta solo los valores que vimos en el HeatMap

    Melisa Consuelo Cardenas Pijo

    Melisa Consuelo Cardenas Pijo

    student•
    hace 2 años

    no entendi porque min_samples va de 2 a 10, si tendría 200 000 registros, ¿igual el seria de 2 a 10 en min_samples ?

      Platzi

      Platzi

      student•
      hace 2 años

      El rango de min_samples de 2 a 10 es solo un ejemplo. En tu caso, con 200,000 registros, puedes ajustar el valor de min_samples según tus necesidades y el tamaño de tu muestra. No hay una regla fija, depende del contexto y los objetivos del análisis.

      Cristian perez

      Cristian perez

      student•
      hace un año

      los registros creo que no importan sino lo que importan son las dimensiones en este caso los features*2 es un buen numero para empezar

    Santiago Ahumada Lozano

    Santiago Ahumada Lozano

    student•
    hace 3 años

    Cuando buscamos los mejores hiper-parámetros me sale este error

    eps_values = np.arange(0.3, 0.6, 0.1) min_samples = np.arange(2, 10) dbscan_params = list(product(eps_values, min_samples)) sil_scores = [] for param in dbscan_params: model = DBSCAN(eps=param[0], min_samples=param[1]) y_pred = model.fit_predict(X) sil_scores.append(silhouette_score(X, y_pred, metric='euclidean')) ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive) ```` Investigué y ocurre cuando el numero de clusters es 1 ¿Alguna idea para arreglar el error? Yo intente agregar este código ``` if np.unique(model.labels_).size == 1: continue ``` Pero entonces hay combinaciones de parametros sin sil score asociado... qué hacer? ¿Poner un -1 para descartarlo?
      Fernando Jesús Núñez Valdez

      Fernando Jesús Núñez Valdez

      student•
      hace 3 años

      Puedes darle un valor NaN, pd.nan, np.nan o cualquier nulo y después un dorpnan() para eliminar esos values del sil_score ya en la pivot table.

    Santiago Ahumada Lozano

    Santiago Ahumada Lozano

    student•
    hace 3 años

    ¡Hola! Cuál sería la rodilla en esta gráfica?

    descarga (1).png
      Fernando Jesús Núñez Valdez

      Fernando Jesús Núñez Valdez

      student•
      hace 3 años

      Sería entre 0.4 a 0.65 la iteración. Ya que escogiendo 0.4 estas capturando aprox 175 datos de los 200 que tienes. Y si eres mas laxo y escoges 0.65 entonces capturas el de 190 datos aprox. Es decir, con un cambio grande de Eps solo estas capturando 15 datapoints mas, esos quizás ya serian ruido.

    david jurado

    david jurado

    student•
    hace 2 años

    Que es min_samples?

    Federico Arias

    Federico Arias

    student•
    hace 2 años

    Que pasa si mis mejores parametros me dan como mejor resultado un solo cluster?

    Anuar Steven Garcia

    Anuar Steven Garcia

    student•
    hace 3 años

    no entendi porque min_samples va de 2 a 10, si veo que en la grafica la rodilla en el eje x tiene valores de 0 a 500

      Alfonso Andres Zapata Guzman

      Alfonso Andres Zapata Guzman

      student•
      hace 3 años

      Del grafico de rodilla tomamos unicamente el valor para el epsilon. min_samples es el valor que le damos a criterio para la cantidad de muestras.

      min_muestras int, por defecto=5 El número de muestras (o peso total) en una vecindad para que un punto se considere un punto central. Esto incluye el punto en sí.
    EDWING ALFONSO ARENAS RUEDA

    EDWING ALFONSO ARENAS RUEDA

    student•
    hace 7 meses

    # metodo para sintonizar los hiperparametros que mejor se ajusten para dbscan# se usara el conjunto de datos X # Parameter grideps_values = np.arange(0.2, 0.8, 0.1)min_samples = np.arange(2, 10)sil_scores = np.zeros((len(min_samples), len(eps_values))) # Compute silhouette scoresfor i, m in enumerate(min_samples):    for j, e in enumerate(eps_values):        model = DBSCAN(eps=e, min_samples=m)        labels = model.fit_predict(X)        score = silhouette_score(X, labels)        sil_scores[i, j] = score # Display heatmapplt.figure(figsize=(8, 6))sns.heatmap(sil_scores, annot=True, fmt=".2f",             xticklabels=np.round(eps_values,2),             yticklabels=min_samples,             cmap="coolwarm")plt.xlabel("eps values")plt.ylabel("min_samples")plt.title("Silhouette Score Heatmap for DBSCAN Parameters")plt.show()

    Alberto Duque Villegas

    Alberto Duque Villegas

    student•
    hace un año

    Gracias a Chat GPT:

    La diferencia entre parámetros e hiperparámetros en el contexto del aprendizaje automático es la siguiente:

    - **Parámetros:** Son valores internos del modelo que se aprenden directamente a partir de los datos durante el proceso de entrenamiento. Por ejemplo, en una regresión lineal, los coeficientes de la ecuación son parámetros del modelo.

    - **Hiperparámetros:** Son configuraciones externas al modelo que se establecen antes del proceso de entrenamiento y no se aprenden directamente de los datos. Los hiperparámetros controlan el proceso de aprendizaje y la estructura del modelo. En el caso de DBSCAN, eps y min\_samples son hiperparámetros porque se deben definir antes de entrenar el modelo y afectan cómo se identifican los clusters en los datos.

    En resumen, los **parámetros** son ajustados por el modelo durante el entrenamiento, mientras que los **hiperparámetros** son configuraciones establecidas por el usuario para guiar el proceso de aprendizaje del modelo.

    Rubén Darío Albarracin Caro

    Rubén Darío Albarracin Caro

    student•
    hace 2 años

    A mi me salió este error: --------------------------------------------------------------------------- IndexError Traceback (most recent call last) Cell In[21], line 2 1 distances = np.sort(distances,axis=0) ----> 2 distances = distances[:,1] 3 plt.plot(distances)

    IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed lo resolví de esta manera para que apareciera el gráfico del minuto 3:35 distances = np.sort(distances)second_element = distances[1]plt.plot(distances)

    Gerardo Jesus Ignacio Villacorta

    Gerardo Jesus Ignacio Villacorta

    student•
    hace 3 años

    Probando hiperparámetros al azar, no tuve buenos resultados:

    imagen1.png

    Iterando para conocer los mejores hiperparámetros:

    imagen2.png

    Obteniendo un mejor resultado conociendo que hiperparámetros probar:

    imagen3.png

    ¡Excelente sesión!

      Leandro Tenjo

      Leandro Tenjo

      student•
      hace 2 años

      No parece muy buena idea aplicar clustering al set de datos que estas usando.

    Juan García Bauzá

    Juan García Bauzá

    student•
    hace 2 años

    Es importante aclarar que la técnica de la "rodilla" no es específica de DBSCAN, sino que se refiere a un método utilizado para determinar el valor óptimo de un parámetro en diversos algoritmos o análisis. En el contexto de DBSCAN, el parámetro que a menudo se ajusta es el "epsilon", que representa el radio máximo de vecindad para considerar que dos puntos pertenecen al mismo cluster.

    Melisa Consuelo Cardenas Pijo

    Melisa Consuelo Cardenas Pijo

    student•
    hace 2 años

    k_neighboars = número de dimensiones * 2

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads