I am applying various clustering algorithms on a given data set:
CH: Calinski-Harabasz
DB: Davies-Bouldin
For each algorithm, I first want to obtain the best combination of parameters:
| Algorithm | silhouette | CH | DB |
| ------------------- | ----------- | ---------- | ------ |
| KMeans clusters=2 | 0.90895 | 644.666834 | 0.2624 |
| KMeans clusters=3 | 0.870049 | 670.666834 | 0.3884 |
| KMeans clusters=4 | 0.866955 | 634.666834 | 0.3892 |
| KMeans clusters=5 | 0.854041 | 567.503623 | 0.3928 |
Which of the above metrics do you recommend I use to validate each algorithm separately? (KMeans, Meanshift, DBSCAN, Agglomerative) If there are better metrics for any of them, let me know. And that it is included in a Python package (scikit-learn preference).
And finally make a table with the best solution for each algorithm:
| Algorithm | silhouette | CH | DB |
| ----------------------- | ---------- | ---------- | ------ |
| KMeans | 0.87895 | 644.666834 | 0.2624 |
| MeanShift | 0.860049 | 6211.48005 | 0.3884 |
| DBSCAN | 0.916955 | 115.955760 | 1.0983 |
| Agglo. Clustering | 0.914041 | 567.503623 | 0.1429 |
And given the comparison table, which is the best algorithm of the 4? Or can they not be compared because they are partitioning, density, hierarchical?