Preprocessing refactor
Created by: Dreamlone
Changed the core architecture. Preprocessing operations now can be placed in separate nodes. Important changes:
- The Model abstraction is now replaced with an Operation that has two descendant classes: DataOperation class and Model class;
- Preprocessing operations, both simple, such as scaling, and advanced, such as lagged transformation for time series, can be used in nodes as previously models can be;
- New tuning (optimization of hyperparameters in nodes) is implemented - here are two classes: ChainTuner and SequentialTuner, both of them are using hyperopt library;
- New operator for mutation was implemented. Now it is possible to change hyperparameters in the nodes during chain composing;
- Now it is possible to feed different data sources to primary nodes, in particular, this functionality is used with exogenous time series, an example for which is available in examples;
- New low-level abstraction "Implementation" was appeared in the core. This abstraction includes custom models that are implemented in FEDOT;
- New operations have been implemented and added to the data_operations repository, such as feature selection, exclusion of anomalous values, smoothing of time series, and much more.