Мощный генетический алгоритм для временных рядов
Привет всем, добро пожаловать обратно в другую интересную тему генетического подхода к временным рядам/последовательным данным.
Мы уже видели в нашем предыдущем обсуждении, как генетический подход работает для алгоритмов машинного обучения, предназначенных для более высокой точности пропускной способности,
Вот ссылка на случай, если вы не сможете понять, о чем я говорю.
Сегодня мы рассмотрим тот же подход для данных временных рядов, используя пакет под названием AutoTS.
Давайте начнем
#AutoTS from autots import AutoTS from autots.models.model_list import model_lists print(model_lists)
Прохладный? у нас есть множество моделей временных рядов, включая ансамбль, который я покажу вам позже.
Теперь давайте загрузим данные.
#default data from autots.datasets import load_monthly #data was in long format df_long = load_monthly(long=True)
# Инициализировать AutoTS с другими параметрами
model = AutoTS( forecast_length=3, frequency='infer', ensemble='simple', max_generations=5, num_validations=2, ) model = model.fit(df_long, date_col='datetime', value_col='value', id_col='series_id') #help(AutoTS)
Будьте терпеливы, это требует времени, так как он должен пройти через множество итераций алгоритмов.
# Print the name of the best model print(model)
Мы также можем просмотреть оценки точности модели.
#accuracy score model.results() #aggregated from cross validation validation_results = model.results("validation")
Из списка оценок точности модели вы также можете увидеть выделенное выше из столбца «Модель «Ансамбль», и его низкая точность подтверждает одну из теорий, согласно которой неправда, что ансамбль всегда работает лучше.
Поскольку мы получили лучшую модель, а также другие оценки точности модели. теперь пришло время получить прогнозные значения.
prediction = model.predict() forecasts_df = prediction.forecast upper_forecasts_df = prediction.upper_forecast lower_forecasts_df = prediction.lower_forecast #or forecasts_df1 = prediction.long_form_results() upper_forecasts_df1 = prediction.long_form_results() lower_forecasts_df1 = prediction.long_form_results()
Давайте возьмем другой вариант использования, чтобы соответствовать нашей настройке.
Что, если мы хотим работать в нескольких списках моделей и иметь больший или меньший вес для определенной функции.
from autots import AutoTS from autots.datasets import load_hourly df_wide = load_hourly(long=False) # here we care most about traffic volume, all other series assumed to be weight of 1 weights_hourly = {'traffic_volume': 20}
Теперь мы определим список моделей
model_list = [ 'LastValueNaive', 'GLS', 'ETS', 'AverageValueNaive', ] model = AutoTS( forecast_length=49, frequency='infer', prediction_interval=0.95, ensemble=['simple', 'horizontal-min'], max_generations=5, num_validations=2, validation_method='seasonal 168', model_list=model_list, transformer_list='all', models_to_validate=0.2, drop_most_recent=1, n_jobs='auto', )
После этого мы теперь должны определить вес, подгоняя модель под наши данные.
model = model.fit( df_wide, weights=weights_hourly, ) prediction = model.predict() forecasts_df = prediction.forecast
Экспортировать модель тоже довольно просто.
#EXPORTING############################################ # after fitting an AutoTS model example_filename = "example_export.csv" # .csv/.json model.export_template(example_filename, models='best', n=15, max_per_model_class=3) forecast_length = 3 # on new training model = AutoTS(forecast_length=forecast_length, frequency='infer', max_generations=0, num_validations=0, verbose=0) model = model.import_template(example_filename, method='only') # method='add on' print("Overwrite template is: {}".format(str(model.initial_template)))
Опять же, что, если мы хотим запустить одну модель, вот быстрый улов
#Running just one model ################################################################ from autots import load_daily, model_forecast df = load_daily(long=False) # long or non-numeric data won't work with this function df_forecast = model_forecast( model_name="AverageValueNaive", model_param_dict={'method': 'Mean'}, model_transform_dict={ 'fillna': 'mean', 'transformations': {'0': 'DifferencedTransformer'}, 'transformation_params': {'0': {}} }, df_train=df, forecast_length=12, frequency='infer', prediction_interval=0.9, no_negatives=False, # future_regressor_train=future_regressor_train2d, # future_regressor_forecast=future_regressor_forecast2d, random_seed=321, verbose=0, n_jobs="auto", ) df_forecast.forecast.head(5)
Вот и все! Вот репо пакета для подробного изучения
https://winedarksea.github.io/AutoTS/build/html/source/intro.html#autots
Вам понравилось? если да, дайте мне знать…….просмотрите другие мои статьи, включая «Генетический алгоритм с Tpot».
Гарантирую, вам они тоже понравятся. До скорых встреч с еще одной интересной темой.
Некоторые из моих альтернативных сайтов в Интернете: Facebook, Instagram, Udemy, Blogger, Issuu и другие.
Также доступно на Quora @ https://www.quora.com/profile/Rupak-Bob-Roy