Алгоритм кластеризации с порогом для объема кластера

Делаю кластеризацию погодных данных по дням.
Есть условие - объем каждого кластера должен быть не менее заданного порога.
Если кластер маленький - он должен быть поглощен другим (или сделана новая итерация).

Я изучил почти все алгоритмы из Mathematica и Python' Skikit.
Число самих кластеров изначально не заданно, поэтому это не должны быть "KMeans" or "KMedoids".
А какие опции использовать для, скажем, "DBSCAN" так и не понял.
Есть подозрение, что придется писать полностью свой алгоритм (


Ответы (1 шт):

Автор решения: CrazyElf

Есть условие - объем каждого кластера должен быть не менее заданного порога.

Посмотрите на HDBSCAN, там можно задать минимальный размер кластера в точках:

min_cluster_size int, default=5
The minimum number of samples in a group for that group to be considered a cluster; groupings smaller than this size will be left as noise.

Такой же параметр есть и у алгоритма OPTICS, но там можно задать не только минимальное число точек в кластере, но и как вариант - их долю в общем количестве:

min_samples int > 1 or float between 0 and 1, default=5
The number of samples in a neighborhood for a point to be considered as a core point. Also, up and down steep regions can’t have more than min_samples consecutive non-steep points. Expressed as an absolute number or a fraction of the number of samples (rounded to be at least 2).

→ Ссылка