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))
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?