Refactor EvoStrategy
Created by: J3FALL
Closed #53
Основные изменения:
- У Chain и Nodes появились отдельные функции обучения (fit) и предсказания (predict). Метод apply был удален.
- Узлы теперь не привязаны к данным(Node.input_data и Chain.reference_data были удалены). При обучении или предсказанию цепочек данные передаются явно при вызове соответствующих методов, которые рекурсивно передаются от корневого узла к листам и обратно.
- Model и EvaluationStrategy были значительно переработаны:
- Для добавления новой модели не нужно реализовывать свою обертку над моделью, наследуя от Model. Для этого нужно добавить конкретную модель в стратегию вычисления (подробнее см. SkLearnEvaluationStrategy).
- SkLearnEvaluationStrategy пока является единственной стратегией, которая позволяет создать модель по ее типу (ModelTypesIdsEnum), обучать и получать прогноз.
- Поскольку теперь нет привязки к реализациями моделей, в ComposerRequirements надо передавать только типы моделей.
- Та же ситуация с ModelTypesRepository: метод model_by_id потерял свою актуальность.
- После композирования цепочки, ее необходимо заранее обучить (fit), прежде чем вычислять. Иначе произойдет исключительная ситуация.
- CachedNodeResult и кэширование в целом было переработано. Теперь при переобучении узлов в цепочки происходит проверка на актуальность закэшированной модели (которая уже была "за-fit-чена"). Возможность кэширования результатов predict-а пока убрали из-за его сложности и запутанности.
- У метрик качества поменялся интерфейс и логика работы с данными.
- Значительная часть тестов была переработана.