Создайте свой собственный аргумент командной строки с помощью 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/