This book was written for anyone who wants to implement data clustering

algorithms and for those who want to implement new data clustering algo-
rithms in a better way. Using object-oriented design and programming tech-
niques, I have exploited the commonalities of all data clustering algorithms

to create a flexible set of reusable classes that simplifies the implementation

of any data clustering algorithm. Readers can follow me through the develop-
ment of the base data clustering classes and several popular data clustering

This book focuses on how to implement data clustering algorithms in an
object-oriented way. Other topics of clustering such as data pre-processing,
data visualization, cluster visualization, and cluster interpretation are touched
but not in detail. In this book, I used a direct and simple way to implement
data clustering algorithms so that readers can understand the methodology
easily. I also present the material in this book in a straightforward way. When
I introduce a class, I present and explain the class method by method rather
than present and go through the whole implementation of the class.

Complete listings of classes, examples, unit test cases, and GNU config-
uration files are included in the appendices of this book as well as in the

CD-ROM of the book. I have tested the code under Unix-like platforms (e.g.,
Ubuntu and Cygwin) and Microsoft Windows XP. The only requirements to
compile the code are a modern C++ compiler and the Boost C++ libraries.