Любой ответ на вопрос «сколько режимов» должен включать некоторую предварительную информацию о том, что вы считаете вероятным ответом, и любой результат должен иметь форму «p (количество режимов = k | data) = nnn». Учитывая такой результат, вы можете понять, как его использовать; Существует как минимум три варианта: выбрать вариант с наибольшей вероятностью, выбрать тот, который минимизирует некоторую функцию стоимости, или усреднить любые другие результаты по этим вероятностям.
С этим прологом я порекомендую модель плотности смеси с различным количеством компонентов. Например. смесь с 1 компонентом, смесь с 2 компонентами, 3, 4, 5 и т. д. Обратите внимание, что с k компонентами максимально возможное количество мод равно k, хотя, в зависимости от расположения и масштабов компонентов, может быть меньше режимов .
Вероятно, существует много библиотек, которые могут найти параметры для плотности смеси с фиксированным количеством компонентов. Я предполагаю, что вам нужно будет разбить материал, чтобы работать с апостериорной вероятностью числа компонентов. Не смотря на это, я не знаю формулы для апостериорной вероятности числа мод, хотя, вероятно, это просто выяснить.
Я написал немного кода Java для смешанных дистрибутивов; смотрите: http://riso.sourceforge.net и ищите исходный код. Без сомнения, есть много других.
Последующие вопросы лучше всего направлять на stats.stackexchange.com.