From 2e845ae777c13521d66ee32ff6248f4fb11b4181 Mon Sep 17 00:00:00 2001 From: Pakulin Sergei Date: Wed, 12 Jul 2023 12:40:46 +0300 Subject: [PATCH] move seed setting out of the methods --- cases/credit_scoring/credit_scoring_problem.py | 4 +++- examples/advanced/additional_learning.py | 10 ++++++---- examples/advanced/multimodal_text_num_example.py | 6 ++++-- examples/advanced/multiobj_optimisation.py | 5 ++++- .../remote_execution/ts_composer_with_integration.py | 5 ++++- examples/simple/classification/api_classification.py | 8 +++++--- test/unit/common_tests.py | 3 +++ 7 files changed, 29 insertions(+), 12 deletions(-) diff --git a/cases/credit_scoring/credit_scoring_problem.py b/cases/credit_scoring/credit_scoring_problem.py index 54ba55df16..e74f8f4aa4 100644 --- a/cases/credit_scoring/credit_scoring_problem.py +++ b/cases/credit_scoring/credit_scoring_problem.py @@ -9,6 +9,7 @@ from fedot.core.data.data import InputData from fedot.core.pipelines.pipeline import Pipeline from fedot.core.utils import fedot_project_root +from fedot.core.utils import set_random_seed def calculate_validation_metric(pipeline: Pipeline, dataset_to_validate: InputData) -> float: @@ -27,7 +28,6 @@ def run_credit_scoring_problem(train_file_path, test_file_path, **composer_args): automl = Fedot(problem='classification', timeout=timeout, - seed=42, preset=BEST_QUALITY_PRESET_NAME, logging_level=logging.DEBUG, **composer_args) @@ -63,6 +63,8 @@ def get_scoring_data(): if __name__ == '__main__': + set_random_seed(42) + full_path_train, full_path_test = get_scoring_data() run_credit_scoring_problem(full_path_train, full_path_test, diff --git a/examples/advanced/additional_learning.py b/examples/advanced/additional_learning.py index c4aa64ad0a..bc9aa60b77 100644 --- a/examples/advanced/additional_learning.py +++ b/examples/advanced/additional_learning.py @@ -9,10 +9,10 @@ from fedot.core.pipelines.pipeline import Pipeline from fedot.core.pipelines.pipeline_builder import PipelineBuilder from fedot.core.utils import fedot_project_root +from fedot.core.utils import set_random_seed def run_additional_learning_example(): - seed = 42 train_data_path = f'{fedot_project_root()}/cases/data/scoring/scoring_train.csv' test_data_path = f'{fedot_project_root()}/cases/data/scoring/scoring_test.csv' @@ -23,7 +23,7 @@ def run_additional_learning_example(): problem = 'classification' - auto_model = Fedot(problem=problem, seed=seed, timeout=5, preset='best_quality', + auto_model = Fedot(problem=problem, timeout=5, preset='best_quality', initial_assumption=PipelineBuilder().add_node('scaling').add_node('logit').build()) auto_model.fit(features=deepcopy(train_data.head(1000)), target='target') @@ -41,7 +41,7 @@ def run_additional_learning_example(): train_data = train_data.head(5000) timeout = 1 - auto_model_from_atomized = Fedot(problem=problem, seed=seed, preset='best_quality', timeout=timeout, + auto_model_from_atomized = Fedot(problem=problem, preset='best_quality', timeout=timeout, logging_level=logging.INFO, initial_assumption=atomized_model) auto_model_from_atomized.fit(features=deepcopy(train_data), target='target') @@ -49,7 +49,7 @@ def run_additional_learning_example(): auto_model_from_atomized.current_pipeline.show() print('auto_model_from_atomized', auto_model_from_atomized.get_metrics(deepcopy(test_data_target))) - auto_model_from_pipeline = Fedot(problem=problem, seed=seed, preset='best_quality', timeout=timeout, + auto_model_from_pipeline = Fedot(problem=problem, preset='best_quality', timeout=timeout, logging_level=logging.INFO, initial_assumption=non_atomized_model) auto_model_from_pipeline.fit(features=deepcopy(train_data), target='target') @@ -59,4 +59,6 @@ def run_additional_learning_example(): if __name__ == '__main__': + set_random_seed(42) + run_additional_learning_example() diff --git a/examples/advanced/multimodal_text_num_example.py b/examples/advanced/multimodal_text_num_example.py index 2881f7d149..71b4eb5bc8 100644 --- a/examples/advanced/multimodal_text_num_example.py +++ b/examples/advanced/multimodal_text_num_example.py @@ -2,6 +2,7 @@ from fedot.core.data.data_split import train_test_data_setup from fedot.core.data.multi_modal import MultiModalData from fedot.core.utils import fedot_project_root +from fedot.core.utils import set_random_seed def run_multi_modal_example(file_path: str, visualization: bool = False, with_tuning: bool = True, @@ -23,12 +24,11 @@ def run_multi_modal_example(file_path: str, visualization: bool = False, with_tu F1 metrics of the model. """ task = 'classification' - seed = 42 path = fedot_project_root().joinpath(file_path) data = MultiModalData.from_csv(file_path=path, task=task, target_columns='variety', index_col=None) fit_data, predict_data = train_test_data_setup(data, shuffle_flag=True, split_ratio=0.7) - automl_model = Fedot(problem=task, timeout=timeout, seed=seed, with_tuning=with_tuning, n_jobs=1) + automl_model = Fedot(problem=task, timeout=timeout, with_tuning=with_tuning, n_jobs=1) automl_model.fit(features=fit_data, target=fit_data.target) @@ -44,4 +44,6 @@ def run_multi_modal_example(file_path: str, visualization: bool = False, with_tu if __name__ == '__main__': + set_random_seed(42) + run_multi_modal_example(file_path='examples/data/multimodal_wine.csv', visualization=True) diff --git a/examples/advanced/multiobj_optimisation.py b/examples/advanced/multiobj_optimisation.py index 7a36d2c009..d09dcbbc14 100644 --- a/examples/advanced/multiobj_optimisation.py +++ b/examples/advanced/multiobj_optimisation.py @@ -2,6 +2,7 @@ from fedot.api.main import Fedot from fedot.core.utils import fedot_project_root +from fedot.core.utils import set_random_seed def run_classification_multiobj_example(visualization=False, timeout=1, with_tuning=True): @@ -12,7 +13,7 @@ def run_classification_multiobj_example(visualization=False, timeout=1, with_tun problem = 'classification' metric_names = ['f1', 'node_number'] - auto_model = Fedot(problem=problem, timeout=timeout, preset='best_quality', seed=42, + auto_model = Fedot(problem=problem, timeout=timeout, preset='best_quality', metric=metric_names, with_tuning=with_tuning) auto_model.fit(features=train_data, target='class') @@ -27,4 +28,6 @@ def run_classification_multiobj_example(visualization=False, timeout=1, with_tun if __name__ == '__main__': + set_random_seed(42) + run_classification_multiobj_example(visualization=True) diff --git a/examples/advanced/remote_execution/ts_composer_with_integration.py b/examples/advanced/remote_execution/ts_composer_with_integration.py index 1445d8bb43..ded6a71f72 100644 --- a/examples/advanced/remote_execution/ts_composer_with_integration.py +++ b/examples/advanced/remote_execution/ts_composer_with_integration.py @@ -1,6 +1,7 @@ from fedot.api.main import Fedot from fedot.core.data.multi_modal import MultiModalData from fedot.core.utils import fedot_project_root +from fedot.core.utils import set_random_seed from fedot.remote.infrastructure.clients.test_client import TestClient from fedot.remote.remote_evaluator import RemoteEvaluator, RemoteTaskParams @@ -60,7 +61,7 @@ def run_automl(data: MultiModalData, features_to_use, 'cv_folds': None, 'validation_blocks': None} - automl = Fedot(problem='ts_forecasting', seed=1, timeout=timeout, **composer_params) + automl = Fedot(problem='ts_forecasting', timeout=timeout, **composer_params) obtained_pipeline = automl.fit(data) forecast = automl.forecast(data) @@ -68,6 +69,8 @@ def run_automl(data: MultiModalData, features_to_use, if __name__ == '__main__': + set_random_seed(1) + features_to_use = ['wind_speed', 'sea_height'] data = MultiModalData.from_csv_time_series( diff --git a/examples/simple/classification/api_classification.py b/examples/simple/classification/api_classification.py index a0622826e3..a079b0a4a8 100644 --- a/examples/simple/classification/api_classification.py +++ b/examples/simple/classification/api_classification.py @@ -1,20 +1,20 @@ from fedot.api.main import Fedot from fedot.core.utils import fedot_project_root +from fedot.core.utils import set_random_seed def run_classification_example(timeout: float = None, visualization=False, with_tuning=True): - seed = 42 problem = 'classification' train_data_path = f'{fedot_project_root()}/cases/data/scoring/scoring_train.csv' test_data_path = f'{fedot_project_root()}/cases/data/scoring/scoring_test.csv' - baseline_model = Fedot(problem=problem, timeout=timeout, seed=seed) + baseline_model = Fedot(problem=problem, timeout=timeout) baseline_model.fit(features=train_data_path, target='target', predefined_model='rf') baseline_model.predict(features=test_data_path) print(baseline_model.get_metrics()) - auto_model = Fedot(problem=problem, seed=seed, timeout=timeout, n_jobs=-1, preset='best_quality', + auto_model = Fedot(problem=problem, timeout=timeout, n_jobs=-1, preset='best_quality', max_pipeline_fit_time=5, metric='roc_auc', with_tuning=with_tuning) auto_model.fit(features=train_data_path, target='target') prediction = auto_model.predict_proba(features=test_data_path) @@ -26,4 +26,6 @@ def run_classification_example(timeout: float = None, visualization=False, with_ if __name__ == '__main__': + set_random_seed(42) + run_classification_example(timeout=10.0, visualization=True) diff --git a/test/unit/common_tests.py b/test/unit/common_tests.py index e94d613e22..64aed5282e 100644 --- a/test/unit/common_tests.py +++ b/test/unit/common_tests.py @@ -3,9 +3,12 @@ import numpy as np from fedot.core.data.data import InputData, OutputData +from fedot.core.utils import set_random_seed def is_predict_ignores_target(predict_func, input_data, data_arg_name, predict_args=None): + set_random_seed(0) + if predict_args is None: predict_args = {}