Strategies#
Стратегии обновления компонент смеси. Реализованы с помощью @singledispatch.
У каждого шага оценки параметров должна быть своя стратегия, например для оптимизации Q-функции внутри ComponentMaximization, в папке pysatl-mpest/algorithms/strategies:
@singledispatch
def optimize_q_function(X: ndarray, W: ndarray, optimizer: ScipyOptimizer):
...
Эта функцией будет как бы “родительской” для остальных. Если не реализована конкретная стратегия оптимизации Q-функции для конкретной компоненты, будет вызываться она. Теперь необходимо реализовать эту стратегию для каждой компоненты, например для нормального распределения, и зарегистрировать её:
@optimize_q_function.register(Normal)
def optimize_q_function_normal(X: ndarray, W: ndarray, optimizer: ScipyOptimizer):
...
Классы#
Их пока нет. Возможно придется потом сделать для того, чтобы делать fallback для некоторых компонент.