aimclub / FEDOT

Automated modeling and machine learning framework FEDOT
https://fedot.readthedocs.io
BSD 3-Clause "New" or "Revised" License
623 stars 84 forks source link

Bugfixes #1153

Closed kasyanovse closed 10 months ago

kasyanovse commented 11 months ago
  1. Fix https://github.com/aimclub/FEDOT/issues/1148 with fixed denominator in CGRU and add test for new code
  2. Fix https://github.com/aimclub/FEDOT/issues/1151 with set n_jobs=1 for some operations
  3. Add initial assumption with AR (https://github.com/aimclub/FEDOT/issues/1074), enable AR (https://github.com/aimclub/FEDOT/issues/1137)
  4. Check and add test in accordance with https://github.com/aimclub/FEDOT/issues/739
  5. Fix integration test test_result_changing
aim-pep8-bot commented 11 months ago

Hello @kasyanovse! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers:

Comment last updated at 2023-08-30 13:19:15 UTC
kasyanovse commented 11 months ago

Code for testing single core use in boosting models:

import numpy as np

from fedot.core.data.data import InputData
from fedot.core.pipelines.node import PipelineNode
from fedot.core.pipelines.pipeline import Pipeline
from fedot.core.repository.dataset_types import DataTypesEnum
from fedot.core.repository.tasks import Task, TaskTypesEnum

length = 1000
width = 10

data_class = InputData(idx=np.arange(length),
                       features=np.random.rand(length, width),
                       target=(np.random.rand(length) > 0.5).astype(int),
                       task=Task(TaskTypesEnum.classification),
                       data_type=DataTypesEnum.table)

data_reg = InputData(idx=np.arange(length),
                     features=np.random.rand(length, width),
                     target=np.random.rand(length),
                     task=Task(TaskTypesEnum.regression),
                     data_type=DataTypesEnum.table)

for data, models in zip([data_class, data_reg], [['xgboost', 'catboost', 'lgbm'], ['catboostreg', 'lgbmreg']]):
    for model in models:
        pipeline = Pipeline(PipelineNode(model))
        pipeline.fit(data)
kasyanovse commented 11 months ago

Speed test for AR and ARIMA (for IPython):

import numpy as np

from fedot.core.data.data import InputData
from fedot.core.optimisers.objective import PipelineObjectiveEvaluate, MetricsObjective
from fedot.core.optimisers.objective.data_source_splitter import DataSourceSplitter
from fedot.core.pipelines.node import PipelineNode
from fedot.core.pipelines.pipeline import Pipeline
from fedot.core.repository.dataset_types import DataTypesEnum
from fedot.core.repository.quality_metrics_repository import RegressionMetricsEnum
from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams

length = 1000
data = np.random.rand(length)

data = InputData(idx=np.arange(len(data)),
                 features=data,
                 target=data,
                 data_type=DataTypesEnum.ts,
                 task=Task(TaskTypesEnum.ts_forecasting,
                           TsForecastingParams(forecast_length=2)))

data_splitter = DataSourceSplitter()
data_split = data_splitter.build(data)
objective_eval = PipelineObjectiveEvaluate(MetricsObjective(RegressionMetricsEnum.RMSE), data_split,
                                           validation_blocks=data_splitter.validation_blocks)

pipeline = Pipeline(PipelineNode('arima'))
%timeit pipeline.fit(data)
%timeit objective_eval.evaluate(pipeline)

pipeline = Pipeline(PipelineNode('ar'))
%timeit pipeline.fit(data)
%timeit objective_eval.evaluate(pipeline)
codecov[bot] commented 11 months ago

Codecov Report

Merging #1153 (edef65d) into master (97f31db) will increase coverage by 0.02%. Report is 1 commits behind head on master. The diff coverage is 50.00%.

@@            Coverage Diff             @@
##           master    #1153      +/-   ##
==========================================
+ Coverage   78.31%   78.34%   +0.02%     
==========================================
  Files         130      130              
  Lines        9349     9354       +5     
==========================================
+ Hits         7322     7328       +6     
+ Misses       2027     2026       -1     
Files Changed Coverage Δ
...edot/api/api_utils/assumptions/task_assumptions.py 77.19% <ø> (ø)
..._implementations/models/ts_implementations/cgru.py 26.00% <0.00%> (ø)
fedot/core/pipelines/pipeline.py 94.70% <ø> (+1.06%) :arrow_up:
fedot/core/pipelines/pipeline_node_factory.py 97.43% <66.66%> (-2.57%) :arrow_down:

... and 3 files with indirect coverage changes