Я так понимаю что вам нужен
алгоритм кластеризации, при условии что вам не известено количество класстеров.
Есть так же вариант реализовать автоопределение количества кластеров для k-means. Мы задаем три рандомных центра класстера, проводим класстеризацию (при этом центры класстеров смещаются), далее мы либо оставляем все как есть, либо делим эти три класстера еще на два. Эти два центра либо будут смещаться и образовывать свои класстера, либо сойдутся в одну точку. Таким образом можно довольно легко вроводить класстеризацию не зная точно количества класстеров.
Правда есть более эффективные алгоритмы для этого.