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