No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Encontrar híper-parámetros

17/27
Recursos

Aportes 7

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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))
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)]

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

A mi me salió este error: --------------------------------------------------------------------------- IndexError Traceback (most recent call last) Cell In\[21], [line 2](vscode-notebook-cell:?execution_count=21\&line=2) [1](vscode-notebook-cell:?execution_count=21\&line=1) distances = np.sort(distances,axis=0) \----> [2](vscode-notebook-cell:?execution_count=21\&line=2) distances = distances\[:,1] [3](vscode-notebook-cell:?execution_count=21\&line=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)

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

Iterando para conocer los mejores hiperparámetros:

Obteniendo un mejor resultado conociendo que hiperparámetros probar:

¡Excelente sesión!

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.

k\_neighboars = número de dimensiones \* 2