From 533334548eda829df9d57898945efec86dea9ebe Mon Sep 17 00:00:00 2001 From: Dreamlone <mik_sar@mail.ru> Date: Fri, 3 Sep 2021 15:55:42 +0300 Subject: [PATCH 1/6] fitted values added --- examples/time_series/ts_fitted_values.py | 38 ++++++++++++++++++++++++ fedot/core/pipelines/ts_wrappers.py | 36 +++++++++++++++++++++- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 examples/time_series/ts_fitted_values.py diff --git a/examples/time_series/ts_fitted_values.py b/examples/time_series/ts_fitted_values.py new file mode 100644 index 000000000..8704fb053 --- /dev/null +++ b/examples/time_series/ts_fitted_values.py @@ -0,0 +1,38 @@ +import numpy as np +import pandas as pd + +from matplotlib import pyplot as plt + +from fedot.core.data.data import InputData +from fedot.core.pipelines.ts_wrappers import fitted_values +from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams +from fedot.core.pipelines.node import PrimaryNode, SecondaryNode +from fedot.core.pipelines.pipeline import Pipeline +from examples.time_series.ts_forecasting_tuning import get_complex_pipeline + + +def show_fitted_time_series(len_forecast=24): + task = Task(TaskTypesEnum.ts_forecasting, + TsForecastingParams(forecast_length=len_forecast)) + + ts_input = InputData.from_csv_time_series(file_path='../../cases/data/time_series/metocean.csv', + task=task, target_column='value') + + node_lagged = PrimaryNode('lagged') + node_lagged.custom_params = {'window_size': 4} + node_final = SecondaryNode('ridge', nodes_from=[node_lagged]) + pipeline = Pipeline(node_final) + train_predicted = pipeline.fit(ts_input) + + fitted_ts_10 = fitted_values(train_predicted, 10) + fitted_ts_act = fitted_values(train_predicted) + plt.plot(ts_input.idx, ts_input.target, label='Actual time series') + plt.plot(fitted_ts_10.idx, fitted_ts_10.predict, label='Fitted values horizon 10') + plt.plot(fitted_ts_act.idx, fitted_ts_act.predict, label='Fitted values all') + plt.legend() + plt.grid() + plt.show() + + +if __name__ == '__main__': + show_fitted_time_series() diff --git a/fedot/core/pipelines/ts_wrappers.py b/fedot/core/pipelines/ts_wrappers.py index 9ab1f6580..cc0fe2eb0 100644 --- a/fedot/core/pipelines/ts_wrappers.py +++ b/fedot/core/pipelines/ts_wrappers.py @@ -1,9 +1,11 @@ +from copy import copy from typing import Union import numpy as np -from fedot.core.data.data import InputData +from fedot.core.data.data import InputData, OutputData from fedot.core.data.multi_modal import MultiModalData +from fedot.core.operations.evaluation.operation_implementations.data_operations.ts_transformations import _ts_to_table from fedot.core.repository.dataset_types import DataTypesEnum from fedot.core.repository.tasks import TaskTypesEnum @@ -162,6 +164,38 @@ def in_sample_ts_forecast(pipeline, input_data: Union[InputData, MultiModalData] return final_forecast +def fitted_values(train_predicted: OutputData, horizon_step: int = None): + """ The method converts a multidimensional lagged array into an + one-dimensional array - time series + + :param train_predicted: OutputData + :param horizon_step: index of elements for forecast + """ + copied_data = copy(train_predicted) + if horizon_step is not None: + # Take particular forecast step + copied_data.predict = copied_data.predict[:, horizon_step] + copied_data.idx = copied_data.idx + horizon_step + return copied_data + else: + # Perform collapse with averaging + forecast_length = copied_data.task.task_params.forecast_length + # LMatrix with indices in cells + indices_range = np.arange(0, len(copied_data.predict)) + _, idx_matrix = _ts_to_table(idx=indices_range, + time_series=indices_range, + window_size=forecast_length) + predicted_matrix = copied_data.predict + predicted_matrix = predicted_matrix[-len(idx_matrix):, :] + final_predictions = [] + for index in indices_range: + vals = predicted_matrix[idx_matrix == index] + mean_value = np.mean(vals) + final_predictions.append(mean_value) + copied_data.predict = np.array(final_predictions) + return copied_data + + def _calculate_number_of_steps(scope_len, horizon): """ Method return amount of iterations which must be done for multistep time series forecasting -- GitLab From 1ea6472dd2d4b28b64938c43b61ff288d20e95ad Mon Sep 17 00:00:00 2001 From: Dreamlone <mik_sar@mail.ru> Date: Fri, 3 Sep 2021 18:04:45 +0300 Subject: [PATCH 2/6] improve cutting --- ...ts_fitted_values.py => ts_fitted_target.py} | 18 +++++------------- .../data_operations/ts_transformations.py | 3 ++- fedot/core/pipelines/ts_wrappers.py | 12 ++++++++---- .../pipelines/test_pipeline_ts_wrappers.py | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 18 deletions(-) rename examples/time_series/{ts_fitted_values.py => ts_fitted_target.py} (60%) diff --git a/examples/time_series/ts_fitted_values.py b/examples/time_series/ts_fitted_target.py similarity index 60% rename from examples/time_series/ts_fitted_values.py rename to examples/time_series/ts_fitted_target.py index 8704fb053..936fd1a00 100644 --- a/examples/time_series/ts_fitted_values.py +++ b/examples/time_series/ts_fitted_target.py @@ -1,14 +1,9 @@ -import numpy as np -import pandas as pd - from matplotlib import pyplot as plt from fedot.core.data.data import InputData -from fedot.core.pipelines.ts_wrappers import fitted_values +from fedot.core.pipelines.ts_wrappers import fitted_target from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams -from fedot.core.pipelines.node import PrimaryNode, SecondaryNode -from fedot.core.pipelines.pipeline import Pipeline -from examples.time_series.ts_forecasting_tuning import get_complex_pipeline +from test.unit.pipelines.test_pipeline_ts_wrappers import get_simple_short_lagged_pipeline def show_fitted_time_series(len_forecast=24): @@ -18,14 +13,11 @@ def show_fitted_time_series(len_forecast=24): ts_input = InputData.from_csv_time_series(file_path='../../cases/data/time_series/metocean.csv', task=task, target_column='value') - node_lagged = PrimaryNode('lagged') - node_lagged.custom_params = {'window_size': 4} - node_final = SecondaryNode('ridge', nodes_from=[node_lagged]) - pipeline = Pipeline(node_final) + pipeline = get_simple_short_lagged_pipeline() train_predicted = pipeline.fit(ts_input) - fitted_ts_10 = fitted_values(train_predicted, 10) - fitted_ts_act = fitted_values(train_predicted) + fitted_ts_10 = fitted_target(train_predicted, 10) + fitted_ts_act = fitted_target(train_predicted) plt.plot(ts_input.idx, ts_input.target, label='Actual time series') plt.plot(fitted_ts_10.idx, fitted_ts_10.predict, label='Fitted values horizon 10') plt.plot(fitted_ts_act.idx, fitted_ts_act.predict, label='Fitted values all') diff --git a/fedot/core/operations/evaluation/operation_implementations/data_operations/ts_transformations.py b/fedot/core/operations/evaluation/operation_implementations/data_operations/ts_transformations.py index fbb624593..c3ed2dfa0 100644 --- a/fedot/core/operations/evaluation/operation_implementations/data_operations/ts_transformations.py +++ b/fedot/core/operations/evaluation/operation_implementations/data_operations/ts_transformations.py @@ -317,8 +317,9 @@ def _ts_to_table(idx, time_series: np.array, window_size: int): transformed = np.array(lagged_dataframe) - # Generate dataset with features + # Remove extra column (it will go to target) features_columns = transformed[:, 1:] + # Generate dataset with features features_columns = np.fliplr(features_columns) # First n elements in time series are removed diff --git a/fedot/core/pipelines/ts_wrappers.py b/fedot/core/pipelines/ts_wrappers.py index cc0fe2eb0..72766de42 100644 --- a/fedot/core/pipelines/ts_wrappers.py +++ b/fedot/core/pipelines/ts_wrappers.py @@ -164,7 +164,7 @@ def in_sample_ts_forecast(pipeline, input_data: Union[InputData, MultiModalData] return final_forecast -def fitted_values(train_predicted: OutputData, horizon_step: int = None): +def fitted_target(train_predicted: OutputData, horizon_step: int = None): """ The method converts a multidimensional lagged array into an one-dimensional array - time series @@ -180,19 +180,23 @@ def fitted_values(train_predicted: OutputData, horizon_step: int = None): else: # Perform collapse with averaging forecast_length = copied_data.task.task_params.forecast_length - # LMatrix with indices in cells - indices_range = np.arange(0, len(copied_data.predict)) + # Extend source index range + indices_range = np.arange(copied_data.idx[0], copied_data.idx[-1] + forecast_length + 1) + # Lagged matrix with indices in cells _, idx_matrix = _ts_to_table(idx=indices_range, time_series=indices_range, window_size=forecast_length) predicted_matrix = copied_data.predict - predicted_matrix = predicted_matrix[-len(idx_matrix):, :] + + # For every index calculate mean predictions (by all forecast steps) final_predictions = [] + indices_range = indices_range[:-1] for index in indices_range: vals = predicted_matrix[idx_matrix == index] mean_value = np.mean(vals) final_predictions.append(mean_value) copied_data.predict = np.array(final_predictions) + copied_data.idx = indices_range return copied_data diff --git a/test/unit/pipelines/test_pipeline_ts_wrappers.py b/test/unit/pipelines/test_pipeline_ts_wrappers.py index 4362a8449..083c0735b 100644 --- a/test/unit/pipelines/test_pipeline_ts_wrappers.py +++ b/test/unit/pipelines/test_pipeline_ts_wrappers.py @@ -7,6 +7,7 @@ from fedot.core.pipelines.pipeline import Pipeline from fedot.core.pipelines.ts_wrappers import in_sample_ts_forecast, out_of_sample_ts_forecast from fedot.core.repository.dataset_types import DataTypesEnum from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams +from fedot.core.pipelines.ts_wrappers import fitted_target def prepare_input_data(forecast_length, horizon): @@ -88,3 +89,16 @@ def test_in_sample_ts_forecast_correct(): is_forecast_correct = True assert is_forecast_correct + + +def test_fitted_target_correct(): + from matplotlib import pyplot as plt + simple_length, multi_length = 5, 5 + ts_input, _ = prepare_input_data(simple_length, multi_length) + + pipeline = get_simple_short_lagged_pipeline() + train_predicted = pipeline.fit(ts_input) + + fitted_ts_values = fitted_target(train_predicted) + + assert len(fitted_ts_values.predict) == len(ts_input.target) - 4 -- GitLab From eb23300cdf983bd0f5cca8b40bf9dd129976c6e8 Mon Sep 17 00:00:00 2001 From: Dreamlone <mik_sar@mail.ru> Date: Fri, 3 Sep 2021 19:14:17 +0300 Subject: [PATCH 3/6] in-sample fitted --- examples/time_series/ts_fitted_target.py | 5 ++++- fedot/core/pipelines/ts_wrappers.py | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/examples/time_series/ts_fitted_target.py b/examples/time_series/ts_fitted_target.py index 936fd1a00..312343c0a 100644 --- a/examples/time_series/ts_fitted_target.py +++ b/examples/time_series/ts_fitted_target.py @@ -1,7 +1,7 @@ from matplotlib import pyplot as plt from fedot.core.data.data import InputData -from fedot.core.pipelines.ts_wrappers import fitted_target +from fedot.core.pipelines.ts_wrappers import fitted_target, in_sample_fitted_target from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams from test.unit.pipelines.test_pipeline_ts_wrappers import get_simple_short_lagged_pipeline @@ -18,6 +18,9 @@ def show_fitted_time_series(len_forecast=24): fitted_ts_10 = fitted_target(train_predicted, 10) fitted_ts_act = fitted_target(train_predicted) + + in_sample_fitted_target(train_predicted) + plt.plot(ts_input.idx, ts_input.target, label='Actual time series') plt.plot(fitted_ts_10.idx, fitted_ts_10.predict, label='Fitted values horizon 10') plt.plot(fitted_ts_act.idx, fitted_ts_act.predict, label='Fitted values all') diff --git a/fedot/core/pipelines/ts_wrappers.py b/fedot/core/pipelines/ts_wrappers.py index 72766de42..4cf24716d 100644 --- a/fedot/core/pipelines/ts_wrappers.py +++ b/fedot/core/pipelines/ts_wrappers.py @@ -164,12 +164,13 @@ def in_sample_ts_forecast(pipeline, input_data: Union[InputData, MultiModalData] return final_forecast -def fitted_target(train_predicted: OutputData, horizon_step: int = None): +def fitted_target(train_predicted: OutputData, horizon_step: int = None) -> OutputData: """ The method converts a multidimensional lagged array into an - one-dimensional array - time series + one-dimensional array - time series based on predicted values for training sample :param train_predicted: OutputData - :param horizon_step: index of elements for forecast + :param horizon_step: index of elements for forecast. If None - perform + averaging for all forecasting steps """ copied_data = copy(train_predicted) if horizon_step is not None: @@ -200,6 +201,17 @@ def fitted_target(train_predicted: OutputData, horizon_step: int = None): return copied_data +def in_sample_fitted_target(train_predicted: OutputData) -> OutputData: + """ Perform in sample validation based on training sample """ + forecast_length = train_predicted.task.task_params.forecast_length + all_values = [] + step = 0 + while step < len(train_predicted.idx): + all_values.extend(train_predicted.predict[step, :]) + step += forecast_length + # TODO finish implementation + + def _calculate_number_of_steps(scope_len, horizon): """ Method return amount of iterations which must be done for multistep time series forecasting -- GitLab From 5dee71f4e0391f69ba8960852e000e23e1747163 Mon Sep 17 00:00:00 2001 From: Dreamlone <mik_sar@mail.ru> Date: Tue, 7 Sep 2021 16:04:02 +0300 Subject: [PATCH 4/6] add in-sample fitted to test & examples --- examples/time_series/ts_fitted_target.py | 19 +++++++++++------- fedot/core/pipelines/ts_wrappers.py | 20 +++++++++++++++++-- .../pipelines/test_pipeline_ts_wrappers.py | 12 +++++------ 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/examples/time_series/ts_fitted_target.py b/examples/time_series/ts_fitted_target.py index 312343c0a..f0889a74b 100644 --- a/examples/time_series/ts_fitted_target.py +++ b/examples/time_series/ts_fitted_target.py @@ -7,6 +7,10 @@ from test.unit.pipelines.test_pipeline_ts_wrappers import get_simple_short_lagge def show_fitted_time_series(len_forecast=24): + """ + Shows an example of how to get fitted values of a time series by any + pipeline created by FEDOT + """ task = Task(TaskTypesEnum.ts_forecasting, TsForecastingParams(forecast_length=len_forecast)) @@ -16,18 +20,19 @@ def show_fitted_time_series(len_forecast=24): pipeline = get_simple_short_lagged_pipeline() train_predicted = pipeline.fit(ts_input) - fitted_ts_10 = fitted_target(train_predicted, 10) + # Get fitted values + fitted_ts_10 = fitted_target(train_predicted, 1) fitted_ts_act = fitted_target(train_predicted) + in_sample_validated = in_sample_fitted_target(train_predicted) - in_sample_fitted_target(train_predicted) - - plt.plot(ts_input.idx, ts_input.target, label='Actual time series') - plt.plot(fitted_ts_10.idx, fitted_ts_10.predict, label='Fitted values horizon 10') - plt.plot(fitted_ts_act.idx, fitted_ts_act.predict, label='Fitted values all') + plt.plot(ts_input.idx, ts_input.target, label='Actual time series', alpha=0.8) + plt.plot(fitted_ts_10.idx, fitted_ts_10.predict, label='Fitted values horizon 10', alpha=0.2) + plt.plot(fitted_ts_act.idx, fitted_ts_act.predict, label='Fitted values all', alpha=0.2) + plt.plot(in_sample_validated.idx, in_sample_validated.predict, label='In-sample fitted values') plt.legend() plt.grid() plt.show() if __name__ == '__main__': - show_fitted_time_series() + show_fitted_time_series(55) diff --git a/fedot/core/pipelines/ts_wrappers.py b/fedot/core/pipelines/ts_wrappers.py index 4cf24716d..e0b9874ae 100644 --- a/fedot/core/pipelines/ts_wrappers.py +++ b/fedot/core/pipelines/ts_wrappers.py @@ -181,8 +181,10 @@ def fitted_target(train_predicted: OutputData, horizon_step: int = None) -> Outp else: # Perform collapse with averaging forecast_length = copied_data.task.task_params.forecast_length + # Extend source index range indices_range = np.arange(copied_data.idx[0], copied_data.idx[-1] + forecast_length + 1) + # Lagged matrix with indices in cells _, idx_matrix = _ts_to_table(idx=indices_range, time_series=indices_range, @@ -206,10 +208,24 @@ def in_sample_fitted_target(train_predicted: OutputData) -> OutputData: forecast_length = train_predicted.task.task_params.forecast_length all_values = [] step = 0 - while step < len(train_predicted.idx): + # Glues together parts of predictions using "in-sample" way + while step < len(train_predicted.predict): all_values.extend(train_predicted.predict[step, :]) step += forecast_length - # TODO finish implementation + + # In some cases it doesn't reach the end + if not np.isclose(all_values[-1], train_predicted.predict[-1, -1]): + missing_part_index = step - len(train_predicted.predict) + 1 + # Store missing predicted values + all_values.extend(train_predicted.predict[-1, missing_part_index:]) + + copied_data = copy(train_predicted) + copied_data.predict = np.array(all_values) + # Update indices + first_id = copied_data.idx[0] + copied_data.idx = np.arange(first_id, first_id + len(all_values)) + + return copied_data def _calculate_number_of_steps(scope_len, horizon): diff --git a/test/unit/pipelines/test_pipeline_ts_wrappers.py b/test/unit/pipelines/test_pipeline_ts_wrappers.py index 083c0735b..56a5ef2e0 100644 --- a/test/unit/pipelines/test_pipeline_ts_wrappers.py +++ b/test/unit/pipelines/test_pipeline_ts_wrappers.py @@ -4,7 +4,7 @@ from sklearn.metrics import mean_absolute_error from fedot.core.data.data import InputData from fedot.core.pipelines.node import PrimaryNode, SecondaryNode from fedot.core.pipelines.pipeline import Pipeline -from fedot.core.pipelines.ts_wrappers import in_sample_ts_forecast, out_of_sample_ts_forecast +from fedot.core.pipelines.ts_wrappers import in_sample_ts_forecast, out_of_sample_ts_forecast, in_sample_fitted_target from fedot.core.repository.dataset_types import DataTypesEnum from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams from fedot.core.pipelines.ts_wrappers import fitted_target @@ -92,13 +92,13 @@ def test_in_sample_ts_forecast_correct(): def test_fitted_target_correct(): - from matplotlib import pyplot as plt simple_length, multi_length = 5, 5 ts_input, _ = prepare_input_data(simple_length, multi_length) - pipeline = get_simple_short_lagged_pipeline() - train_predicted = pipeline.fit(ts_input) + for fitted_func in [fitted_target, in_sample_fitted_target]: + pipeline = get_simple_short_lagged_pipeline() + train_predicted = pipeline.fit(ts_input) - fitted_ts_values = fitted_target(train_predicted) + fitted_ts_values = fitted_func(train_predicted) - assert len(fitted_ts_values.predict) == len(ts_input.target) - 4 + assert len(fitted_ts_values.predict) == len(ts_input.target) - 4 -- GitLab From b5f34acf3b8092ec3a352ee4acadc584e95030ec Mon Sep 17 00:00:00 2001 From: Dreamlone <mik_sar@mail.ru> Date: Wed, 8 Sep 2021 11:39:27 +0300 Subject: [PATCH 5/6] add description --- .../{ts_fitted_target.py => ts_fitted_values.py} | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) rename examples/time_series/{ts_fitted_target.py => ts_fitted_values.py} (78%) diff --git a/examples/time_series/ts_fitted_target.py b/examples/time_series/ts_fitted_values.py similarity index 78% rename from examples/time_series/ts_fitted_target.py rename to examples/time_series/ts_fitted_values.py index f0889a74b..3e4fd94b6 100644 --- a/examples/time_series/ts_fitted_target.py +++ b/examples/time_series/ts_fitted_values.py @@ -10,6 +10,10 @@ def show_fitted_time_series(len_forecast=24): """ Shows an example of how to get fitted values of a time series by any pipeline created by FEDOT + + fitted values - are the predictions of the pipelines on the training sample. + For time series, these values show how well the model reproduces the time + series structure """ task = Task(TaskTypesEnum.ts_forecasting, TsForecastingParams(forecast_length=len_forecast)) @@ -20,9 +24,11 @@ def show_fitted_time_series(len_forecast=24): pipeline = get_simple_short_lagged_pipeline() train_predicted = pipeline.fit(ts_input) - # Get fitted values - fitted_ts_10 = fitted_target(train_predicted, 1) + # Get fitted values for every 10th forecast + fitted_ts_10 = fitted_target(train_predicted, 10) + # Average for all forecasting horizons fitted_ts_act = fitted_target(train_predicted) + # In-sample forecasting fitted values in_sample_validated = in_sample_fitted_target(train_predicted) plt.plot(ts_input.idx, ts_input.target, label='Actual time series', alpha=0.8) @@ -35,4 +41,4 @@ def show_fitted_time_series(len_forecast=24): if __name__ == '__main__': - show_fitted_time_series(55) + show_fitted_time_series() -- GitLab From 0545eb4f4e1e6ba1560a449429bfccd747205139 Mon Sep 17 00:00:00 2001 From: Dreamlone <mik_sar@mail.ru> Date: Wed, 8 Sep 2021 12:32:29 +0300 Subject: [PATCH 6/6] change names --- examples/time_series/ts_fitted_values.py | 8 ++++---- fedot/core/pipelines/ts_wrappers.py | 4 ++-- test/unit/pipelines/test_pipeline_ts_wrappers.py | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/time_series/ts_fitted_values.py b/examples/time_series/ts_fitted_values.py index 3e4fd94b6..01c4e0db0 100644 --- a/examples/time_series/ts_fitted_values.py +++ b/examples/time_series/ts_fitted_values.py @@ -1,7 +1,7 @@ from matplotlib import pyplot as plt from fedot.core.data.data import InputData -from fedot.core.pipelines.ts_wrappers import fitted_target, in_sample_fitted_target +from fedot.core.pipelines.ts_wrappers import fitted_values, in_sample_fitted_values from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams from test.unit.pipelines.test_pipeline_ts_wrappers import get_simple_short_lagged_pipeline @@ -25,11 +25,11 @@ def show_fitted_time_series(len_forecast=24): train_predicted = pipeline.fit(ts_input) # Get fitted values for every 10th forecast - fitted_ts_10 = fitted_target(train_predicted, 10) + fitted_ts_10 = fitted_values(train_predicted, 10) # Average for all forecasting horizons - fitted_ts_act = fitted_target(train_predicted) + fitted_ts_act = fitted_values(train_predicted) # In-sample forecasting fitted values - in_sample_validated = in_sample_fitted_target(train_predicted) + in_sample_validated = in_sample_fitted_values(train_predicted) plt.plot(ts_input.idx, ts_input.target, label='Actual time series', alpha=0.8) plt.plot(fitted_ts_10.idx, fitted_ts_10.predict, label='Fitted values horizon 10', alpha=0.2) diff --git a/fedot/core/pipelines/ts_wrappers.py b/fedot/core/pipelines/ts_wrappers.py index e0b9874ae..dea6d853e 100644 --- a/fedot/core/pipelines/ts_wrappers.py +++ b/fedot/core/pipelines/ts_wrappers.py @@ -164,7 +164,7 @@ def in_sample_ts_forecast(pipeline, input_data: Union[InputData, MultiModalData] return final_forecast -def fitted_target(train_predicted: OutputData, horizon_step: int = None) -> OutputData: +def fitted_values(train_predicted: OutputData, horizon_step: int = None) -> OutputData: """ The method converts a multidimensional lagged array into an one-dimensional array - time series based on predicted values for training sample @@ -203,7 +203,7 @@ def fitted_target(train_predicted: OutputData, horizon_step: int = None) -> Outp return copied_data -def in_sample_fitted_target(train_predicted: OutputData) -> OutputData: +def in_sample_fitted_values(train_predicted: OutputData) -> OutputData: """ Perform in sample validation based on training sample """ forecast_length = train_predicted.task.task_params.forecast_length all_values = [] diff --git a/test/unit/pipelines/test_pipeline_ts_wrappers.py b/test/unit/pipelines/test_pipeline_ts_wrappers.py index 56a5ef2e0..23e9713fb 100644 --- a/test/unit/pipelines/test_pipeline_ts_wrappers.py +++ b/test/unit/pipelines/test_pipeline_ts_wrappers.py @@ -4,10 +4,10 @@ from sklearn.metrics import mean_absolute_error from fedot.core.data.data import InputData from fedot.core.pipelines.node import PrimaryNode, SecondaryNode from fedot.core.pipelines.pipeline import Pipeline -from fedot.core.pipelines.ts_wrappers import in_sample_ts_forecast, out_of_sample_ts_forecast, in_sample_fitted_target +from fedot.core.pipelines.ts_wrappers import in_sample_ts_forecast, out_of_sample_ts_forecast, in_sample_fitted_values from fedot.core.repository.dataset_types import DataTypesEnum from fedot.core.repository.tasks import Task, TaskTypesEnum, TsForecastingParams -from fedot.core.pipelines.ts_wrappers import fitted_target +from fedot.core.pipelines.ts_wrappers import fitted_values def prepare_input_data(forecast_length, horizon): @@ -91,11 +91,11 @@ def test_in_sample_ts_forecast_correct(): assert is_forecast_correct -def test_fitted_target_correct(): +def test_fitted_values_correct(): simple_length, multi_length = 5, 5 ts_input, _ = prepare_input_data(simple_length, multi_length) - for fitted_func in [fitted_target, in_sample_fitted_target]: + for fitted_func in [fitted_values, in_sample_fitted_values]: pipeline = get_simple_short_lagged_pipeline() train_predicted = pipeline.fit(ts_input) -- GitLab