Yo hice esto para encontrar mas rapido los coluster con mas grupos y mas silhouette_score
# El codigo de profe un poco modificado
from itertools import product
params = product(np.linspace(1.2, 2.6, 14), np.arange(2, 12))
params_mat = pd.DataFrame({
'epsilon': [],
'min_samples': [],
'silhouette_score': [],
'no_clusters': []
})
for epsilon, samples in params:
y_pred = DBSCAN(eps=epsilon, min_samples=samples).fit_predict(X)
params_mat.loc[len(params_mat)] = [epsilon, samples, silhouette_score(X, y_pred), len(np.unique(y_pred))]
# Encontar los mejores parametros
(
params_mat
[(params_mat.no_clusters == 3) | (params_mat.no_clusters == 4)]
.sort_values(by='silhouette_score', ascending=False)
.head(10)
)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?