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

  • Tomar el examen del curso
    • 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 3 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 9 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