Since there is no Silhouette calculation for mixed data types in Python k-prototypes packages that I know of (e.g. this one), I wrote my own code to obtain the Silhouette values. I need to aggregate these values to get the Silhouette coefficient, and use it as criterion for K selection. What I have is in this format:

Sil_1 = [s_11,, s_12, ..., s_1n(1)]
Sil_2 = [s_21, s_22, ..., s_2n(2)]
Sil_K = [s_K1, s_K2, ..., s_Kn(K)]

where s_ij is the Silhouette value for observation j in cluster i, and n(i) is the size of cluster i. Is there any standard way of aggregating these values into one Silhouette coefficient? My understanding from this Wikipedia article is that to arrive at the final aggregated coefficient something similar to this should be done:

Sil_coef = max{mean(Sil_i), i in {1,..., K}}

If my understanding is correct, this implies that Silhouette coefficient only considers the cluster with the highest average Silhouette value, and disregards the clusters with low average Silhouette values. However, this kind of aggregating seems unsatisfactory since low Silhouette values are informative of bad clustering.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.