1
resposta

Validação dos clusters criados

Fui utilizar os conceitos de validação aprendidos no curso Clustering: extraindo padrões de dados e calculei os coeficientes de silhouette, Davies-Bouldin e Calinski e comparando esses valores a um cojunto de dados aleatorio criados a partir da amostra normalizada mostrou que os índices para o conjunto aleatorio é melhor que os indices do conjunto real. Neste caso como podemos recalcular o cluster para que um conjunto aleatorio de dados não tenha distribuições de clusters melhores que o dado real?

Código:

função para calcular os índices que validam o cluster

def cluster_algorithm(n_clusters, dataset): kmeans_pca = KMeans(n_clusters = 5, n_init = 10, max_iter = 300, random_state = 1224) # verbose - acompanhamento da machine learning labels = kmeans_pca.fit_predict(dataset)

Coeficiente de Silhouette

s = silhouette_score(dataset, labels, metric = 'euclidean')

Índice de Davies-Bouldin

dbs = davies_bouldin_score(dataset, labels)

Índice de Calinski

calinski = calinski_harabasz_score(dataset,labels) return s, dbs, calinski

Criando conjunto aleatório de dados

random_data = np.random.rand(2973, 2)

Chamando a função de clusterização criada para calcular os indices com base nos dados aleatórios criados

s1, dbs1, calinski1 = cluster_algorithm(5, random_data)

Conjunto aleatório

print("Silhouette Aleatório: ", s1 , "Davies-Bouldin Aleatório: ", dbs1, 'Calinski Aleatório: ', calinski1)

Conjunto normalizado real

print("Silhouette Real: ", s , "Davies-Bouldin Real: ", dbs, 'Calinski Real: ', calinski)

O cojunto aleatório está melhor que o real

1 resposta

Olá, Lucas, tudo bem?

Neste caso, destaco que a qualidade dos resultados obtidos na clusterização está ligada à natureza dos dados utilizados. A situação que você observou, sugere que o algoritmo de clusterização está encontrando padrões nos dados aleatórios que não estão presentes nos dados reais.

Portanto, para melhorar os resultados, recomendo explorar diferentes números de clusters. Notei que você está utilizando o algoritmo K-Means com um número fixo de clusters (n_clusters = 5). Experimente variar os valores do parâmetro n_clusters, pois o número ideal de clusters pode variar de acordo com as características do conjunto de dados.

Além disso, sugiro que teste diferentes algoritmos de clusterização. Embora o K-Means seja um ponto de partida sólido, existem diversas alternativas que podem se adequar melhor ao seu conjunto de dados. Algumas opções incluem o DBSCAN, Agglomerative Clustering e Spectral Clustering.

Espero ter ajudado.

Caso surja alguma dúvida, compartilhe no fórum.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!