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…)?
1 Answer
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.
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$