What are some methods for clustering individuals into distinct groups based on Features? I started with a dataset that contained many dimensions for individuals (each id is a separate individual), and extracted three Features/Attributes columns for each individual Id.

My goal is to bucket these individuals into two or three distinct groups, based on these features, to see if I can identify distinct separations between certain groups.

I was wondering if anyone has any recommendations, or algorithms (preferably in Python) that would cluster these individuals into distinct groups?  I do not have these Individuals classified, so it's an unsupervised clustering problem.  I was thinking that K-Means might be a good option, or something similar to PCA which could reduce my dimensionality and provide insight into the Features that seem to separate the groups of individuals into distinct groups.

Thanks for looking!

Note: The data shown below was artificially generated to illustrate my question.



Appendix: Reference Data:

Pattern,Feature A,Feature B,Feature C

6,2.18,0.13,8.00
9,9.31,3.67,6.58
11,0.89,1.83,4.33
13,9.73,9.50,1.59
23,0.51,6.49,0.09
26,9.04,3.42,3.90
27,8.35,9.18,3.40
28,3.04,5.63,6.88
32,9.78,6.52,8.50
43,4.11,3.36,1.83
49,9.57,1.52,7.09
51,1.13,9.98,9.42
53,6.22,1.37,7.07
62,8.79,3.03,7.52
63,6.27,7.29,0.98
71,4.64,0.06,6.55
73,1.34,9.32,5.15
83,4.53,3.85,2.04
84,9.48,9.71,3.23
86,3.80,3.00,0.76
88,1.73,0.64,9.96
Sounds like you are on the right track.  There are many ways to attack this problem.  If you want to visualize the clustering, it would help to reduce the data down to two components.  This could be done via PCA or manifold learning if you want to go non-linear (http://scikit-learn.org/stable/modules/manifold.html).

In terms of clustering, there are many different methods to do this.  Here are some comparisons of different methods: http://scikit-learn.org/stable/modules/clustering.html