I have 261 vectors with 9 attributes. Each attributes contains numbers between 0 and 1. I am not sure what the most appropriate clustering method for this kind of data is. Initially, I used the K-means algorithm but was reading about the drawbacks of K-means and found that K-means can fail when uniform data is used. This is explained in the following link. How to understand the drawbacks of K-means So, my questions are: what would be the best way to do a cluster analysis on this kind of data or how can I deal with it?. Also, where could I implement it (R, Python…)?

  • 2
    $\begingroup$ What do you mean uniform data? If data are uniform there is no (nonrandom) clusters in it. Or are you saying distribution inside clusters is uniform? What is the shape of the clusters then? $\endgroup$
    – ttnphns
    Jul 1, 2015 at 8:14
  • 1
    $\begingroup$ Maybe Alex is confusing bounded data with uniform data? Attributes being bounded between 0 and 1 will not cause k-means to fail. $\endgroup$
    – Chris
    Jul 1, 2015 at 18:13
  • $\begingroup$ Yes, sorry. I wanted to say bounded. I was just thinking in two attributes (and not in all nine) and a question arises, what if my observations are highly concentrated in a certain range of values, how I can be sure or what can do to get the best possible clusters. $\endgroup$ Jul 2, 2015 at 0:29

1 Answer 1


There is no best way for cluster analysis. You may try different approaches and see which one gives you meaningful clusters. I would start with visualizing the data: 261 points in 9 dimensions is not ideal for clustering. You should hope that your data has a lower intrinsic dimension. Use methods such as (kernel)-pca to map your data into 2 or 3-dimentions. If you see a cluster structure there, it is a good sign that your data have "cluster structure". Then you can continue on the data mapped to lower dimensional space.

You can also investigate combination of features. If non of the above methods works, then you chances decrease. You can try different clustering algorithms such as k-means, DBSCAN, METIS, kernel k-means and spectral clustering. But it is not easy to judge if the results of these methods are "meaningful".

For implementation, you can use either R, Python or matlab. All of these methods are already implemented in these languages, and you can simply google for it.


Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.