AutoTS: прогноз с топ-3 моделями вместо лучшей моделиPython

Программы на Python
Ответить
Anonymous
 AutoTS: прогноз с топ-3 моделями вместо лучшей модели

Сообщение Anonymous »

Я использую пакет AutoTS для прогнозирования многомерных временных рядов. Из результатов model.results() я хочу выбрать три лучшие модели для составления прогнозов. Однако моя первоначальная проверка использует длину прогноза 2, и на основе трех лучших моделей я делаю прогнозы для длины прогноза 4.
Я выполняю разделение проверки поезда, чтобы сравнить результаты средней абсолютной ошибки (MAE) отдельных столбцов с другими одномерными моделями временных рядов. Такой подход обеспечивает единую метрику сравнения. Если есть более эффективные методы достижения этой цели, предложите их.

Код: Выделить всё

    # Prepare the data for AutoTS
model = AutoTS(
forecast_length=2,
frequency='infer',
model_list=['NVAR','MAR','MultivariateRegression','NeuralForecast','DynamicFactorMQ'],
transformer_list="fast",  # "superfast", "default", "fast_parallel"
transformer_max_depth=2,
max_generations=1,
num_validations=1,
validation_method='backwards',
no_negatives=True,
remove_leading_zeroes=True
)

model = model.fit(
train_df,
date_col='year-quarter-date',
value_col='value',
id_col='vial_size'
)

# Get the top 3 models based on the score
top_3_models = model.results().sort_values(by='Score').head(3)

# Calculate MAE for each of the top 3 models
for _, row in top_3_models.iterrows():
model_name = row['Model']
model_param_dict = row['ModelParameters']
model_transform_dict = row['TransformationParameters']

# Calculate next two quarters' year-quarter-date
last_date = pd.to_datetime(train_df['year-quarter-date'].max())
next_quarters = pd.date_range(last_date, periods=3, freq='Q')[1:]
next_quarters_str = next_quarters.to_period('Q').astype(str)

# Predict the next two quarters using the predict method
forecast_result = model_forecast(
model_name=model_name,
model_param_dict=model_param_dict,
model_transform_dict=model_transform_dict,
df_train=train_df,
forecast_length=2,
frequency='Q',
no_negatives=True,
remove_leading_zeroes=True,
)
models = top_models[molecule]
for _, model in models:
model.forecast_length = 4
model = model.fit(
molecule_df,
date_col='year-quarter-date',
value_col='value',
id_col='vial_size'
)
prediction = model.predict()
forecast = prediction.forecast
Это занимает больше времени, и я хочу понять, есть ли лучший способ добиться того, чего я хочу.
Последовательность процесса:
[*]Разделите данные на обучение и проверку (последние 2 квартала)
[*]Подберите модель autoTS (длина прогноза = 2), чтобы получить баллы mae для даже
отдельные столбцы.
[*]Выберите три лучшие модели из этого списка.
[*]Прогнозируйте с использованием этих трех лучших моделей на следующие 4 квартала.


Подробнее здесь: https://stackoverflow.com/questions/790 ... best-model
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»