Cross Validated is a question and answer site for people interested in statistics, machine learning, data analysis, data mining, and data visualization. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What are the best (recommended) pre-processing steps before performing k-means?

share|improve this question
you might find this useful: – Dov Jan 17 '12 at 10:15
Thanks, I'll have a look. – pedrosaurio Jan 17 '12 at 10:19
up vote 29 down vote accepted

If your variables are of incomparable units (e.g. height in cm and weight in kg) then you should standardize variables, of course. Even if variables are of the same units but show quite different variances it is still a good idea to standardize before K-means. You see, K-means clustering is "isotropic" in all directions of space and therefore tends to produce more or less round (rather than elongated) clusters. In this situation leaving variances unequal is equivalent to putting more weight on variables with smaller variance, so clusters will tend to be separated along variables with greater variance.

A different thing also worth to remind is that K-means clustering results are sensitive to the order of objects in the data set. A justified practice would be to run the analysis several times, randomizing objects order; then average the cluster centres of those runs and input the centres as initial ones for one final run of the analysis.

share|improve this answer
The randomizing, re-running, averaging and final run is a very good advice. Thanks – pedrosaurio Jan 30 '12 at 16:08

Depends on your data I guess. If you would like trends in your data to cluster together regardless of the magnitude, you should center. eg. say you have some gene expression profile, and want to see trends in gene expression, then without mean centering, your low expression genes will cluster together and away from high expression genes, regardless of trends. Centering makes genes (both high and low expressed) with like expression patterns cluster together.

share|improve this answer
I am actually comparing different features that have their own scale. For instance I am comparing GC content which has a range from about 0.3 to 0.5 which may seem to be small but the difference is quite important; some other features have broader ranges, some others range in very small scales. – pedrosaurio Jan 17 '12 at 10:21
So, you are clustering different factors? Could maybe use some weight or transformation of values. – Nightwriter Jan 17 '12 at 10:45
No, I am comparing all continuous variables – pedrosaurio Jan 30 '12 at 16:04

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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