Initializers#
Модуль, предоставляющий интерфейс и конкретные классы для инициализации начального приближения смеси.
Было решено вынести инициализаторы в отдельный модуль, а так же не связывать BaseEstimator и BaseInitializer отношением композиции потому что:
Интерфейсы инициализатора и оценщика разные, один принимает готовую смесь, а второй список распределений.
Будет сложнее отслеживать поведение инициализатора, по той причине, что его результат будет обрабатываться внутри оценщика. Поэтому не получится отдельно еще каким либо образом поработать с начальным приближением перед тем, как отправить его в алгоритм.
Классы#
BaseInitializer#
Абстрактный класс, занимающийся инициализацией начального приближение смеси.
Атрибуты
Методы
+ perform(X, list[Distribution]): MixtureModel
Абстрактный метод, который некоторым образом по выборке и списку распределений подбирает начальное приближение. Это приближение в виде смеси можно передать в объекты, реализующие интерфейс
BaseEstimator.
Мысли
Думаю, стоит так же через стратегии (@singledispatch) делать, т.к. инициализировать каждую компоненту надо отдельно.
ClusterizeInitializer#
Реализация абстрактного класса BaseInitializer, основанная на кластеризации выборки и последующей инициализации параметров с учетом кластеров.
Атрибуты
- is_soft: bool
Флаг, влияющий на то, будет ли матрица ответственностей жёсткой или мягкой. Если его значение
true, то матрица будет содержать вероятности между 0 и 1. В противном случае будут устанавливаться жесткие вероятности, либо 0 либо 1.- clusterizer
Кластеризатор из sklearn, который будет проводить кластеризацию.
+ labels: list
Метки принадлежности элементов к тому или иному кластеру.