K-означает, действительно, лучше всего работает, когда все кластеры имеют одинаковое распределение ошибок вокруг их среднего, то есть, если они все следуют N (mu_j, eps).
Но есть как минимум 100 алгоритмов кластеризации. Просто выберите тот, который лучше соответствует вашим данным. Например, DBSCAN предполагает, что каждый кластер является плотным, а кластеры разделены промежутками низкой плотности. Он не может хорошо кластеризовать перекрывающихся гауссианов, но он будет хорошо работать с хорошо разделенными кластерами разных распределений.