🗒Нужно логировать события Python-приложения? Есть специальный модуль!
Python-библиотека logging (https://docs.python.org/3/library/logging.html) определяет функции и классы, реализующие гибкую систему регистрации событий для приложений и библиотек. Главное преимущество API-интерфейса логироавния, предоставляемого модулем этой стандартной библиотеки, - возможность регистрации всех событий. Поэтому лог Python-приложения может включать собственные сообщения, интегрированные с сообщениями из сторонних модулей.
Модуль состоит из следующих классов:
• Регистраторы предоставляют интерфейс, который непосредственно использует код приложения
• Обработчики отправляют записи журнала (созданные регистраторами) в место назначения
• Фильтры обеспечивают более точное определение записей журнала для вывода
• Форматеры определяют расположение записей журнала в конечном выводе.
Уровень лога показывает его серьезность, т.е. насколько важно отдельное сообщение. В базовом уровне логирования DEBUG имеет самый низкий приоритет, а CRITICAL — самый высокий. Если определить регистратор чувствительным к сообщениям журнала, начиная с уровня DEBUG, то все все наши зарегистрированные сообщения будут отображаться, поскольку DEBUG является самым низким уровнем. Можно настроить отображение только событий с типом ERROR и CRITICAL.
Пример кода: https://medium.com/@DavidElvis/logging-for-ml-systems-1b055005c2c2
Python-библиотека logging (https://docs.python.org/3/library/logging.html) определяет функции и классы, реализующие гибкую систему регистрации событий для приложений и библиотек. Главное преимущество API-интерфейса логироавния, предоставляемого модулем этой стандартной библиотеки, - возможность регистрации всех событий. Поэтому лог Python-приложения может включать собственные сообщения, интегрированные с сообщениями из сторонних модулей.
Модуль состоит из следующих классов:
• Регистраторы предоставляют интерфейс, который непосредственно использует код приложения
• Обработчики отправляют записи журнала (созданные регистраторами) в место назначения
• Фильтры обеспечивают более точное определение записей журнала для вывода
• Форматеры определяют расположение записей журнала в конечном выводе.
Уровень лога показывает его серьезность, т.е. насколько важно отдельное сообщение. В базовом уровне логирования DEBUG имеет самый низкий приоритет, а CRITICAL — самый высокий. Если определить регистратор чувствительным к сообщениям журнала, начиная с уровня DEBUG, то все все наши зарегистрированные сообщения будут отображаться, поскольку DEBUG является самым низким уровнем. Можно настроить отображение только событий с типом ERROR и CRITICAL.
Пример кода: https://medium.com/@DavidElvis/logging-for-ml-systems-1b055005c2c2
Medium
Logging for ML Systems
Logging is the process of tracking and recording key events that occur in our applications. We want to log events so we can use them to…
👍2
🍁ТОП-10 DS-событий сентября
Скоро начинается очередной учебный год, а также новый сезон конференций, митапов и прочих DS-тусовок:
• 6 сентября в 18:30 – митап Авито для продуктовых и дата-аналитиков: как оптимизировать сроки доставки и подобрать метрику, которая устроит всю команду, кейс про изменение правил купли-продажи автомобилей через Авито Аукцион. https://avitotech.timepad.ru/event/2136079/ Москва ул. Лесная, 7
• 9-10 сентября - Конференция CrossConf https://crossconf.com/ Казань, Иннополис,
• 18 сентября - HackConf 2022 – большая встреча разработчиков, безопасников, сисадминов из IT сообществ с докладами, холиварами и прочими классическими тематическими развлечениями. Есть секция ML/AI/. https://hackconf.ru/. Санкт-Петербург, пл. Победы, д. 1, Park Inn Пулковская
• 22 сентября – CDI Conf 2022 - конференция IT-компании HFLabs посвящена трендам в работе с клиентскими данными: обмен обезличенными данными, управление клиентскими согласиями, новые инструменты маркетинга. Участие бесплатное, необходима предварительная регистрация. https://cdiconf.ru/ Москва, Цветной бульвар, д. 15 стр. 1, Пространство Omega Rooftop
• 22-23 сентября – Saint HighLoad++ 2022 - профессиональная конференция разработчиков высоконагруженных систем https://highload.ru/spb/2022 Санкт-Петербург, DESIGN DISTRICT DAA
• 23 сентября – Yandex Scale - большая конференция Yandex Cloud, где бизнес и технологии говорят на одном языке https://scale.yandex.ru/. Москва, в кинотеатре Октябрь, ул. Новый Арбат, 24
• 25-27 сентября – ежегодный ИТ-конгресс "Подмосковные вечера 2022" https://pv2022.4cio.ru/ Москва, Подмосковье, СПА-ОТЕЛЬ СВЕЖИЙ ВЕТЕР
• 26-27 сентября - Saint TeamLead Conf 2022 https://teamleadconf.ru/spb/2022 Санкт-Петербург, DESIGN DISTRICT DAA
• 29-30 сентября - форум "Marketing Data Analytics". https://interforums.ru/mda22/home Москва, Холидей Инн Москва Сущевский
• 29 сентября - конференция "Искусственный интеллект: от пилота к промышленной эксплуатации" от CNews https://events.cnews.ru/events/iskusstvennyi_intellekt_2022_2022-09-29.shtml
Скоро начинается очередной учебный год, а также новый сезон конференций, митапов и прочих DS-тусовок:
• 6 сентября в 18:30 – митап Авито для продуктовых и дата-аналитиков: как оптимизировать сроки доставки и подобрать метрику, которая устроит всю команду, кейс про изменение правил купли-продажи автомобилей через Авито Аукцион. https://avitotech.timepad.ru/event/2136079/ Москва ул. Лесная, 7
• 9-10 сентября - Конференция CrossConf https://crossconf.com/ Казань, Иннополис,
• 18 сентября - HackConf 2022 – большая встреча разработчиков, безопасников, сисадминов из IT сообществ с докладами, холиварами и прочими классическими тематическими развлечениями. Есть секция ML/AI/. https://hackconf.ru/. Санкт-Петербург, пл. Победы, д. 1, Park Inn Пулковская
• 22 сентября – CDI Conf 2022 - конференция IT-компании HFLabs посвящена трендам в работе с клиентскими данными: обмен обезличенными данными, управление клиентскими согласиями, новые инструменты маркетинга. Участие бесплатное, необходима предварительная регистрация. https://cdiconf.ru/ Москва, Цветной бульвар, д. 15 стр. 1, Пространство Omega Rooftop
• 22-23 сентября – Saint HighLoad++ 2022 - профессиональная конференция разработчиков высоконагруженных систем https://highload.ru/spb/2022 Санкт-Петербург, DESIGN DISTRICT DAA
• 23 сентября – Yandex Scale - большая конференция Yandex Cloud, где бизнес и технологии говорят на одном языке https://scale.yandex.ru/. Москва, в кинотеатре Октябрь, ул. Новый Арбат, 24
• 25-27 сентября – ежегодный ИТ-конгресс "Подмосковные вечера 2022" https://pv2022.4cio.ru/ Москва, Подмосковье, СПА-ОТЕЛЬ СВЕЖИЙ ВЕТЕР
• 26-27 сентября - Saint TeamLead Conf 2022 https://teamleadconf.ru/spb/2022 Санкт-Петербург, DESIGN DISTRICT DAA
• 29-30 сентября - форум "Marketing Data Analytics". https://interforums.ru/mda22/home Москва, Холидей Инн Москва Сущевский
• 29 сентября - конференция "Искусственный интеллект: от пилота к промышленной эксплуатации" от CNews https://events.cnews.ru/events/iskusstvennyi_intellekt_2022_2022-09-29.shtml
avitotech.timepad.ru
Avito Analytics meetup #7 / События на TimePad.ru
6 сентября в 18:30 в московском офисе Авито пройдёт митап для продуктовых и дата-аналитиков. Спикеры из Авито и Тинькофф расскажут, как оптимизировать сроки доставки и подобрать метрику, которая устроит всю команду. А ещё на митапе будет представлен кейс…
🔥3👍1
Forwarded from Аналитика больших данных (Very Big Anal)
Грустно и точка: В России разрабатывается нейросеть для выявления депрессии
В России делают нейросеть для поиска депрессии. Исследователи утверждают, что им удалось выявить маркеры депрессивного расстройства у людей и удалось обучить ИИ выявлять их.
Первый в России информационный продукт поможет выявить депрессию на основе речевого анализа. Удалось собрать достаточно данных, чтобы подтвердить, что для пациентов с депрессивными симптомами характерно большое число специфических речевых особенностей. Речь идет о скорости речи, интонационной окраске, паузах между словами и других параметров. Машинное обучение позволит алгоритму отбирать необходимые параметры на основе больших выборок данных.
Разработчики обещают мобильное приложение, которое будет анализировать речь пользователя и в случае чего посоветует обратиться к специалисту.
@verybiganal
В России делают нейросеть для поиска депрессии. Исследователи утверждают, что им удалось выявить маркеры депрессивного расстройства у людей и удалось обучить ИИ выявлять их.
Первый в России информационный продукт поможет выявить депрессию на основе речевого анализа. Удалось собрать достаточно данных, чтобы подтвердить, что для пациентов с депрессивными симптомами характерно большое число специфических речевых особенностей. Речь идет о скорости речи, интонационной окраске, паузах между словами и других параметров. Машинное обучение позволит алгоритму отбирать необходимые параметры на основе больших выборок данных.
Разработчики обещают мобильное приложение, которое будет анализировать речь пользователя и в случае чего посоветует обратиться к специалисту.
@verybiganal
🤔1
🖕🏻3 повода использовать оператор присваивания в Python и пара причин этого не делать
Использование оператора присваивания значений, обозначаемого :=, дает следующие преимущества:
• Сокращение количества вызовов функций, например, result = [y := func(x), y**2, y**3] вместо result = [func(x), func(x)**2, func(x)**3]
• Сокращение вложенных условных выражений, например, при использовании сопоставления регулярных выражений за счет удаления вложенных условий if
• Упрощение циклов while, например, при построчном чтении файлов или при получении данных из сокета. Вместо фиктивного бесконечного цикла while с делегированием потока управления оператору break можно использовать оператор присваивания для переназначения значения команды, а затем применить его в условном цикле while в той же строке, что сделает код намного короче.
Разумеется, есть ограничения для использования этого оператора. Например, не рекомендуется применять его с with, т.к. при работе с ContextManager() контекст привязывается к возвращаемому значению, т.е. к результату выполнения этого метода. Это может создать трудности при отладке.
Кроме того, присваивание следует заключать в круглые скобки, чтобы убедиться, что результат присваивается переменной, иначе вычисление может быть выполнено в другом порядке.
Примеры кода: https://betterprogramming.pub/should-you-be-using-pythons-walrus-operator-yes-and-here-s-why-36297be16907
Использование оператора присваивания значений, обозначаемого :=, дает следующие преимущества:
• Сокращение количества вызовов функций, например, result = [y := func(x), y**2, y**3] вместо result = [func(x), func(x)**2, func(x)**3]
• Сокращение вложенных условных выражений, например, при использовании сопоставления регулярных выражений за счет удаления вложенных условий if
• Упрощение циклов while, например, при построчном чтении файлов или при получении данных из сокета. Вместо фиктивного бесконечного цикла while с делегированием потока управления оператору break можно использовать оператор присваивания для переназначения значения команды, а затем применить его в условном цикле while в той же строке, что сделает код намного короче.
Разумеется, есть ограничения для использования этого оператора. Например, не рекомендуется применять его с with, т.к. при работе с ContextManager() контекст привязывается к возвращаемому значению, т.е. к результату выполнения этого метода. Это может создать трудности при отладке.
Кроме того, присваивание следует заключать в круглые скобки, чтобы убедиться, что результат присваивается переменной, иначе вычисление может быть выполнено в другом порядке.
Примеры кода: https://betterprogramming.pub/should-you-be-using-pythons-walrus-operator-yes-and-here-s-why-36297be16907
Medium
Should You Be Using Python’s Walrus Operator? (Yes. And Here’s Why)
Python’s controversial assignment expression — also known as walrus operator — can improve your code, and it’s time you start using it!
👍8
Как организовать потоковую обработку данных. Часть 2!
В первой части Евгений Ненахов из центра Big Data МТС Digital рассказал об основных компонентах методологии, а сейчас — о том, как ими пользоваться.
Из новой статьи вы узнаете:
➖ где хранить конфигурации
➖ как настроить Kafka и Spark Streaming
➖ как снизить нагрузку на GC и многое другое
О том, как создать универсальный инструмент потоковой обработки данных и построить с его помощью мощную систему стриминга, способную обрабатывать 7 млн событий в пике, читайте в блоге МТС на Хабре.
В первой части Евгений Ненахов из центра Big Data МТС Digital рассказал об основных компонентах методологии, а сейчас — о том, как ими пользоваться.
Из новой статьи вы узнаете:
➖ где хранить конфигурации
➖ как настроить Kafka и Spark Streaming
➖ как снизить нагрузку на GC и многое другое
О том, как создать универсальный инструмент потоковой обработки данных и построить с его помощью мощную систему стриминга, способную обрабатывать 7 млн событий в пике, читайте в блоге МТС на Хабре.
👍3
🚀Быстро нужен наглядный дэшборд? Попробуй Panel!
Каждый дата-аналитик знает, что на дэшборде надо обобщить наиболее важные ключевые показатели для ЛПР. С одной стороны, дэшборд представляет собой простую HTML-страницу для визуализации графиков и текста. С другой стороны, сделать его наглядным и не перегруженным, не так-то просто. Более того, далеко не каждый BI-специалист имеет дизайнерский вкус и навыки работы с HTML-компонентами и их взаимодействия в Javascript. А вот Python дата-специалисты используют активно.
Создать дэшборд только с Python поможет Panel — Python-библиотека с открытым исходным кодом, которая позволяет создавать настраиваемые интерактивные веб-приложения и информационные панели, подключая определяемые пользователем виджеты к графикам, изображениям, таблицам или тексту. С ней не нужно знать, как создавать HTML-компоненты и их взаимодействие в Javascript, потому что пишется на Python.
Panel поддерживает почти все библиотеки построения графиков, работает так же хорошо в блокноте Jupyter, как и на отдельном защищенном веб-сервере. При этом Panel использует один и тот же код, поддерживает как Python, так и статический HTML/JavaScript, экспортирует приложения и может использоваться для разработки многофункциональных интерактивных приложений без привязки кода, специфичного для предметной области, к какому-либо конкретному графическому интерфейсу или веб-инструментам.
Panel упрощает:
• использование Python-инструментов анализа и визуализации данных:
• разработку в IDE или среде ноутбука с простым развертыванием приложения;
• быстрое создание прототипов приложений и дэшбордов, предлагая отточенные шаблоны для окончательного развертывания;
• глубокую интерактивность, передавая взаимодействие и события на стороне клиента в Python;
• потоковую передачу больших и малых данных во внешний интерфейс;
• аутентификацию в приложении с помощью встроенных поставщиков OAuth.
Пример использования: https://medium.com/@jairotunior/advanced-interactive-dashboards-in-python-cc2927dcde07
Каждый дата-аналитик знает, что на дэшборде надо обобщить наиболее важные ключевые показатели для ЛПР. С одной стороны, дэшборд представляет собой простую HTML-страницу для визуализации графиков и текста. С другой стороны, сделать его наглядным и не перегруженным, не так-то просто. Более того, далеко не каждый BI-специалист имеет дизайнерский вкус и навыки работы с HTML-компонентами и их взаимодействия в Javascript. А вот Python дата-специалисты используют активно.
Создать дэшборд только с Python поможет Panel — Python-библиотека с открытым исходным кодом, которая позволяет создавать настраиваемые интерактивные веб-приложения и информационные панели, подключая определяемые пользователем виджеты к графикам, изображениям, таблицам или тексту. С ней не нужно знать, как создавать HTML-компоненты и их взаимодействие в Javascript, потому что пишется на Python.
Panel поддерживает почти все библиотеки построения графиков, работает так же хорошо в блокноте Jupyter, как и на отдельном защищенном веб-сервере. При этом Panel использует один и тот же код, поддерживает как Python, так и статический HTML/JavaScript, экспортирует приложения и может использоваться для разработки многофункциональных интерактивных приложений без привязки кода, специфичного для предметной области, к какому-либо конкретному графическому интерфейсу или веб-инструментам.
Panel упрощает:
• использование Python-инструментов анализа и визуализации данных:
• разработку в IDE или среде ноутбука с простым развертыванием приложения;
• быстрое создание прототипов приложений и дэшбордов, предлагая отточенные шаблоны для окончательного развертывания;
• глубокую интерактивность, передавая взаимодействие и события на стороне клиента в Python;
• потоковую передачу больших и малых данных во внешний интерфейс;
• аутентификацию в приложении с помощью встроенных поставщиков OAuth.
Пример использования: https://medium.com/@jairotunior/advanced-interactive-dashboards-in-python-cc2927dcde07
Medium
Advanced Interactive Dashboards in Python
Connect differents APIs to create an advanced interactive dashboard for analysis.
👍8
🤔PandaSQL: Python-комбо для Data Scientis’а
SQL и Pandas – самые популярные инструменты дата-аналитика для управления табличными данными, их обработки и анализа. Их можно использовать по отдельности, а можно сразу в Python-пакете PandaSQL, который предоставляет возможности синтаксиса SQL в среде Python. PandaSQL позволяет запрашивать датафреймы Pandas средствами синтаксиса SQL.
PandaSQL – отличный инструмент для тех, кто знает SQL и не знаком с синтаксисом Python, который требуется Pandas. Например, в Pandas фильтрация датафрейма или группировка по определенному столбцу при агрегировании нескольких столбцов может показаться запутанной, в отличии от SQL. Однако эта простота использования SQL в Pandas сопряжена с огромными затратами избыточного времени выполнения. Например, чтобы рассчитать количество строк, PandaSQL требует почти в 100 раз больше времени выполнения, чем Pandas.
Кроме того, Python уже имеет множество имен, которые зарезервированы как ключевые слова, такие как for, while, in, if, else, elif, import, as и т. д. SQL вводит дополнительные ограничения на имена переменных за счет собственных ключевых слов: create, like, where, having.
Таким образом, с PandaSQL имеет смысл познакомиться, но этот интересный инструмент не подойдет для промышленного конвейера аналитики данных.
Примеры использования и сравнения времени выполнения: https://towardsdatascience.com/the-downsides-of-pandasql-that-no-one-talks-about-9b63c664bef4
SQL и Pandas – самые популярные инструменты дата-аналитика для управления табличными данными, их обработки и анализа. Их можно использовать по отдельности, а можно сразу в Python-пакете PandaSQL, который предоставляет возможности синтаксиса SQL в среде Python. PandaSQL позволяет запрашивать датафреймы Pandas средствами синтаксиса SQL.
PandaSQL – отличный инструмент для тех, кто знает SQL и не знаком с синтаксисом Python, который требуется Pandas. Например, в Pandas фильтрация датафрейма или группировка по определенному столбцу при агрегировании нескольких столбцов может показаться запутанной, в отличии от SQL. Однако эта простота использования SQL в Pandas сопряжена с огромными затратами избыточного времени выполнения. Например, чтобы рассчитать количество строк, PandaSQL требует почти в 100 раз больше времени выполнения, чем Pandas.
Кроме того, Python уже имеет множество имен, которые зарезервированы как ключевые слова, такие как for, while, in, if, else, elif, import, as и т. д. SQL вводит дополнительные ограничения на имена переменных за счет собственных ключевых слов: create, like, where, having.
Таким образом, с PandaSQL имеет смысл познакомиться, но этот интересный инструмент не подойдет для промышленного конвейера аналитики данных.
Примеры использования и сравнения времени выполнения: https://towardsdatascience.com/the-downsides-of-pandasql-that-no-one-talks-about-9b63c664bef4
PyPI
pandasql
sqldf for pandas
👍11
#тест
Какой статистический термин является расширением дисперсии и описывает движение переменных относительно друг друга?
Какой статистический термин является расширением дисперсии и описывает движение переменных относительно друг друга?
Anonymous Quiz
33%
Корреляция
56%
Ковариация
3%
Интерпретация
8%
Дельта
👍8🤯4
👀Наглядный ETL с VDP
VDP (Visual Data Preparation) — это инструмент ETL визуальных данных с открытым исходным кодом для оптимизации сквозного конвейера обработки визуальных данных. Он включает извлечение неструктурированных визуальных данных из предварительно созданных источников данных, таких как облачное/локальное хранилище или устройства IoT, их преобразование в анализируемые структурированные данные с помощью моделей Vision AI и загрузку обработанных данные в хранилища, приложения или другие места назначения.
VDP оптимизирует сквозной конвейер обработки визуальных данных, позволяя разработчикам не создавать свои собственные коннекторы, платформы обслуживания моделей и инструменты автоматизации ELT. С VDP интеграция визуальных данных становится проще и быстрее. VDP выпущена под лицензией Apache 2.0, доступна для локального и облачного развертывания в Kubernetes. VDP построен с точки зрения управления данными, чтобы оптимизировать сквозной поток визуальных данных с помощью компонента преобразования, который может гибко импортировать модели Vision AI из разных источников. Построение ETL-конвейера становится похоже на сборку из готовых блоков, как в детском конструкторе. А высокая производительность обеспечивается бэкэндом на Go с Triton Inference Server с мощными архитектурами графических процессоров NVIDIA, поддерживающими TensorRT, PyTorch, TensorFlow, ONNX и Python.
VDP также соответствует идеям MLOps, позволяя импортировать и развертывать ML/DL-модели одним щелчком мыши из GitHub, Hugging Face или облачного хранилища, управляемого инструментами контроля версий, такими как DVC или ArtiVC. Стандартизированные форматы вывода CV Task упрощают работу с хранилищем данных, а готовые ETL-коннекторы обеспечивают расширенный доступ к данным благодаря интеграции с Airbyte.
VDP поддерживает различные сценарии исполььзования: синхронный режим для логических выводов в реальном времени и асинхронный - для рабочей нагрузки по запросу. Масштабируемый микросервисный дизайн на основе API удобен для разработчика за счет бесшовной интеграции с современным стеком данных. NoCode/Low Code интерфейсы снижают порог входа в технологию, предоставляя Data Scientist’у и аналитику независимость от инженерии данных.
https://github.com/instill-ai/vdp
VDP (Visual Data Preparation) — это инструмент ETL визуальных данных с открытым исходным кодом для оптимизации сквозного конвейера обработки визуальных данных. Он включает извлечение неструктурированных визуальных данных из предварительно созданных источников данных, таких как облачное/локальное хранилище или устройства IoT, их преобразование в анализируемые структурированные данные с помощью моделей Vision AI и загрузку обработанных данные в хранилища, приложения или другие места назначения.
VDP оптимизирует сквозной конвейер обработки визуальных данных, позволяя разработчикам не создавать свои собственные коннекторы, платформы обслуживания моделей и инструменты автоматизации ELT. С VDP интеграция визуальных данных становится проще и быстрее. VDP выпущена под лицензией Apache 2.0, доступна для локального и облачного развертывания в Kubernetes. VDP построен с точки зрения управления данными, чтобы оптимизировать сквозной поток визуальных данных с помощью компонента преобразования, который может гибко импортировать модели Vision AI из разных источников. Построение ETL-конвейера становится похоже на сборку из готовых блоков, как в детском конструкторе. А высокая производительность обеспечивается бэкэндом на Go с Triton Inference Server с мощными архитектурами графических процессоров NVIDIA, поддерживающими TensorRT, PyTorch, TensorFlow, ONNX и Python.
VDP также соответствует идеям MLOps, позволяя импортировать и развертывать ML/DL-модели одним щелчком мыши из GitHub, Hugging Face или облачного хранилища, управляемого инструментами контроля версий, такими как DVC или ArtiVC. Стандартизированные форматы вывода CV Task упрощают работу с хранилищем данных, а готовые ETL-коннекторы обеспечивают расширенный доступ к данным благодаря интеграции с Airbyte.
VDP поддерживает различные сценарии исполььзования: синхронный режим для логических выводов в реальном времени и асинхронный - для рабочей нагрузки по запросу. Масштабируемый микросервисный дизайн на основе API удобен для разработчика за счет бесшовной интеграции с современным стеком данных. NoCode/Low Code интерфейсы снижают порог входа в технологию, предоставляя Data Scientist’у и аналитику независимость от инженерии данных.
https://github.com/instill-ai/vdp
GitHub
GitHub - instill-ai/instill-core: 🔮 Instill Core is a full-stack AI infrastructure tool for data, model and pipeline orchestration…
🔮 Instill Core is a full-stack AI infrastructure tool for data, model and pipeline orchestration, designed to streamline every aspect of building versatile AI-first applications - instill-ai/instil...
👍6
🥒7 причин не использовать Pickle для сохранения ML-моделей
Data Scientist часто пишет код в блокнотах типа Jupyter Notebook, Google Colab или специализированных IDE. Чтобы перенести этот код в производственную среду, его надо преобразовать в легковесный формат обмена, сжатый и сериализованный, который не зависит от языка разработки. Одним из таких форматов является Pickle – бинарный вариант Python-объекта для сериализации и десериализации его структуры, преобразующий иерархию объектов Python в поток байтов и наоборот. Формат Pickle довольно популярен за счет своей легковесности. Он не требует схемы данных и весьма распространен, но имеет ряд недостатков:
• Небезопасно. Можно распаковывать только те pickle-файлы, которым вы доверяете. Злоумышленник может создать вредоносные данные, которые будут выполнять произвольный код во время распаковки. Смягчить этот риск можно через подписи данных с помощью hmac, чтобы убедиться, что они не были подделаны. Ненадежность связана не с тем, что Pickle содержат код, а с тем, что они создают объекты, вызывая конструкторы, упомянутые в файле. Любой вызываемый объект может использоваться вместо имени класса для создания объектов. Вредоносный код будут использовать другие вызываемые объекты Python в качестве конструкторов.
• Рассогласование кода. Если код изменится за время между упаковкой ML-модели в Pickle-файл и моментом его использования, объекты могут не соответствовать коду. Они по-прежнему будут иметь структуру, созданную старым кодом, но пытаться работать с его новой версией. Например, если атрибут был добавлен после создания Pickle, объекты из Pickle-файла не будут иметь этого атрибута. А если в новой версии кода предполагается его обработка, возникнут проблемы.
• Неявная сериализация. С одной стороны, формат Pickle удобен тем, что он сериализует любую структуру Python-объекта. Но при этом нет возможности указать предпочтения по сериализации того или иного типа даны. Pickle сериализует все в объектах, даже данные, которые не нужно сериализовать. Но пропустить сериализацию того или иного атрибута в Pickle нет возможности. Если объект содержит атрибут, который нельзя упаковать, например, объект с открытым файлом, Pickle не пропустит его, настаивая на попытке его упаковать, а затем выдаст исключение.
• Отсутствие инициализации. Pickle хранит всю структуру объектов. Когда модуль Pickle воссоздает объекты, он не вызывает метод init, поскольку объект уже создан, считая инициализацию вызванной, когда объект был впервые создан в процессе создания Pickle-файла. Но метод init может выполнять некоторые важные действия, например открывать файловые объекты. В этом случае необработанные объекты будут находиться в состоянии, несовместимом с методом init. Или инициализация может регистрировать информацию о создаваемом объекте. Тогда невыбранные объекты не будут отображаться в общем логе.
• Нечитаемый. Pickle — это поток двоичных данных, т.е. инструкции для абстрактного механизма выполнения. Открыв Pickle как обычный файл, его содержимое нельзя прочитать. Чтобы узнать, что находится в нем, придется использовать модуль Pickle для загрузки. Это может затруднить отладку, поскольку сложно искать нужные данные в двоичных файлах.
• Привязка к Python. Будучи Python-библиотекой, Pickle специфичен для этого языка программирования. Хотя сам формат может использоваться для других языков программирования, найти пакеты, обеспечивающие такие возможности, довольно трудно. Кроме того, они будут ограничены межъязыковыми общими структурами объектов list/dict. Pickle без проблем сериализует объекты, содержащие вызываемые функции и классы. Но формат не хранит код, а только имя функции или класса. При распаковке данных имена функций используются для поиска существующего кода в запущенном процессе.
• Медленный. Наконец, по сравнению с другими методами сериализации, Pickle работает намного медленнее.
Поэтому MLOps-инженеру для переноса ML-моделей лучше рассмотреть другие универсальные форматы упаковки алгоритмов машинного обучения: JSON, marshal, cattrs и protocol buffers, ONNX, PMML или NNEF.
Data Scientist часто пишет код в блокнотах типа Jupyter Notebook, Google Colab или специализированных IDE. Чтобы перенести этот код в производственную среду, его надо преобразовать в легковесный формат обмена, сжатый и сериализованный, который не зависит от языка разработки. Одним из таких форматов является Pickle – бинарный вариант Python-объекта для сериализации и десериализации его структуры, преобразующий иерархию объектов Python в поток байтов и наоборот. Формат Pickle довольно популярен за счет своей легковесности. Он не требует схемы данных и весьма распространен, но имеет ряд недостатков:
• Небезопасно. Можно распаковывать только те pickle-файлы, которым вы доверяете. Злоумышленник может создать вредоносные данные, которые будут выполнять произвольный код во время распаковки. Смягчить этот риск можно через подписи данных с помощью hmac, чтобы убедиться, что они не были подделаны. Ненадежность связана не с тем, что Pickle содержат код, а с тем, что они создают объекты, вызывая конструкторы, упомянутые в файле. Любой вызываемый объект может использоваться вместо имени класса для создания объектов. Вредоносный код будут использовать другие вызываемые объекты Python в качестве конструкторов.
• Рассогласование кода. Если код изменится за время между упаковкой ML-модели в Pickle-файл и моментом его использования, объекты могут не соответствовать коду. Они по-прежнему будут иметь структуру, созданную старым кодом, но пытаться работать с его новой версией. Например, если атрибут был добавлен после создания Pickle, объекты из Pickle-файла не будут иметь этого атрибута. А если в новой версии кода предполагается его обработка, возникнут проблемы.
• Неявная сериализация. С одной стороны, формат Pickle удобен тем, что он сериализует любую структуру Python-объекта. Но при этом нет возможности указать предпочтения по сериализации того или иного типа даны. Pickle сериализует все в объектах, даже данные, которые не нужно сериализовать. Но пропустить сериализацию того или иного атрибута в Pickle нет возможности. Если объект содержит атрибут, который нельзя упаковать, например, объект с открытым файлом, Pickle не пропустит его, настаивая на попытке его упаковать, а затем выдаст исключение.
• Отсутствие инициализации. Pickle хранит всю структуру объектов. Когда модуль Pickle воссоздает объекты, он не вызывает метод init, поскольку объект уже создан, считая инициализацию вызванной, когда объект был впервые создан в процессе создания Pickle-файла. Но метод init может выполнять некоторые важные действия, например открывать файловые объекты. В этом случае необработанные объекты будут находиться в состоянии, несовместимом с методом init. Или инициализация может регистрировать информацию о создаваемом объекте. Тогда невыбранные объекты не будут отображаться в общем логе.
• Нечитаемый. Pickle — это поток двоичных данных, т.е. инструкции для абстрактного механизма выполнения. Открыв Pickle как обычный файл, его содержимое нельзя прочитать. Чтобы узнать, что находится в нем, придется использовать модуль Pickle для загрузки. Это может затруднить отладку, поскольку сложно искать нужные данные в двоичных файлах.
• Привязка к Python. Будучи Python-библиотекой, Pickle специфичен для этого языка программирования. Хотя сам формат может использоваться для других языков программирования, найти пакеты, обеспечивающие такие возможности, довольно трудно. Кроме того, они будут ограничены межъязыковыми общими структурами объектов list/dict. Pickle без проблем сериализует объекты, содержащие вызываемые функции и классы. Но формат не хранит код, а только имя функции или класса. При распаковке данных имена функций используются для поиска существующего кода в запущенном процессе.
• Медленный. Наконец, по сравнению с другими методами сериализации, Pickle работает намного медленнее.
Поэтому MLOps-инженеру для переноса ML-моделей лучше рассмотреть другие универсальные форматы упаковки алгоритмов машинного обучения: JSON, marshal, cattrs и protocol buffers, ONNX, PMML или NNEF.
👍7
🌴🌲🌳Деревья решений: краткий ликбез
Деревья решений – это один из наиболее широко используемых и практичных методов обучения с учителем. Они строятся с помощью алгоритмического подхода, который определяет способы разделения набора данных на основе различных условий. Деревья решений являются непараметрическими контролируемыми методами обучения и отлично подходят для работы с табличными данными, задач классификации и регрессии. Они помогают создать модель, которая предсказывает значение целевой переменной, изучая простые правила принятия решений, выведенные из характеристик данных.
Дерево решений работает как для непрерывных, так и для категориальных выходных данных. Алгоритм учится на простых правилах принятия решений, используя различные функции данных. В деревьях решений для классификации модель задает правильные вопросы в нужном узле, чтобы дать точную и эффективную классификацию с использованием энтропии и прироста информации. Энтропия — это мера неопределенности или случайности в наборе данных. Энтропия обрабатывает то, как дерево решений разбивает данные. Прирост информации измеряет снижение энтропии после разделения набора данных. Индекс Джини используется для определения правильной переменной для разделения узлов. Он измеряет, как часто случайно выбранная переменная будет неправильно идентифицирована.
Корневой узел всегда является верхним узлом дерева решений. Он представляет всю совокупность или выборку данных и может быть дополнительно разделен на различные наборы. А дочерние узлы решений содержат не менее двух ветвей. Листовой узел в дереве решений содержит окончательные результаты. Эти узлы, также известные как конечные узлы, не могут быть разделены дальше.
Метод применим для определения вероятности дефолта заявителя по кредиту, развития у человека определенного заболевания, определения показателей оттока клиентов и предсказания покупки товаров.
Преимущества использования деревьев решений:
• просты для понимания, интерпретации и визуализации.
• могут эффективно обрабатывать как числовые, так и категориальные данные.
• могут определить наихудшие, наилучшие и ожидаемые значения для нескольких сценариев.
• требуют небольшой подготовки данных и нормализации данных
• работают хорошо, даже если фактическая модель нарушает предположения
Недостатки метода:
• Переобучение, которое случается, когда алгоритм обучения продолжает разрабатывать гипотезы, снижающие ошибку обучающего набора данных за счет увеличения ошибки тестового датасета. Эту проблему можно решить, обрезав и установив ограничения на параметры модели.
• нельзя использовать с непрерывными числовыми переменными.
• Небольшое изменение данных приводит к большим различиям в древовидной структуре, что вызывает нестабильность.
https://blog.devgenius.io/decision-tree-regression-in-machine-learning-3ea6c734eb51
Деревья решений – это один из наиболее широко используемых и практичных методов обучения с учителем. Они строятся с помощью алгоритмического подхода, который определяет способы разделения набора данных на основе различных условий. Деревья решений являются непараметрическими контролируемыми методами обучения и отлично подходят для работы с табличными данными, задач классификации и регрессии. Они помогают создать модель, которая предсказывает значение целевой переменной, изучая простые правила принятия решений, выведенные из характеристик данных.
Дерево решений работает как для непрерывных, так и для категориальных выходных данных. Алгоритм учится на простых правилах принятия решений, используя различные функции данных. В деревьях решений для классификации модель задает правильные вопросы в нужном узле, чтобы дать точную и эффективную классификацию с использованием энтропии и прироста информации. Энтропия — это мера неопределенности или случайности в наборе данных. Энтропия обрабатывает то, как дерево решений разбивает данные. Прирост информации измеряет снижение энтропии после разделения набора данных. Индекс Джини используется для определения правильной переменной для разделения узлов. Он измеряет, как часто случайно выбранная переменная будет неправильно идентифицирована.
Корневой узел всегда является верхним узлом дерева решений. Он представляет всю совокупность или выборку данных и может быть дополнительно разделен на различные наборы. А дочерние узлы решений содержат не менее двух ветвей. Листовой узел в дереве решений содержит окончательные результаты. Эти узлы, также известные как конечные узлы, не могут быть разделены дальше.
Метод применим для определения вероятности дефолта заявителя по кредиту, развития у человека определенного заболевания, определения показателей оттока клиентов и предсказания покупки товаров.
Преимущества использования деревьев решений:
• просты для понимания, интерпретации и визуализации.
• могут эффективно обрабатывать как числовые, так и категориальные данные.
• могут определить наихудшие, наилучшие и ожидаемые значения для нескольких сценариев.
• требуют небольшой подготовки данных и нормализации данных
• работают хорошо, даже если фактическая модель нарушает предположения
Недостатки метода:
• Переобучение, которое случается, когда алгоритм обучения продолжает разрабатывать гипотезы, снижающие ошибку обучающего набора данных за счет увеличения ошибки тестового датасета. Эту проблему можно решить, обрезав и установив ограничения на параметры модели.
• нельзя использовать с непрерывными числовыми переменными.
• Небольшое изменение данных приводит к большим различиям в древовидной структуре, что вызывает нестабильность.
https://blog.devgenius.io/decision-tree-regression-in-machine-learning-3ea6c734eb51
Medium
Decision Tree Regression in Machine learning
In general, decision trees are constructed via an algorithmic approach that identifies ways to split a data set based on various…
👍6
👍ETL и интеграция данных с Airbyte
Ключевым компонентом любого конвейера данных является извлечение данных. После извлечения данных их необходимо загрузить и преобразовать, выполнив все операции ELT. Сделать это проще с Airbyte — платформой интеграции данных с открытым исходным кодом, целью которой является стандартизация и упрощение процесса извлечения и загрузки. Airbyte работает по принципу ELT, извлекая необработанные данные и загружая их в места назначения. Также Airbyte позволяет выполнять преобразование данных, отделяя их от фаз EL. Это упрощает процесс, создавая коннекторы между источниками данных и местами их назначения. Airbyte является системой на основе плагинов, где можно быстро создать собственный настраиваемый коннектор с помощью CDK.
Если не хватает готовых 170+ коннекторов и 25+ мест назначения, можно разработать собственный. В Airbyte есть встроенный планировщик, обеспечивающий различную частоту синхронизации, поддерживается интеграция с AirFlow и dbt. Он доступен на платформе K8s, включает octavia-cli с шаблоном YAML для развертывания и поддерживает CDC почти в реальном времени.
Однако, фреймворк все еще находится в альфа-версии, не поддерживает аутентификацию на основе ролей IAM в сервисах AWS. Нет встроенной поддержки Prometheus, хотя недавно добавлена Open Telemetry. В Airbyte нет поддержки управления доступом пользователей и воспроизведения конкретного экземпляра выполнения задания. А также работа может замедляться при 2000+ одновременных заданий.
https://airbyte.com/
Ключевым компонентом любого конвейера данных является извлечение данных. После извлечения данных их необходимо загрузить и преобразовать, выполнив все операции ELT. Сделать это проще с Airbyte — платформой интеграции данных с открытым исходным кодом, целью которой является стандартизация и упрощение процесса извлечения и загрузки. Airbyte работает по принципу ELT, извлекая необработанные данные и загружая их в места назначения. Также Airbyte позволяет выполнять преобразование данных, отделяя их от фаз EL. Это упрощает процесс, создавая коннекторы между источниками данных и местами их назначения. Airbyte является системой на основе плагинов, где можно быстро создать собственный настраиваемый коннектор с помощью CDK.
Если не хватает готовых 170+ коннекторов и 25+ мест назначения, можно разработать собственный. В Airbyte есть встроенный планировщик, обеспечивающий различную частоту синхронизации, поддерживается интеграция с AirFlow и dbt. Он доступен на платформе K8s, включает octavia-cli с шаблоном YAML для развертывания и поддерживает CDC почти в реальном времени.
Однако, фреймворк все еще находится в альфа-версии, не поддерживает аутентификацию на основе ролей IAM в сервисах AWS. Нет встроенной поддержки Prometheus, хотя недавно добавлена Open Telemetry. В Airbyte нет поддержки управления доступом пользователей и воспроизведения конкретного экземпляра выполнения задания. А также работа может замедляться при 2000+ одновременных заданий.
https://airbyte.com/
Airbyte
Data Movement for Analytics and AI Agents
Airbyte is the open-source data movement platform. Run ELT pipelines across 700+ connectors to any warehouse, lake, vector database, or AI agent.
👍3
#тест
Что верно про массивы и датафреймы Python?
Что верно про массивы и датафреймы Python?
Anonymous Quiz
3%
Массив всегда только одномерный
4%
Датафрейм всегда одномерный
33%
Элементы массива могут быть разных типов
60%
Датафрейм может содержать объекты разных типов
👍6👏1🤯1
🤔Как извлечь таблицы из PDF? Попробуй Camelot!
Open-source библиотека Camelot помогает извлекать таблицы из PDF-файлов. Перед ее установкой нужно поставить библиотеки Tkinter и Ghostscript. Установить эти библиотеки можно через менеджеры пакетов pip или conda:
pip install camelot-py
conda install -c conda-forge camelot-py
Далее нужно, как обычно, импортировать нужный модуль из библиотеки, чтобы использовать его методы:
import Camelot
tables = camelot.read_pdf('foo.pdf', pages='1', flavor='lattice')
Параметр flavor по умолчанию настроен на решетку (lattice), но его можно перенастроить на поток (stream). Решетка более детерминирована по своей природе и отлично подходит для анализа таблиц, где есть разграничительные линии между ячейками. Это позволяет автоматически анализировать несколько таблиц, присутствующих на странице. Решетка преобразует страницу PDF в изображение с помощью библиотеки ghostscript, а затем обрабатывает его, чтобы получить горизонтальные и вертикальные линейные сегменты, применяя набор морфологических преобразований с помощью OpenCV.
Для извлечения таблицы из PDF используется метод export(), чтобы затем распечатать ее как датафрейм или экспортировать в файл CSV:
tables.export('foo.csv', f='csv', compress=True)
tables[0].to_csv('foo.csv') # to a csv file
print(tables[0].df) # to a df
https://camelot-py.readthedocs.io/en/master/user/install.html
Open-source библиотека Camelot помогает извлекать таблицы из PDF-файлов. Перед ее установкой нужно поставить библиотеки Tkinter и Ghostscript. Установить эти библиотеки можно через менеджеры пакетов pip или conda:
pip install camelot-py
conda install -c conda-forge camelot-py
Далее нужно, как обычно, импортировать нужный модуль из библиотеки, чтобы использовать его методы:
import Camelot
tables = camelot.read_pdf('foo.pdf', pages='1', flavor='lattice')
Параметр flavor по умолчанию настроен на решетку (lattice), но его можно перенастроить на поток (stream). Решетка более детерминирована по своей природе и отлично подходит для анализа таблиц, где есть разграничительные линии между ячейками. Это позволяет автоматически анализировать несколько таблиц, присутствующих на странице. Решетка преобразует страницу PDF в изображение с помощью библиотеки ghostscript, а затем обрабатывает его, чтобы получить горизонтальные и вертикальные линейные сегменты, применяя набор морфологических преобразований с помощью OpenCV.
Для извлечения таблицы из PDF используется метод export(), чтобы затем распечатать ее как датафрейм или экспортировать в файл CSV:
tables.export('foo.csv', f='csv', compress=True)
tables[0].to_csv('foo.csv') # to a csv file
print(tables[0].df) # to a df
https://camelot-py.readthedocs.io/en/master/user/install.html
👍5🤔1
Forwarded from Artificial Intelligence & Tech Space
Media is too big
VIEW IN TELEGRAM
Одна из крутых способностей DALL-E — возможность удалять объекты на фотографии так, будто их там и не было.
@aitspace
@aitspace
👍14
Эффективность статистического эксперимента не зависит от
Anonymous Quiz
14%
Размера выборки
16%
Уровня значимости
20%
Изменчивости данных
23%
Величины эффекта
28%
Среднеквадратического отклонения
👍5
🍁У нас в октябре планируются следующие DS-ивенты:
• 4-7 октября - конференция «Аналитика и управление данными в областях с интенсивным использованием данных» («Data Analytics and Management in Data Intensive Domains» — DAMDID). В этом году ее местом проведения станет Университет ИТМО, СПб https://news.itmo.ru/ru/announce/76547/
• 5 октября - Fin.Bot 2023 - 3-я профессиональная кейс-конференция о чат-ботах, роботах в голосовых каналах и виртуальных помощниках, а также лучших инструментах создания диалоговых роботов на основе технологий AI, ML и BigData в финансовом секторе Москва, Holiday Inn Moscow Lesnaya https://finbot-forum.ru/
• 17-18 октября -конференция по инженерии данных SmartData в онлайн-формате https://smartdataconf.ru/
• 29 октября - конференция по инженерии данных SmartData в Санкт-Петербурге, Park Inn by Radisson Pulkovskaya: пл. Победы, 1 https://smartdataconf.ru/
• 4-7 октября - конференция «Аналитика и управление данными в областях с интенсивным использованием данных» («Data Analytics and Management in Data Intensive Domains» — DAMDID). В этом году ее местом проведения станет Университет ИТМО, СПб https://news.itmo.ru/ru/announce/76547/
• 5 октября - Fin.Bot 2023 - 3-я профессиональная кейс-конференция о чат-ботах, роботах в голосовых каналах и виртуальных помощниках, а также лучших инструментах создания диалоговых роботов на основе технологий AI, ML и BigData в финансовом секторе Москва, Holiday Inn Moscow Lesnaya https://finbot-forum.ru/
• 17-18 октября -конференция по инженерии данных SmartData в онлайн-формате https://smartdataconf.ru/
• 29 октября - конференция по инженерии данных SmartData в Санкт-Петербурге, Park Inn by Radisson Pulkovskaya: пл. Победы, 1 https://smartdataconf.ru/
👍4
🚀Тонкости Pandas: at и iat вместо iloc и loc для ускорения циклов
В популярной Python-библиотеке Pandas есть функции iloc и loc для доступа к значениям датафрейма с помощью индекса строки и индекса или имени столбца. Но их выполнение внутри циклов требует много времени. Если заменить loc на at или iloc на iat, время выполнения for-цикла может снизиться в 60 раз!
Такая разительная разница в скорости обусловлена характером самих функций: at и iat предназначены для доступа к скаляру, то есть к одному элементу датафрейма. А loc и iloc используются для одновременного доступа к нескольким элементам (рядам, датафреймам), т.е. они изначально они нужны для выполнения векторизованных операций.
Поскольку at/iat используются для доступа к скалярному значению, они является более быстрыми по сравнению с loc/iloc, предназначенными для доступа к ряду/датафрейму и занимающими больше места и времени. Поэтому использование loc/iloc внутри циклов в Python не оптимально, и его лучше заменить на at/iat, которые выполняются быстрее. Однако, loc и iloc отлично работают вне циклов Python для векторизованных операций.
https://medium.com/codex/dont-use-loc-iloc-with-loops-in-python-instead-use-this-f9243289dde7
В популярной Python-библиотеке Pandas есть функции iloc и loc для доступа к значениям датафрейма с помощью индекса строки и индекса или имени столбца. Но их выполнение внутри циклов требует много времени. Если заменить loc на at или iloc на iat, время выполнения for-цикла может снизиться в 60 раз!
Такая разительная разница в скорости обусловлена характером самих функций: at и iat предназначены для доступа к скаляру, то есть к одному элементу датафрейма. А loc и iloc используются для одновременного доступа к нескольким элементам (рядам, датафреймам), т.е. они изначально они нужны для выполнения векторизованных операций.
Поскольку at/iat используются для доступа к скалярному значению, они является более быстрыми по сравнению с loc/iloc, предназначенными для доступа к ряду/датафрейму и занимающими больше места и времени. Поэтому использование loc/iloc внутри циклов в Python не оптимально, и его лучше заменить на at/iat, которые выполняются быстрее. Однако, loc и iloc отлично работают вне циклов Python для векторизованных операций.
https://medium.com/codex/dont-use-loc-iloc-with-loops-in-python-instead-use-this-f9243289dde7
Medium
Don’t use loc/iloc with Loops In Python, Instead, Use This!
Run your loops at a 60X faster speed
👍9
👍🏻PRegEx для работы с регулярными выражениями
Регулярные выражения для поиска и замены текста в строке, одном или нескольких файлах, активно используются разработчиками и тестировщиками. Однако, читать и писать их довольно сложно. Упростить работу с регулярными выражениями на Python поможет пакет с открытым исходным кодом PRegEx (Programmable Regular Expressions), который имеет синтаксис, напоминающий императивный способ программирования. С PRegEx не нужно группировать шаблоны или экранировать метасимволы, поскольку они отлично обрабатываются внутри пакета.
Благодаря модульному принципу создания шаблонов в регулярных выражениях, PRegEx позволяет разбить сложный шаблон на несколько более простых, которые затем можно объединить. А высокоуровневый API поверх встроенного Python-модуля re, обеспечивающий доступ к его основным функциям и многому другому, избавит от необходимости работать с экземплярами re.Match.
Примеры использования: https://towardsdatascience.com/pregex-write-human-readable-regular-expressions-in-python-9c87d1b1335
Регулярные выражения для поиска и замены текста в строке, одном или нескольких файлах, активно используются разработчиками и тестировщиками. Однако, читать и писать их довольно сложно. Упростить работу с регулярными выражениями на Python поможет пакет с открытым исходным кодом PRegEx (Programmable Regular Expressions), который имеет синтаксис, напоминающий императивный способ программирования. С PRegEx не нужно группировать шаблоны или экранировать метасимволы, поскольку они отлично обрабатываются внутри пакета.
Благодаря модульному принципу создания шаблонов в регулярных выражениях, PRegEx позволяет разбить сложный шаблон на несколько более простых, которые затем можно объединить. А высокоуровневый API поверх встроенного Python-модуля re, обеспечивающий доступ к его основным функциям и многому другому, избавит от необходимости работать с экземплярами re.Match.
Примеры использования: https://towardsdatascience.com/pregex-write-human-readable-regular-expressions-in-python-9c87d1b1335
GitHub
GitHub - manoss96/pregex: PRegEx - Programmable Regular Expressions
PRegEx - Programmable Regular Expressions. Contribute to manoss96/pregex development by creating an account on GitHub.
👍1
#тест
В чем разница между хранимой процедурой и представлением?
В чем разница между хранимой процедурой и представлением?
Anonymous Quiz
25%
Представление сохраняется в долговременной памяти и содержит данные - результаты выполнения запроса
48%
Хранимая процедура сохраняется в БД и выполняется как единый фрагмент кода
7%
Это одно и тоже, разницы нет
21%
Представления нужны для реализации хранимых процедур
👍4
👌Low Code/No Code для данных с Superblocks
Идея быстрой разработки приложений без написания кода активно используется при автоматизации офисных бизнес-процессов с помощью BPMS (ELMA, Camunda и пр.). В области анализа данных тоже появляются подобные решения, позволяющие из готовых блоков собрать рабочее приложение, как из кубиков конструктора. Например, Superblocks – Low Code платформа интеграции данных и конвейеров их обработки с возможностями BI-системы.
Как создать и развернуть аналитическое веб-приложение с созданием отчетов, используя Superblocks и MongoDB, за пару минут, читайте здесь: https://yaakovbressler.medium.com/next-generation-data-dashboards-reimagined-meet-superblocks-2d316cb3597c
Идея быстрой разработки приложений без написания кода активно используется при автоматизации офисных бизнес-процессов с помощью BPMS (ELMA, Camunda и пр.). В области анализа данных тоже появляются подобные решения, позволяющие из готовых блоков собрать рабочее приложение, как из кубиков конструктора. Например, Superblocks – Low Code платформа интеграции данных и конвейеров их обработки с возможностями BI-системы.
Как создать и развернуть аналитическое веб-приложение с созданием отчетов, используя Superblocks и MongoDB, за пару минут, читайте здесь: https://yaakovbressler.medium.com/next-generation-data-dashboards-reimagined-meet-superblocks-2d316cb3597c
Superblocks
Superblocks | Build & Govern AI Generated Enterprise Apps
Superblocks lets business teams generate production AI apps on your company data, while IT manages auth, integrations, access controls and auditing centrally.
👍2