Big Data Science [RU]
1.6K subscribers
83 photos
9 videos
548 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
👍4 утилиты для работы с JSON-файлами
Hadoop и Spark, самые популярные фреймворки стека Big Data предназначены для работы с большими данными – файлами большого размера. Но часто нужно обработать много маленьких файлов, например, в формате JSON, которые в Hadoop HDFS будут распределены по множеству блоков данных и разделов. Количество разделов определяет количество задач, поскольку 1 задача может обрабатывать только 1 раздел за раз. Это будет большая нагрузка для Application Master и замедляет работу всего кластера. Кроме того, большая часть времени при этом тратится только на открытие и закрытие файлов, а не на чтение данных из файла.
Поэтому целесообразно объединить множество маленьких файлов в 1 большой, который Hadoop и Spark сможет обработать очень быстро. В случае JSON-файлов сделать такое объединение в массив записей помогут следующие утилиты:
• jq – часто используется для фильтрации и обработки входящих данных JSON, отлично подходит для анализа и обработки существующих данных https://stedolan.github.io/jq/
• jo - позволяет создавать структуры данных JSON проще и быстрее, чем вручную https://github.com/jpmens/jo
• json_pp – может отображать объекты JSON в более удобном формате, а также конвертировать их между разными форматам https://github.com/deftek/json_pp
• jshon - парсер JSON с возможностями быстрого анализа больших объемов данных http://kmkeen.com/jshon/
https://sidk17.medium.com/boss-we-have-a-large-number-of-small-files-now-how-to-process-these-files-ee27f67dc461
👍5
👀Нужны данные для обучения ML-модели? Сгенерируй сам: 3 Python-пакета для генерации синтетических данных
Синтетические данные – это искусственно сгенерированный, а не собранный датасет по определенной тематике для обучения ML-модели или отработки техник анализа. Их можно создать самостоятельно, используя следующие Python-пакеты:
• Faker — очень простой и интуитивно понятный Python-пакет для генерации синтетических данных. Он отлично подойдет, когда нужно загрузить данные в базу, создать образцы XML-документов, подготовиться к нагрузочному тестированию или анонимизировать данные, полученные из реальных сервисов. https://github.com/joke2k/faker
• SDV (Synthetic Data Vault) — синтетическое хранилище данных для создания синтетических данных на основе заданного датасета. Сгенерированные данные могут быть одной таблицей, несколькими таблицами или временными рядами, и имеют те же свойства и статистику, что и исходный датасет. SDV генерирует синтетические данные с помощью DL-моделей. Даже если исходный датасет содержит несколько типов данных и пропуски, SDV обработает их. https://sdv.dev/SDV/
• Gretel Synthetics - пакет с открытым исходным кодом на базе рекуррентной нейронной сети для генерации структурированных и неструктурированных данных. Пакетный подход рассматривает набор данных как текстовые данные и обучает модель на их основе. Затем модель будет создавать синтетические данные с текстовыми данными. Поскольку Gretel основан на RNN-сетях, он требует больше вычислительной мощности, поэтому при работе с ним лучше использовать Google Colab, а не грузить личный компьютер. https://synthetics.docs.gretel.ai/en/stable/
👍7
Forwarded from Digital Dinner
This media is not supported in your browser
VIEW IN TELEGRAM
Фантазии нейросети на стихи А.С. Пушкина

Видео сделано в DALL-E 2.
Озвучено нейросетью через сервис для озвучки текста - CyberVoice – генератор голоса на основе ИИ.
На данный момент использовать можно абсолютно бесплатно.

Регистрируемся > заходим в раздел тарифы > выбираем самый дорогой листая вниз (в данный момент всё бесплатно) > меню > свободный текст > новый проект > далее выбираем голос и вводим текст > жмём иконку в виде микрофона.

Голос с видео "Убийца чудовищ".

@digitaldiner
🔥8
😱3 типа аномалий в данных
Дата-аналитики и специалисты по Machine Learning часто сталкиваются с аномалиями в данных – случаями, которые не принадлежат к известному шаблону и выделяются, статистически отличаются от остальных наблюдений. Существует 3 типа аномалий:
• точечная аномалия, когда одна точка данных (наблюдение) в датасете находится далеко от остальных данных и представляет собой экстремум, неравномерность или отклонение, возникающее случайным образом и не связанное с общей закономерностью в данных. Точечная аномалия также известна как глобальный выброс, поскольку она значительно отличается от остального набора данных.
• контекстная аномалия, когда отдельный экземпляр выпадает из рассматриваемого контекста. Например, в случае данных временных рядов, таких как записи определенного количества во времени, контекст является временным. Точки данных, которые сильно отличаются от других данных в том же контексте, называются контекстуальными выбросами. К примеру, когда количество автомобилей, проезжающих через КПП на границе региона в марте, в среднем равно 1 тыс. за последние 20 лет. А в июне, когда стартует отпускной период, это число возрастает до 8 тысяч. Если число достигает 9 тысяч в марте, это будет считаться аномалией, а в летний период – не будет аномалией. Для ритейла характерно наблюдать всплеск числа покупателей в праздничный сезон. Но резкое увеличение продаж вне праздников или распродаж, можно назвать контекстуальным выбросом.
• Коллективная аномалия, когда группа коррелированных, взаимосвязанных или последовательных экземпляров значительно отличается от остальных данных, то эти точки данных в совокупности считаются аномальными. Для данных временных рядов это может выглядеть как типичные пики и спады, происходящие за пределами периода времени, когда сезонная последовательность является обычной, или как набор временных рядов, которые находятся в условиях выброса. Например, когда сразу большое количество компаний демонстрируют падение продаж в одно и то же время, хотя до этого был тренд на повышение.
https://medium.com/datadailyread/types-of-data-anomalies-2f6fb1747eb1
👍9
3 типа аномалий в данных
👍7
👍🏻10 лучших практик по именованию таблиц и полей в БД
Если бы каждый разработчик и аналитик соблюдал эти простые правила, реверс-инжиниринг стал бы приятным развлечением, а не трудоемкой работой. Чтобы облегчить работу с БД себе и коллегам, попробуйте эти простые правила:
1. Разделять слова подчеркиванием, если имя атрибута или таблицы БД состоит из 2-х и более слов. Это понятнее стиля camelCase, улучшает читаемость и снижает зависимость от платформы. Например, word_count.
2. Называть таблицы и столбцы полным и семантически понятными именами без привязки к типам данных. Экономия пары символов не даст ничего, кроме путаницы. Допустимо применять сокращения только там, где это всем известная аббревиатура.
3. Писать название атрибута со строчной буквы, чтобы избежать путаницы с ключевыми словами SQL в верхнем регистре. Это также повысит скорость набора текста.
4. Не использовать цифры в названии таблиц и столбцов.
5. Называть таблицы понятно, но кратко.
6. Называть таблицы и столбцы в единственном числе. Например, author вместо authors
7. Называть таблицы-связки в алфавитном порядке. Например, author_book
8. При создании индекса называть его по имени таблицы и столбца. Например, CREATE INDEX person_ix_first_name_last_name ON person (first_name, last_name);
9. Для столбцов типа Boolean к имени добавлять префикс is_ или has_ . Например, is_admin или has_membership.
10. Для столбцов типа Date-Time к имени добавлять суффикс _at или _time. Например, ordered_at или order_time.
https://dev.to/mohammadfaisal/how-to-design-a-clean-database-1e83
👍14
🔥Вместо Jupyter Notebook: преимущества Deepnote
Блокноты Jupyter уже много лет активно используются дата-анлитиками и специалистами по ML. Однако, несмотря на его популярность этого инструмента для исследований, он имеет существенные недостатки:
• Сложность в управлении версиями кода. Поскольку блокноты Jupyter хранятся в виде больших файлов JSON, объединение двух блокнотов практически невозможно. Как и использование привычного разработчикам Git-подобного инструмента версионности.
• Отсутствие интеграции с IDE, подсветки кода и подсказок. Обычно Data Scientist не является профессиональным разработчиком ПО, и поэтому инструменты, которые регулируют качество кода и помогают его улучшить, очень важны.
• Трудности в разработке через тестирование. Популярная методология разработки через тестирование (test-driven development) практически нереализуема в блокнотах Jupyter. Поэтому их нельзя использовать в серьезных конвейерах данных.
• Нелинейный рабочий процесс из-за перехода от одной ячейки к другой. Это может привести к невоспроизводимым экспериментам. Интерактивный способ кодирования и переходов между ячейками является одновременно одной из лучших функций Jupyter Notebook и его самой большой слабостью.
• Jupyter плохо подходит для выполнения длинных асинхронных задач с огромными объемами данных.
😡
Многие из этих недостатков устранены в альтернативе Jupyter Notebook под название Deepnote. Deepnote, как и Jupyter, представляет собой интерактивный блокнот для решения DS-задач, однако выигрывает у конкурента по ряду преимуществ 💥:
• Совместная работа в реальном времени – подобно Google-документам, можно поделиться ссылкой на свой блокнот с коллегами, предоставив каждому нужный уровень доступа (просмотр, выполнение, комментирование, редактирование и полный доступ). Кроме того, каждая ячейка в Deepnote позволяет соавтору оставлять комментарии, избавляя от необходимости переключаться между приложениями для обмена сообщениями и кодом для предоставления отзыва. Имея доступ к коду разработчика, менеджеры и другие члены команды могут легко отслеживать ход разработки кода и жизненный цикл разработки.
• Простое развертывание управляемой среды - Deepnote берет на себя работу по установке модулей и настройке среды для запуска Python, включая управление версиями. Дополнительно к Python, Deepnote также поддерживает выполнение SQL-запросов.
• Deepnote имеет возможность встраивать блоки кода в блоги и другие репозитории, устраняя необходимость создавать GitHub специально для этой цели. Ячейки Deepnote позволяют встроить только код, встроить только выходные данные и встроить как код, так и выходные данные.
• Визуализация данных - блокноты Jupyter почти не предоставляют способов выполнения EDA без явного написания кода. Deepnote предоставляет инструмент визуализации в самом блокноте - блок визуализации позволяет генерировать информацию, как и с библиотеками Python, но без необходимости написания кода.
• Экономия времени и денег - поскольку Deepnote отвечает за управление кодом и его обработку, командам не нужно передавать свои кодовые конвейеры в такие инструменты, как GitHub, BitBucket и т. д., тем самым снижая эксплуатационные расходы.
Попробуйте бесплатно: https://deepnote.com/
👍18🔥3
💥Вместо циклов: 3 альтернативы в Python
Разработчики и Data Scientist’ы знают, что циклы в Python работают медленно. Вместо них можно использовать следующие альтернативы:
• Map – позволяет применить функцию к каждому значению итерируемого объекта (список, кортеж и т. д.);
• Filter – подойдет для фильтрации значений из итерируемого объекта (списка, кортежа, наборов и т. д.). Условия фильтрации задаются внутри функции, которая передается в качестве аргумента функции фильтра.
• Reduce - применяется итеративно ко всем значениям итерируемого объекта и возвращает только одно значение.
Примеры использования: https://medium.com/codex/3-most-effective-yet-underutilized-functions-in-python-d865ffaca0bb
👍5🤔4
🤔Хозяйке Data Scientist’у на заметку: Python-библиотека для работы с календарем
Python включает встроенный модуль календаря, который обрабатывает операции, связанные с датой и днями недели. Функции и классы этого модуля используют европейский календарь, где понедельник является первым днем недели, а воскресенье — последним.
Чтобы использовать эту библиотеку, ее нужно сперва импортировать в свой код:
import calendar
Затем можно вызвать функции, например, вывести имена месяцев в списке:
month_names = list(calendar.month_name[1:])
print(month_names)
https://docs.python.org/3/library/calendar.html
👍8
#тест
Вероятность отвергнуть нулевую гипотезу при заданном распределении наблюдений это
Anonymous Quiz
55%
Ошибка 2-го рода
16%
Плотность вероятности
18%
Функция мощности
11%
Случайная величина
👍13
🗒Нужно логировать события 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
👍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
🔥3👍1
Грустно и точка: В России разрабатывается нейросеть для выявления депрессии

В России делают нейросеть для поиска депрессии. Исследователи утверждают, что им удалось выявить маркеры депрессивного расстройства у людей и удалось обучить ИИ выявлять их.

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

Разработчики обещают мобильное приложение, которое будет анализировать речь пользователя и в случае чего посоветует обратиться к специалисту.

@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
👍8
Как организовать потоковую обработку данных. Часть 2!

В первой части Евгений Ненахов из центра 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
👍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
👍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
👍6