Шаблон проектирования для конвейера анализа данных и разработки функцийPython

Программы на Python
Ответить
Anonymous
 Шаблон проектирования для конвейера анализа данных и разработки функций

Сообщение Anonymous »

Я знаю, что этот вопрос уже несколько раз задавался на этих форумах в прошлом, но у меня есть более общая версия, которая может быть применима и к чьим-либо проектам в будущем.
Короче: я создаю систему машинного обучения (с использованием Python, но выбор языка в данном случае не очень критичен), модель машинного обучения которой находится в конце конвейера происходящих действий:
  • Загрузка данных
  • Анализ данных
  • Разработка функций
  • Разработка функций (в логической скобке, отличной от предыдущего шага)
  • Проектирование функций (в другой логической группе по сравнению с предыдущими шагами)
... (больше шагов, таких как последние 3)

... p>
  • Данные передаются в модель машинного обучения
Каждый из вышеперечисленных шагов имеет свою собственную серию действий, которые он должен предпринять, чтобы создать правильный результат, который затем используется в качестве входных данных в следующем шаге и т. д. Эти подшаги, в свою очередь, могут либо быть полностью отделены друг от друга, либо некоторым из них могут потребоваться некоторые шаги внутри этого большого шага, которые необходимо выполнить в первую очередь, чтобы получить данные, которые будут использовать следующие шаги.
Сейчас дело в том, что мне нужно построить собственный конвейер, который позволит очень легко добавлять новые шаги в смесь (как большие, так и маленькие), не нарушая существующие.
На данный момент у меня есть концептуальное представление о том, как это может выглядеть с точки зрения архитектуры, как показано ниже:
Изображение

Глядя на этой архитектуре, я сразу думаю о цепочке Шаблон проектирования ответственности, который управляет БОЛЬШИМИ ШАГАМИ (1, 2, ..., n), и каждый из этих БОЛЬШИХ ШАГОВ имеет свою собственную небольшую версию цепочки ответственности, происходящую внутри их внутренностей, которые происходят независимо для шагов NO_REQ, а затем для шагов REQ (с циклическим повторением шагов REQ до тех пор, пока они все не будут выполнены). Имея общий интерфейс для выполнения логики внутри больших и малых шагов, он, вероятно, будет работать довольно аккуратно.
Тем не менее, мне интересно, есть ли лучший способ сделать это? Более того, что мне не нравится в цепочке ответственности, так это то, что для этого потребуется, чтобы человек добавлял новый БОЛЬШОЙ/МАЛЕНЬКИЙ шаг, всегда редактировал «внутренности» логики, настраивая пакеты шагов, чтобы вручную включать вновь добавленный шаг. Мне бы хотелось создать что-нибудь, что вместо этого просто сканировало бы папку, специфичную для шагов каждого БОЛЬШОГО ШАГА, и создавало бы список шагов NO_REQ и REQ самостоятельно (чтобы поддерживать принцип Open/Closed SOLID).Буду благодарен за любые идеи.

Подробнее здесь: https://stackoverflow.com/questions/637 ... g-pipeline
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»