Наконец собрался написать о некоторых алгоритмах кластерного анализа и их реализации на Python. В большинстве своём это будет краткое описание алгоритма и разбор готового решения, без глубокого объяснения "что это и как работает". Как следствие, если Вы ещё не знакомы с теорией по кластерному анализу, лучше начать с неё (ссылки на хорошие источники будут предоставлены) иначе сложно будет понять зачём делается тот или иной шаг.
Поскольку это первый пост из цикла, опишу тестовый набор данных, который будет использоваться в этом и всех последующих алгоритмах.
Для работы я возьму данные по энергетической ценности продуктов, безжалостно слитые где-то в интернете. В этом наборе каждый продукт описан тремя переменными - количеством белков, жиров и углеводов на сто грамм.
Разбиение данного набора на кластеры даст нам представление о схожих по обозначенным параметрам продуктах и наглядно продемонстрирует результаты работы алгоритмов.
Для тех, кто не знаком с кластерным анализом вообще, посоветую следующие источники (гуглятся легко):
- Воронцов К. В. Лекции по алгоритмам кластеризации и многомерного шкалирования.
- Kaufman L., Rousseeuw P. J. Finding Groups in Data: An Introduction to Cluster Analysis. — John Wiley & Sons, 1990.
- Jain A. K., Murty M. N., Flynn P. J. Data Clustering: A Review. (http://www.csee.umbc.edu/nicholas/clustering/p264-jain.pdf)
- Нейский И. М. Классификация и сравнение методов кластеризации
- Сегаран Т. Programming Collective Intelligence.
- Kogan J., Nicholas C., Teboulle M. Clustering Large and High Dimensional data. (http://www.csee.umbc.edu/~nicholas/clustering/ )
- J. C. Gower and G. J. S. Ross «Minimum Spanning Trees and Single Linkage Cluster Analysis»
- Мандель И. Д. Кластерный анализ.
- Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze, Introduction to Information Retrieval, Cambridge University Press. 2008. (http://nlp.stanford.edu/IR-book/)