Создайте свой собственный аргумент командной строки с помощью argparse и параметризуйте запуск модели прогноза пророка.

Что такое Аргпарс?

argparse — это библиотека Python, которая позволяет нам писать собственные командные строки, чтобы обеспечить гибкость нашего кода. Я лично использую его во многих своих сценариях, чтобы сделать мои конвейеры данных более гибкими и, например, для формирования моделей, которые находятся в скользящем временном окне. Мы увидим некоторые варианты использования после беглого просмотра библиотеки.

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

Во-первых, нам нужно импортировать библиотеку.

import argparse

затем мы определяем «Парсер»

parser = argparse.ArgumentParser()

Объект ArgumentParser будет содержать всю информацию, необходимую для преобразования командной строки в типы данных Python. Затем мы можем передать некоторый аргумент нашему объекту парсера.

Скажем так:

parser.add_argument(
    '--train_start',
    help='''Our algorithm deal with a moving window so we need to flexibilise our filename and so on it will be initialised with a flexible name like my_training_set_at_{train_start}''',
    required=True,
)

мы добавили в наш синтаксический анализатор аргумент под названием «train_start» и создали справочное сообщение, определяющее цель и использование аргумента или что-то еще, что вы хотите написать. Наконец, мы устанавливаем условие порядка, которое заставляет использовать этот аргумент, если False, его можно игнорировать.

Начнем с руководства: (https://docs.python.org/3/library/argparse.html)

Мы скопируем скрипт в файл .py:

Здесь мы определяем объект ArgumentParser, в котором будет храниться наш аргумент. Затем мы определяем два аргумента, один из которых имеет значение, а другой складывает их вместе, давайте подробно.

ArgumentParser.add_argument(имя или флаги...[, действие][, нарги][, const][, по умолчанию][, тип][, варианты][, обязательно][, справка][, метапеременная][, назначение])

мы сначала добавляем аргумент с:

  • имя или флаги: ‘целые числа
  • тип: тип данных здесь целое число
  • помощь : сообщение, которое помогает пользователю команды
  • метавара: изменяет отображаемое имя.
  • nargs : которые определяют количество аргументов командной строки, которые должны быть использованы. Операция'+'. Как и в случае '*', все присутствующие аргументы командной строки собираются в список. Кроме того, сообщение об ошибке будет создано, если не было хотя бы одного аргумента командной строки.

Во втором добавленном аргументе есть

  • имя или флаги: ‘--sum’
  • действие по умолчанию: вернуть максимум, если ничего не указано
  • const : действие суммирования списка целых чисел
  • a dest : имя атрибута, который будет добавлен к объекту, возвращаемому parse_args()
  • вспомогательное сообщение

Теперь мы сохраним его как «parser_exemple.py», затем откроем консоль и посмотрим на него:

тогда попробуй

Хорошо для «учебника», давайте теперь посмотрим на реальный пример.

Несколько примеров использования

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

https://towardsdatascience.com/pyspark-forecasting-with-pandas-udf-and-fb-prophet-e9d70f86d802

Это будет наша рабочая база:

Параметризируйте имя файла и путь к файлу

На самом деле это не очень сложно, мы определим наш парсер с несколькими аргументами в другом файле (это моя личная предвзятость: на самом деле можно делать все в одном и том же пространстве).

Таким образом, мы определим функцию, которая создаст наш ArgumentParser, добавит в него нужный аргумент и вернет анализируемый аргумент.

В основном мы импортируем нашу функцию и извлекаем аргумент, который мы помещаем в строку, когда мы запускаем нашу отправку искры.

затем запустите его через оболочку как задание python или запустите задание отправки с правильным аргументом, и все.

Эти базовые элементы необходимы для создания универсального конвейера и не требуют специальных навыков разработки.

Заключить

Это может показаться упрощением, но такой инструмент абсолютно необходим для гибкости конвейеров и облегчения жизни. Я очень часто использую его в своих проектах, особенно с воздушным потоком, чтобы программировать повторяющиеся прогнозы с течением времени — это будет предметом следующей статьи.

Спасибо за внимание, все самое необходимое вы найдете на моем github: https://github.com/AlexWarembourg/