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

Изображение предоставлено редактором.
# Введение
Проекты в области анализа данных обычно начинаются с исследовательских блокнотов на Python, но на каком-то этапе их необходимо перевести в производственные условия, что может быть непросто, если не спланировать все тщательно.
Фреймворк Kedro от QuantumBlack — это инструмент с открытым исходным кодом, который устраняет разрыв между экспериментальными блокнотами и готовыми к использованию в производстве решениями, переводя концепции, касающиеся структуры проекта, масштабируемости и воспроизводимости, на практическое применение.
В этой статье представлены и подробно рассмотрены основные функции Kedro, а также познакомят вас с его ключевыми концепциями для лучшего понимания перед тем, как углубиться в изучение этого фреймворка для решения реальных задач в области анализа данных.
# Начало работы с Kedro
Первый шаг для использования Kedro, конечно же, — это его установка в среду выполнения, в идеале — IDE; Kedro не может быть в полной мере использован в средах блокнотов. Откройте свою любимую IDE для Python, например, VS Code, и введите в терминале:
pip install kedro
Далее мы создаём новый проект Kedro, используя следующую команду:
кедро новый
Если команда сработает, вам будет задано несколько вопросов, в том числе о названии вашего проекта. Мы назовем его Churn Predictor. Если команда не сработает, это может быть связано с конфликтом, вызванным установкой нескольких версий Python. В этом случае наиболее чистым решением будет работа в виртуальной среде внутри вашей IDE. Вот несколько быстрых команд для создания виртуальной среды (игнорируйте их, если предыдущая команда для создания проекта Kedro уже сработала!):
python3.11 -m venv venv source venv/bin/activate pip install kedro kedro —version
Затем выберите в своей IDE следующий интерпретатор Python для дальнейшей работы: ./venv/bin/python.
На этом этапе, если всё прошло успешно, слева (в панели «ПРОВОДНИК» в VS Code) должна отображаться полная структура проекта внутри churn-predictor. В терминале перейдём в основную папку нашего проекта:
cd churn-predictor/
Пришло время познакомиться с основными функциями Kedro с помощью нашего нового проекта.
# Изучение основных элементов Кедро
Первым элементом, который мы представим — и создадим самостоятельно — будет каталог данных . В Kedro этот элемент отвечает за изоляцию определений данных от основного кода.
В структуре проекта уже создан пустой файл, который будет служить каталогом данных. Нам просто нужно найти его и заполнить содержимым. В обозревателе IDE, внутри проекта churn-predictor, перейдите в файл conf/base/catalog.yml, откройте его и добавьте следующее:
raw_customers: тип: pandas.CSVDataset путь к файлу: data/01_raw/customers.csv processed_features: тип: pandas.ParquetDataset путь к файлу: data/02_intermediate/features.parquet train_data: тип: pandas.ParquetDataset путь к файлу: data/02_intermediate/train.parquet test_data: тип: pandas.ParquetDataset путь к файлу: data/02_intermediate/test.parquet trained_model: тип: pickle.PickleDataset путь к файлу: data/06_models/churn_model.pkl
Вкратце, мы только что определили (пока не создали) пять наборов данных, каждый из которых имеет доступный ключ или имя: raw_customers, processed_features и так далее. Основной конвейер обработки данных, который мы создадим позже, должен иметь возможность ссылаться на эти наборы данных по их имени, тем самым абстрагируя и полностью изолируя операции ввода/вывода от кода.
Теперь нам понадобятся данные , которые будут служить первым набором данных в приведенных выше определениях каталога данных. В этом примере вы можете взять этот образец синтетически сгенерированных данных о клиентах, загрузить его и интегрировать в свой проект Kedro.
Далее переходим в папку data/01_raw, создаем новый файл с именем customers.csv и добавляем в него содержимое используемого нами примера набора данных. Проще всего посмотреть содержимое файла с исходными данными в репозитории GitHub, выделить все, скопировать и вставить в созданный файл в проекте Kedro.
Теперь мы создадим конвейер Kedro, который будет описывать рабочий процесс обработки данных, применяемый к нашему исходному набору данных. В терминале введите:
kedro pipeline create data_processing
Эта команда создаст несколько файлов Python в папке src/churn_predictor/pipelines/data_processing/. Теперь откроем файл nodes.py и вставим следующий код:
import pandas as pd from typing import Tuple def engineer_features(raw_df: pd.DataFrame) -> pd.DataFrame: «»»Создание производных признаков для моделирования.»»» df = raw_df.copy() df['tenure_months'] = df['account_age_days'] / 30 df['avg_monthly_spend'] = df['total_spend'] / df['tenure_months'] df['calls_per_month'] = df['support_calls'] / df['tenure_months'] return df def split_data(df: pd.DataFrame, test_fraction: float) -> Tuple[pd.DataFrame, pd.DataFrame]: «»»Разделение данных на обучающую и тестовую выборки.»»» train = df.sample(frac=1-test_fraction, random_state=42) test = df.drop(train.index) return train, test
Две только что определенные нами функции выступают в качестве узлов , которые могут применять преобразования к набору данных в рамках воспроизводимого модульного рабочего процесса. Первая функция применяет простую, наглядную инженерию признаков, создавая несколько производных признаков из исходных. Вторая же функция определяет разделение набора данных на обучающую и тестовую выборки, например, для дальнейшего моделирования в машинном обучении.
В той же подпапке находится ещё один файл Python: pipeline.py. Давайте откроем его и добавим следующее:
from kedro.pipeline import Pipeline, node from .nodes import engineer_features, split_data def create_pipeline(**kwargs) -> Pipeline: return Pipeline([ node( func=engineer_features, inputs=»raw_customers», outputs=»processed_features», name=»feature_engineering» ), node( func=split_data, inputs=[«processed_features», «params:test_fraction»], outputs=[«train_data», «test_data»], name=»split_dataset» ) ])
Часть волшебства происходит здесь: обратите внимание на названия, используемые для входных и выходных данных узлов в конвейере. Подобно деталям конструктора Lego, здесь мы можем гибко ссылаться на различные определения наборов данных в нашем каталоге данных , начиная, конечно же, с набора данных, содержащего необработанные данные о клиентах, который мы создали ранее.
Осталось выполнить всего пару последних шагов по настройке, чтобы всё заработало. Доля тестовых данных для узла разделения определена как параметр, который необходимо передать. В Kedro мы определяем эти «внешние» параметры в коде, добавляя их в файл conf/base/parameters.yml. Давайте добавим следующее в этот пока пустой файл конфигурации:
test_fraction: 0.2
Кроме того, по умолчанию проект Kedro неявно импортирует модули из библиотеки PySpark, которые нам, по сути, не понадобятся. В файле settings.py (внутри подкаталога «src») мы можем отключить это, закомментировав и изменив первые несколько строк кода следующим образом:
# Созданы экземпляры хуков проекта. # from churn_predictor.hooks import SparkHooks # noqa: E402 # Хуки выполняются в порядке «последний вошел — первый вышел» (LIFO). HOOKS = ()
Сохраните все изменения, убедитесь, что pandas установлен в вашей среде выполнения, и приготовьтесь запустить проект из терминала IDE:
кедро рун
В зависимости от установленной версии Kedro, это может сработать, а может и нет с первого раза. Если не сработает и вы получите ошибку DatasetError, вероятным решением будет установить kedro-datasets или pyarrow с помощью pip (или, возможно, оба варианта!), а затем попробовать запустить снова.
Надеюсь, вы получите множество информационных сообщений, сообщающих о различных этапах обработки данных. Это хороший знак. В каталоге data/02_intermediate вы можете найти несколько файлов parquet, содержащих результаты обработки данных.
В заключение, вы можете дополнительно установить kedro-viz с помощью pip и запустить kedro viz, чтобы открыть в браузере интерактивный график вашего эффектного рабочего процесса, как показано ниже:

# Завершение
Более подробное изучение этого инструмента мы оставим для возможной будущей статьи. Если вы дошли до этого места, значит, вы смогли создать свой первый проект на Kedro и узнать о его основных компонентах и функциях, а также понять, как они взаимодействуют на протяжении всего процесса.
Отличная работа!
Иван Паломарес Карраскоса — лидер, писатель, спикер и консультант в области искусственного интеллекта, машинного обучения, глубокого обучения и магистратуры. Он обучает и направляет других в применении ИИ в реальном мире.
Источник: www.kdnuggets.com






















