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 8

Preguntas 10

Ordenar por:

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

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 😎

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.
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