После подготовки данных можно приступить к построению необходимой структуры.
Первую байесовскую сеть для первого модуля можно построить, запустив функцию block_learning.train_bn.train_model и передав в него необходимые данные, количество кластеров для заполнения скрытой переменной, а также список номеров узлов модели, которые не являются инициализирующими, то есть могут иметь родителей. Функция возвратит обученную байесовскую сеть. Основная идея состоит в том, что при обучении модели сети в ней сразу же резервируется ещё один узел скрытой переменной. Скрытая переменная агрегирует в себе всю информацию сети, с которой обучается. В начале она заполняется дискретным распределением, построенным на распределении кластеров передаваемых данных. То есть в данной нотации кластер - это метка агрегированной информации по всем узлам сети.
Обученную модель можно сохранить в папку models, запустив функцию block_learning.save_bn.save_model и передав в качестве аргумента имя модели.
При поступлении новых данных, нам необходимо дообучить модель с учётом новых данных. Это можно сделать, запустив функцию block_learning.partial_bn_train.partial_model_train и передав ей в качестве параметров уже обученную модель, которой необходимо присоединить новую, данные новой модели, список узлов, у которых могут быть родители, и количество кластеров для обучения новой скрытой переменной.
Функция block_learning.save_bn.read_model позволяет считывать уже обученную модель из json файла.
После обучения и дообучения всех моделей можно приступить к генерации синтетических данных. Для этого необходимо запустить функцию block_learning.sampling.generate_synthetics, передав на вход обученную байесовскую сеть и размер синтетического датасета.