Рубрики
Без рубрики

4 инструменты для повышения воспроизводимости науки данных

В проекте по науке о данных, как правило, важно иметь воспроизводимость и минимизировать ручную работу …. Тегин с наукой о данных, машинном обучении, инструментах, Python.

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

Пипенв

До пипенв Основным способом создания проекта будет активирование виртуальной среды, поместить все необходимые пакеты в Требования.txt И это также может понести некоторую ручную работу, как PIP FREEZE> Требования.txt Принесет много дополнительных пакетов.

Элегантная вещь о пипенв , по его собственным словам, состоит в том, что он «автоматически создает и управляет виртуальным концом для ваших проектов, а также добавляет/удаляет пакеты из вашего PipFile при установке/удалении пакетов». Это похоже на NPM в мире Python.

Так что вместо обычного PIP установка Теперь можно было бы использовать Pipenv Установка В виртуальных средах, и больше нет необходимости вручную поддерживать файл reditions.txt.

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

[packages]
pandas = "*"
sklearn = "*"

Примечание: это не следует путать с Pyenv которая является еще одной библиотекой для переключения между различными версиями Python.

Makefile

Если в проекте есть несколько повторяющихся шагов, таких как настройка, формат, тестирование, линт, развертывание, то Makefile одновременно сэкономит время для владельца проекта и сделает его удобным для пользователей.

Образец фрагмента Makefile в сочетании с вышеупомянутым Pipenv будет выглядеть так

setup:
    pip install pipenv
    pipenv install
    pipenv shell
format:
    black *.py
    pylint --disable=R,C sample 
all: setup format

И запустив одну строку сценария сделать все , можно сделать все в Makefile-настроить виртуальную среду, установить все зависимости, автоматическое код и оборвать скрипт, чтобы показать любые неиспользованные библиотеки/переменные и т. Д.

config.yml + argparse

Иногда кто -то хочет провести несколько экспериментов в проекте машинного обучения или провести один и тот же анализ на различных наборах данных. В этом случае было бы хорошо сохранить различные конфигурации для каждого из входов, а не перезаписать их. Можно достичь этого, имея папку конфигурации с несколькими config.yml, каждая из которых содержит набор входов. И в основном сценарии можно использовать Argparse Для загрузки config.yml в качестве словаря, а затем обратиться к конкретным параметрам в конфигурации

parser = argparse.ArgumentParse(description=__doc__)
parser.add_argument("-f", "--config_file",
    default = "configs/config1.yml", help="Configuration file to load.")
ARGS = parser.parse_args()
with open(ARGS.config_file, 'r') as f:
    config = yaml.full_load(f)
print(f"Loaded configuration file {ARGS.config_file}")

Таким образом, каждая из настройки сохраняется, а не перезаписана, и становится легче отслеживать результат.

бумажная фабрика

Если вышеупомянутая настройка помогает повысить производительность и воспроизводимость для сценариев Python, то эта библиотека предназначена для ноутбуков iPython, которые могут использоваться на начальных этапах проекта из -за его интерактивного характера. Определяя все переменные/параметры в ячейке в iPynb и создав Runner.ipynb, можно указать новые параметры и генерировать новый ноутбук для каждого набора этих новых параметров.

Можно сгенерировать новый блокнот, подобный этому

import papermill as pm
pm.execute_notebook(
   'path/to/input.ipynb',
   'path/to/output.ipynb',
   parameters=dict(alpha=0.6, ratio=0.1)
)

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

В целом я нахожу эти инструменты полезными для поддержания зависимостей, отслеживания входов и сокращения повторения.

Изображение предоставлено: неспособный

Оригинал: “https://dev.to/hannahyan/4-tools-to-boost-data-science-reproducibility-4j6b”