Sklearn, Statsmodels, Tensorflow… Нейронные сети, регрессии — все сразу и очень просто…

Существует множество сложных алгоритмов, библиотек и идей для прогнозирования, но нужно время, чтобы опробовать их все и сравнить. Для этого у нас есть predictit.

Сейчас можно просто найти подходящий метод, импортировать его и готово. Но в дни изобилия, даже если нам не нужно разрабатывать собственные модели, требуется много времени, чтобы сравнить все возможные решения. У нас есть много библиотек с моделями машинного обучения, много библиотек для анализа данных и много для предварительной обработки данных. Но нам нужно соединить все фрагменты самостоятельно. Для таких задач есть библиотека/фреймворк. Это называется прогнозировать. Это опенсорс с исходниками здесь и с документацией.

Сравните более 20 моделей от Sklearn, Statsmodels, Tensorflow и других всего за пару минут, а также найдите оптимальные входные параметры? Да! Как это сделать? После

pip install predictit

Все что тебе нужно это

import predictit
import numpy
predictions = predictit.main.predict(np.random.randn(1, 100), predicts=3, plot=1)

Вот и все. Все работает (конечно, на сгенерированных тестовых данных). Просто введите данные, которые вы хотите спрогнозировать, и все готово... Вы можете выполнить настройку тремя способами: ввести параметры в функцию predict или использовать аргументы командной строки или отредактировать config.py значения. Источники данных могут быть в формате csv, dataframe, массиве numpy или SQL. Возможными выходными данными являются прогнозы в формате данных массива numpy или интерактивный график. Если вы не используете Python, используйте аргументы командной строки, как показано ниже, и запустите в терминале в папке. Используйте main.py — помощь для получения дополнительной информации о параметрах.

python main.py --function predict --data_source 'csv' --csv_path 'test_data/daily-minimum-temperatures.csv' --predicted_column 1

Результаты могут выглядеть следующим образом.

После наведения мышки вы увидите точные значения, названия моделей и ранг моделей по критерию ошибки. Он может работать с датой и временем, данные могут быть передискретизированы и предсказаны с заданной частотой.

Какие модели используются? Например…

  • AR (авторегрессионная модель)
  • АРИМА
  • Авторегрессионный линейный нейронный блок
  • Сопряженный градиент
  • Регрессия Байесовского хребта
  • Экстремальная обучающая машина

Программное обеспечение можно использовать как библиотеку Python или как автономный фреймворк, который вы можете редактировать любым удобным способом. Проверьте официальный файл readme и тесты для некоторых вариантов использования. Прочтите весь файл config.py, чтобы узнать все, что вы можете сделать.

Если вы хотите прогнозировать как профессионал, вы можете начать здесь…

import predictit

predictit.config.predicts = 12  # Create 12 predictions
predictit.config.data_source = 'csv'  # Define that we load data from CSV
predictit.config.csv_adress = r'E:\VSCODE\Diplomka\test_data\daily-minimum-temperatures.csv'  # Load CSV file with data
predictit.config.save_plot_adress = r'C:\Users\TruTonton\Documents\GitHub'  # Where to save HTML plot
predictit.config.datalength = 1000  # Consider only last 1000 data points
predictit.config.predicted_columns_names = 'Temp'  # Column name that we want to predict
predictit.config.optimizeit = 0  # Find or not best parameters for models
predictit.config.compareit = 6  # Visualize 6 best models
predictit.config.repeatit = 4  # Repeat calculation 4x times on shifted data to reduce chance
predictit.config.other_columns = 0  # Whether use other columns or not

# Chose models that will be computed
used_models = {
            "AR (Autoregression)": predictit.models.ar,

            "ARIMA (Autoregression integrated moving average)": predictit.models.arima,

            "Autoregressive Linear neural unit": predictit.models.autoreg_LNU,
            "Conjugate gradient": predictit.models.cg,

            "Extreme learning machine": predictit.models.regression,

            "Sklearn regression": predictit.models.regression,

           }

# Define parameters of models

n_steps_in = 50  # How many lagged values in models
output_shape = 'batch'  # Whether batch or one-step models

models_parameters = {

        "AR (Autoregression)": {"plot": 0, 'method': 'cmle', 'ic': 'aic', 'trend': 'nc', 'solver': 'lbfgs'},
        "ARIMA (Autoregression integrated moving average)": {"p": 12, "d": 0, "q": 1, "plot": 0, 'method': 'css', 'ic': 'aic', 'trend': 'nc', 'solver': 'nm', 'forecast_type': 'out_of_sample'},

        "Autoregressive Linear neural unit": {"plot": 0, "lags": n_steps_in, "mi": 1, "minormit": 0, "tlumenimi": 1},
        "Conjugate gradient": {"n_steps_in": 30, "epochs": 5, "constant": 1, "other_columns_lenght": None, "constant": None},

        "Extreme learning machine": {"n_steps_in": 20, "output_shape": 'one_step', "other_columns_lenght": None, "constant": None, "n_hidden": 20, "alpha": 0.3, "rbf_width": 0, "activation_func": 'selu'},

        "Sklearn regression": {"regressor": 'linear', "n_steps_in": n_steps_in, "output_shape": output_shape, "other_columns_lenght": None, "constant": None, "alpha": 0.0001, "n_iter": 100, "epsilon": 1.35, "alphas": [0.1, 0.5, 1], "gcv_mode": 'auto', "solver": 'auto'}

        }

predictions = predictit.main.predict()

Кроме графика и результатов печатается таблица ошибок моделей. Это может выглядеть так.

Как работает фреймворк? Это своего рода мягкая грубая сила. Результатом является матрица прогнозов, которые оцениваются с некоторым критерием ошибки. Он оценивается для большей длины данных и повторяется для переведенных данных для случайного удаления успеха. Анализируется итоговая n-мерная матрица и выбираются лучшие модели с соответствующей длиной данных и предварительной обработкой данных.

Вы можете выбрать, как стандартизировать данные, критерий ошибки или различные аргументы исходной модели. Вы можете использовать config.optimize, чтобы найти лучшие аргументы для заданных моделей, если вы настроили ограничения аргументов. Он основан на делении на интервалы, поиске лучшего интервала и повторном делении. Он может работать не только с целыми числами и числами с плавающей запятой, но и со списком на строках. Он создаст всевозможные комбинации и найдет наилучшую.

Если вы используете, например, модель регрессии Sklearn, существует регрессор параметров. Также есть функция парсинга всех регрессоров от Sklearn. Если вы используете оптимизацию, она найдет наиболее подходящую регрессию для ваших данных. Не нужно изучать различные алгоритмы, такие как лассо, или пассивно-агрессивные алгоритмы, просто используйте их.

Если вы хотите предсказать больше столбцов, используйте функцию predict_multiple. Если вам нужно позаботиться о производительности, определите собственные тестовые данные, запустите функцию compare_models, выберите несколько лучших моделей и установите config.lengths=0 и config.repeatit = 1. Если вы хотите увидеть все результаты и все ошибки, просто введите config.debug = 1.

Если вам это нравится и вы считаете, что это полезно, просто разветвите его на github. Пожертвования запрещены.