Big Data Science [RU]
1.62K subscribers
80 photos
9 videos
545 links
Big Data Science [RU] — канал о жизни Data Science.
Для сотрудничества: a.chernobrovov@gmail.com
🌏 — https://t.me/bdscience — Big Data Science channel (english version)
💼 — https://t.me/bds_job — channel about Data Science jobs and career
Download Telegram
🍨🍧🍡Упрощаем отладку Python-кода с библиотекой IceCream
IceCream
— это библиотека Python, которая делает отладку легкой и читабельной с минимальным кодом. Она включает печать выражений, имена переменных, имена функций, номера строк, имена файлов и многое другое, что пригодится разработчику при поиске ошибок и их устранении. Вместо использования print() или log() для отладки кода в библиотеке IceCream есть аналогичные функции. В частности, ic() похож на print(), но он выводит имена выражений, переменных и их значения, причем работает на 60% быстрее. Библиотека IceCream более полно отображает исследуемые структуры данных, имеет богатый синтаксис вывода, а также может включать контекст программы: имя файла, номер строки и родительскую функцию.
Открытый код IceCream представлен на Github. Библиотека поддерживает Python 2, Python 3, PyPy2 и PyPy3, а также может использоваться и в других языках программирования: Dart, Rust, Node.js, C++, PHP, Go, Ruby, Java, R, Lua, Clojure(Script) и Bash.
Примеры использования: https://towardsdatascience.com/introducing-icecream-never-use-print-to-debug-your-python-code-again-d8f2e5719f8a
👍4
💥3 достоинства и пара недостатков PySpark перед Pandas
Хотя Python-библиотека Pandas очень популярна у начинающих Data Scientist’ов, она не предназначена для работы с по-настоящему большими данными, т.к. может обрабатывать без проблем с памятью объемы до 10–12 ГБ. Хотя есть инструменты, которые могут распараллелить работу Pandas, например, Dask, Swift, Ray и пр., это лишь ускоряет работу библиотеки, но не устраняет причин главной проблем, т.к. Pandas всегда загружает датафрейм в память.
Поэтому при работе с большим объемом данных следует выбирать что-то быстрее, например, PySpark – Python API в Apache Spark, распределенном вычислительном движке. Будучи распределенным по своей природе, Spark также применяет т.н. ленивые или отложенные вычисления, выполняя операции с данными не во время их объявления, а при непосредственном вызове. Это устраняет многие ограничения памяти. В отличие от PySpark, Pandas придерживает Eager Execution, выполняя задачи выполняются как можно раньше, а PySpark следует концепции Lazy Execution, когда задача не выполняется до тех пор, пока не будет выполнено действие. PySpark отлично подходит для разработки масштабируемых приложений и гарантирует отказоустойчивость.
Однако, из-за передачи данных по сети в рамках распределенных вычислений, PySpark потенциально имеет более высокую задержку по сравнению с локальным Pandas, что приводит к снижению пропускной способности приложения. Кроме того, PySpark остается требовательным к памяти, поскольку все задачи MapReduce выполняются в оперативной памяти, без записи предварительных результатов на диск, в отличие от классических вычислений в Hadoop. Наконец, в PySpark меньше специализированных для Data Science алгоритмов.
👏8👍1
#тест
Когда вероятность совершения ошибки увеличивается вместе с расстоянием точки прогнозирования от исторических данных, на которых обучалась модель прогнозирования, это
Anonymous Quiz
11%
интерполяция
67%
экстраполяция
22%
аппроксимация
👍7
🍁🌨ТОП-7 DS-событий ноября:
• 10 ноября - Innopolis meetup: Data Science и ML - Иннополис, Университетская, 5 (Технопарк им.Лобавчевского), Коворкинг https://innopolis.timepad.ru/event/2217002/
• 11-12 ноября – Матемаркетинг 2022, онлайн-дни, https://matemarketing.ru/
• 15-17 ноября – Big Data & Analitics Day 2022 – большая конференция – Москва, технопарк «Сколково» https://techweek.moscow/data_day
• 17-18 ноября – Матемаркетинг 2022, офлайн-дни. Москва, кампус Сколково https://matemarketing.ru/
• 23 ноября - Искусственный интеллект: от пилота к промышленной эксплуатации - Конференция от CNews - https://events.cnews.ru/events/iskusstvennyi_intellekt_2022_2022-09-29.shtml
• 23-24 ноября - Международная конференция Сбера по искусственному интеллекту AI Journey https://ai-journey.ru/
• 29 ноября – DataStart, бесплатная Онлайн-конференция Data Science, машинное обучение и нейросети - https://datastart.ru/
👍3
🚀Python 3.11.0: главные новинки для разработчика
24 октября 2022 г. вышла новая версия Python 3.11.0 со следующими ключевыми фичами и исправлениями ошибок:
• исправлено умножение списка на целое число (список *= int), что приводило к целочисленному переполнению, когда новая выделенная длина близка к максимальному размеру;
• изменен код метода запуска forkserver - в Linux модуль многопроцессорности теперь снова использует сокеты домена unix, поддерживаемых файловой системой, чтобы работать с процессом forkserver вместо пространства имен абстрактных сокетов Linux. Абстрактные сокеты не имеют разрешений и могут позволить любому пользователю в системе в том же сетевом пространстве имен (часто всей системе) вводить код в многопроцессорный процесс forkserver. Это существенная уязвимость типа превышение привилегий и устранено в новой версии Python.
• исправлена проблема, из-за которой несколько объектов фрейма могли поддерживаться одним и тем же фреймом интерпретатора, что могло привести к повреждению памяти и серьезным сбоям интерпретатора;
• исправлено возможное повреждение данных или сбои при доступе к элементу f_back вновь созданного генератора или фреймов сопрограммы;
• исправлен сбой, возникающий при вызове PyEval_GetFrame(), когда самый верхний фрейм Python находится в частично инициализированном состоянии;
• исправлен синтаксический анализ командной строки: параметр reject -X int_max_str_digits без значения недействителен, когда для переменной среды PYTHONINTMAXSTRDIGITS установлено допустимое значение;
• исправлено неопределенное поведение в _testcapimodule.c;
• обновлены связанные копии pip и setuptools до версий 22.3 и 65.5.0 соответственно;
• ранее объявленный устаревшим метод asyncio.Task.cancel("message") теперь снова работает и не считается устаревшим;
• семафоры работают быстрее, что важно для многозадачных программ;
• исправлен флаг для использования границы CONFORM, что позволяет объединять флаги с непоследовательными значениями;
• в Windows, когда набор тестов Python запускается с параметром -jN, для временного файла stdout вместо UTF-8 теперь используется кодировка ANSI;
• исправлена ошибка, из-за которой многопроцессорность из виртуальной среды порождала дочерние процессы в Windows, когда это было не нужно;
• исправлена обработка программой запуска py.exe параметра -V:<company>/, когда в переменных среды или файлах конфигурации были установлены предпочтения по умолчанию;
• SDK macOS 13 включает поддержку системных вызовов mkfifoat и mknodat. Ранее использование параметра dir_fd с os.mkfifo() или os.mknod() приводило к segfault, если cpython собран с помощью SDK macOS 13, но работал в более ранней версии macOS.

https://www.python.org/downloads/release/python-3110/
https://docs.python.org/release/3.11.0/whatsnew/changelog.html#python-3-11-0-final
👍7
🌞Простое прогнозирование с Lazy Predict
Продолжая знакомиться с полезными для Data Science библиотеками Python, разберем, что такое Lazy Predict и где это пригодится. Это библиотека для сравнения производительности различных моделей машинного обучения в наборе данных. По сути, это обертка, которая позволяет быстро подогнать все ML-модели под набор данных и сравнить их производительность буквально за пару строчек кода. Lazy Predict отлично работает с классификацией и регрессией, позволяя сравнить результаты обучения ML-моделей по самым важным метрикам: R-Squared, RMSE, точность (Accuracy), F1 Score, и время обучения.
Библиотека имеет открытый исходный код и отлично совместима со sklearn, numpy и другими Python-библиотеками, которые используются в задачах Data Science.
https://lazypredict.readthedocs.io/en/stable/readme.html
👍9
🐍Python вместо Cypher в Neo4j с Py2neo
Манипуляции с данными в графовой базе Neo4j выполняются средствами SQL-подобного языка запросов Cypher. Он оптимизирован для графов, определяет и использует отношения данных, исследуя взаимосвязи во всех направлениях, чтобы обнаружить ранее невидимые отношения и кластеры. Однако, Python дает большую гибкость в работе с данными. Поэтому многие Data Scientist’ы предпочитают его для различных программ, включая автоматизацию процесса создания узлов и связей.
В этом случае отлично пригодится библиотека Py2neo – Python-пакет, который работает с Neo4j. Его можно установить его с помощью менеджера пакетов pip через всем известную команду pip install py2neo в командной строке. Далее можно открывать любимый Python-редактор и запускать граф в Neo4j.
Py2neo включает набор инструментов для работы с Neo4j из приложений Python и из командной строки. Библиотека поддерживает как Bolt, так и HTTP и предоставляет высокоуровневый API, OGM, инструменты администрирования, интерактивную консоль, лексический шифратор Cypher для Pygments и многие другие функциональные возможности, которые пригодятся для анализа графов. Начиная с версии 2021.1, Py2neo содержит полную поддержку маршрутизации, представленную кластером Neo4j, что можно включить с помощью URI neo4j://... или путем передачи параметра routing=True в конструктор класса Graph.
https://py2neo.org/2021.1/
👍3
Не знаешь, что обсудить с друзьями вечером в баре? Лови главные тезисы с митапа про Data Science и Machine Learning:

⭐ Даже если не планируете в вашем продукте никакого ML/AI, всё равно готовьте архитектуру данных и инфраструктуру для потенциального внедрения алгоритмов машинного обучения. Вероятность того, что это рано или поздно случится, слишком высока, и никакой highload не станет оправданием.

💫 Чтобы учесть влияние ML-моделей друг на друга, нужно использовать подходы похожие на оркестрцию данных. Но сейчас, к сожалению, нет фреймворков для этого. И каждый раз приходится изобретать свой велосипед.

🌟 Умная лента — это не просто ранжирование постов от ML-модели, но и борьба с непотребным контентом и обеспечение разнообразия контента. Кроме того, в большом продакшене ML требует целого ансамбля сервисов, обеспечивающих его работу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
👀ТОП-5 открытых инструментов для отслеживания происхождения данных
Происхождение данных (data lineage) позволяет компании соблюдать нормативные требования, лучше понимать и доверять своим данным, а также экономить время на ручном анализе возможных эффектов от их изменения. Для мониторинга происхождения данных на сегодняшнем рынке есть множество инструментов, открытых и проприетарных. Из инструментов с открытым исходным кодом наиболее популярными являются следующие:
• Tokern позволяет пользователям получать данные о происхождении данных на уровне столбцов из баз данных и хранилищ данных, размещенных в Google BigQuery, AWS Redshift и Snowflake. Tokern можно интегрировать и с другими системами, т.к. он хорошо работает с большинством каталогов данных с открытым исходным кодом и ETL-фреймворков. Tokern также позволяет пользователям создавать происхождение данных из истории запросов или сценариев ETL, что делает его идеальным для интеграции инструментов BI и ETL. В качестве своего локального хранилища Tokern использует PostgreSQL, а для визуализации Kedro-Viz и библиотеку анализа сетевых графов NetworkX. Эти библиотеки позволяют пользователям отслеживать, визуализировать и анализировать данные о происхождении на уровне столбцов. Кроме того, пользователи также могут взаимодействовать с данными о происхождении, используя SDK или API Tokern. Еще Tokern обеспечивает обнаружение PII (личной информации) и PHI (личной медицинской информации) с помощью PIICatcher, сочетая регулярные выражения с NLP-библиотеками Spacy и Stanford NER.
• Egeria – стандарт метаданных с открытым исходным кодом, обеспечивающий беспрепятственную интеграцию инструментов обработки данных для надежного и согласованного представления метаданных. Egeria позволяет пользователям создавать более совершенные решения для отслеживания происхождения данных, проверки качества данных, идентификации PII и т. д. в дополнение к каталогизации и поиску метаданных. Egeria основана на открытом стандарте сбора и хранения данных OpenLineage. Это позволяет пользователям получить более полное представление о данных, предоставляя горизонтальное и вертикальное их происхождение и трассировки. Чтобы получить информацию о происхождении данных, Egeria прослушивает события Kafka, создаваемые исходными системами.
• Pachyderm —инструмент сбора данных, позволяющий разработчикам создавать конвейеры машинного обучения независимо от языка и фреймворка, вместо фокуса на облачных хранилищах данных. Он использует систему контроля версий, такую как lakeFS или Git, фиксирует и сохраняет изменения, например, коммиты, сохраняя полный и неизменный контрольный журнал событий. Также Pachyderm имеет полный журнал аудита и использует центральный репозиторий на основе объектного хранилища в настраиваемой файловой системе Pachyderm File System, чтобы обеспечить отслеживание происхождения данных и контроль их версий. Pachyderm обеспечивает неизменность источника данных пользователя, позволяя назначать глобальные идентификаторы событиям происхождения и объектам данных. Pachyderm позволяет просматривать неизменяемый график происхождения данных как DAG в пользовательском интерфейсе, что особенно полезно при работе с конвейерами ML. Pachyderm отлично интегрируется со многими базами, хранилищами и озерами данных. Поэтому многие компании используют его для операций MLOps, неструктурированных данных ETL и рабочих нагрузок NLP.
• OpenLineage – проект Linux Foundation, основанный на интеграции с платформами ETL, механизмами оркестрации данных, каталогами метаданных, механизмами контроля качества данных, а также инструментами наследования данных. OpenLineage использует JSONSchema в качестве определения API и поддерживает различные языки и платформы. Ранее упомянутая Egeria имеет основной уровень метаданных, построенный поверх OpenLineage. Marquez от WeWork также лежит в основе архитектуры OpenLineage, предлагая репозиторий пользовательского интерфейса и метаданных, а также API для сбора метаданных, предоставляемый через GraphQL и REST API.
👍3
• TrueDat – комплексное решение для управления данными, которое позволяет детально классифицировать, искать и отслеживать их, а также визуализировать весь жизненный цикл данных. Инструмент создан в 2017 г. компанией BlueTab, входящей в состав IBM, и до сих пор активно развивается.
https://blog.devgenius.io/5-best-open-source-data-lineage-tools-in-2022-f8ef39a7d5f6
👍1
🚀Как ускорить Pandas с библиотекой Pandarallel
Каждый Data Scientist знает, что Python-библиотека Pandas работает довольно медленно и не предназначена для больших объемов данных. Тем не менее, каждый Data Scientist ее использует.🤷‍♀️ Чтобы сделать Pandas более быстрой, можно включить в свой проект Pandarallel — простой и эффективный инструмент для распараллеливания операций Pandas на всех доступных процессорах.
Pandas использует только одно ядро ЦП, а Pandarallel позволяет воспользоваться преимуществами многоядерного компьютера. Еще Pandarallel предлагает индикаторы выполнения программы, доступные на ноутбуке и терминале, чтобы получить приблизительное представление об оставшемся объеме вычислений, которые необходимо выполнить.
Библиотеку можно использовать на любом компьютере под управлением Linux и macOS, а в Windows есть небольшие особенности: из-за многопроцессорной системы функция, которая отправляется в Pandarallel, должна быть автономной и не должна зависеть от внешних ресурсов.
https://nalepae.github.io/pandarallel/
👍4🤔2
🤷‍♀️Не все отсутствующие данные одинаково отсутствуют
Отсутствующие данные — это проблема, которая часто возникает в Data Science и машинном обучении. Есть множество причин, по которым данные могут отсутствовать, в зависимости от их типа и методов сбора. Но не все отсутствующие данные одинаковы, их можно разбить на следующие категории:
• Отсутствующие по причине невозможности их сбора или дороговизне этой процедуры
• Структурно отсутствующие данные, которые не могут быть получены из-за особенностей объектов исследований;
• Отсутствующие по причине случайного сбоя;
• Отсутствующие по неочевидным или неизвестным причинам.
В зависимости от причины отсутствия данных в датасете, можно сгладить или вовсе устранить это. Например, структурно отсутствующие данные предполагают изменение структуры вопросов об объекте исследования, чтобы ответы на них были получены. Вместо сбора редких или дорогостоящих данных можно выбрать прокси-метрики, которые позволяют принять решение. Постоянно повторяющиеся сбои необходимо устранить, а также больше узнавать о причинах отсутствия ожидаемых данных.
https://medium.com/@nahmed3536/types-of-missing-data-e718e6ac2a55
👍2
🔥Валидация данных в Python-скрипте с библиотекой pydantic
Эта легковесная библиотека позволяет проверить данные и управлять настройками с использованием аннотаций Python, применяя подсказки типов во время выполнения. Библиотека показывает пользователю ошибки, если данные невалидны. Достаточно определить, какими должны быть данные в чистом, каноническом Python и подтвердить это с помощью pydantic.
Справедливости ради стоит отметить, что pydantic — это прежде всего библиотека синтаксического анализа, а не средство валидации. Библиотека гарантирует типы и ограничения выходной модели, а не входных данных. Впрочем, хотя валидация модели не является основной целью pydantic, ее можно применять и для этого.
Основным средством определения объектов в pydantic являются модели, классы-наследники базового класса BaseModel. Можно рассматривать модели как типы данных в строго типизированных языках. Ненадежные данные могут быть переданы в модель, и после синтаксического анализа и проверки pydantic гарантирует, что поля результирующего экземпляра модели будут соответствовать типам полей, определенным в модели.
Библиотека отлично совмещается с любой IDE и работает очень быстро: большая часть библиотеки скомпилирована с помощью Cython. Pydantic обеспечивает проверку сложных структур данных и использование рекурсивных моделей, а также позволяет определять пользовательские типы данных через применение декоратора с анализом и проверкой входных данных.
Примечательно, что этот проект с открытым исходным кодом используют множество компаний и продуктов, включая FastAPI, Jupyter, Microsoft, AWS, Uber и др. Попробовать его можно прямо сейчас, импортировав в свой Python-скрипт сперва саму библиотеку через менеджер проектов pip, а затем ее базовый класс BaseModel:
pip install pydantic
from pydantic import BaseModel
https://pydantic-docs.helpmanual.io/
👍3
👍🏻Нужны красивые графики в Jupyter Notebook? Легко с PivotTable.js!
PivotTable.js — это Javascript-реализация сводных таблиц с открытым исходным кодом с функциями drag-and-drop. Проект распространяется под лицензией MIT и устанавливается через менеджер пакетов pip:
pip install pivottablejs
Библиотека позволяет удобно и быстро визуализировать статистику датасета, просто перетащив нужные данные.
https://pypi.org/project/pivottablejs/
👍5
Яндекс назвал лауреатов своей ежегодной научной премии

Ученые, которые занимаются исследованиями в области компьютерных наук, получат по миллиону рублей на развитие своих проектов. В 2022 году лауреатами стали шесть молодых ученых:

•Максим Великанов — занимается теорией deep learning, изучает бесконечно широкие нейронные сети и статистическую физику;

•Петр Мокров — исследует градиентные потоки Вассерштейна, нелинейную фильтрацию и байесовскую логистическую регрессию;

•Максим Кодрян — занимается deep learning, а также оптимизацией и генерализацией нейросетевых моделей;

•Руслан Рахимов — работает с нейронной визуализацией, CV и deep learning;

•Сергей Самсонов — изучает алгоритмы Монте-Карло с марковскими цепями, стохастическую аппроксимацию и другие темы;

•Тарас Хахулин — работает в области компьютерного зрения.

Круто, что отдельно выделяют и научных руководителей. В этом году гранты получили двое — Дмитрий Ветров, заведующий Центром глубинного обучения и байесовских методов ВШЭ, и Алексей Наумов, доцент факультета компьютерных наук ВШЭ, заведующий Международной лаборатории стохастических алгоритмов и анализа многомерных данных.

Подробнее о премии и лауреатах 2022 года — на сайте.
🔥4👍3