Key Points The completion of the sequencing of a large number of prokaryotic and eukaryotic genomes presents several challenges and opportunities, including the functional classification of predicted genes. Microarray analysis promises to contribute to the functional annotation of genomes and has already provided a wealth of genome-wide expression data. Much attention has been focused on experimental protocols for microarray studies, but the strategies for data analysis have a profound (and perhaps underappreciated) effect on the interpretation of the results. Expression data from each experiment must first be normalized to account for systematic experimental variation, including unequal dye incorporation and detection efficiencies. For comparison between experiments, data is often first filtered to select a subset or to exclude genes for which there is much missing data. A distance metric must then be chosen, which determines how we measure similarity between gene-expression patterns. Genes and experiments can then be grouped using various computational methods. Each step can influence how the expression data are grouped. Clustering algorithms, which are the most widely used approaches to analysing gene expression, can be classified as hierarchical or non-hierarchical (self-organizing maps (SOMs), k -means clustering and principal component analysis), agglomerative (hierarchical) or divisive ( k -means, SOMs), and supervised (support vector machine) or non-supervised (hierarchical and k -means clustering, SOMs). A synthetic data set with well-defined relationships between genes is used to show the differences between some of these methods. The choice of data analysis strategy should be influenced by the purpose of the microarray experiment, and the user's knowledge of the biology of the system under investigation.