Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Все самое полезное для дата сайентиста в одном канале. Учиться у нас: clc.to/6qVHgg По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9
Показати більше📈 Аналітичний огляд Telegram-каналу Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Канал Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение (@dsproglib) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 18 298 підписників, посідаючи 7 124 місце в категорії Технології та додатки та 35 824 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 18 298 підписників.
За останніми даними від 06 листопада, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -43, а за останні 24 години на -1, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 6.87%. Протягом перших 24 годин після публікації контент зазвичай збирає 3.51% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 257 переглядів. Протягом першої доби публікація в середньому набирає 643 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 2.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як сайентиста, llm, буст, навигация, openai.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Все самое полезное для дата сайентиста в одном канале.
Учиться у нас: clc.to/6qVHgg
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9”
Завдяки високій частоті оновлень (останні дані отримано 07 листопада, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
Завантажуємо дані
| Дата | Залучення підписників | Згадування | Канали | |
| 06 листопада | +2 | |||
| 05 листопада | +1 | |||
| 04 листопада | +2 | |||
| 03 листопада | +3 | |||
| 02 листопада | +1 | |||
| 01 листопада | +1 |
champion в Model Registry можно переназначить с одной версии на другую. При загрузке URI вида models:/fraud@champion MLflow берёт версию, на которую alias указывает в этот момент. Имя fraud здесь условное.
После переназначения следующий вызов load_model по этому URI загрузит новую версию. Уже загруженный Python-объект сам от этого не обновится.
Для воспроизводимого эксперимента сохраняйте номер загруженной версии. Имя champion остаётся подвижной ссылкой и не заменяет проверку модели перед внедрением.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста| 2 | В парном bootstrap выбирайте строки целиком
Если x и y относятся к одному наблюдению, при пересэмплировании нужно сохранить их пару. Например, для корреляции двух измерений у одних и тех же объектов.
В scipy.stats.bootstrap параметр paired=True выбирает один массив индексов и применяет его ко всем входным массивам. При paired=False каждый массив пересэмплируется независимо. На схеме видно, какие пары сохраняет общий набор индексов.
Одинаковой длины массивов для парности недостаточно: она определяется тем, как собраны данные. Обычный iid bootstrap также не учитывает автоматически временную зависимость или кластеры.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 743 |
| 3 | Почему True | NA даёт True
У nullable boolean в pandas три значения: True, False и NA. Результат будет NA, только если его нельзя определить по известному операнду. Поэтому True | NA даёт True, а True & NA — NA. На карточке — четыре сочетания для dtype="boolean".
У фильтрации другое правило: NA в булевой маске исключает строку. Для данных [10, 20, 30] маска [True, False, NA] оставит [10]. Если нужно сохранить и строки с NA в маске, задайте это явно: фильтрация с mask.fillna(True) оставит [10, 30].
bool(pd.NA) при этом вызывает TypeError: у неизвестного нет однозначного булева значения.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 799 |
| 4 | Куда HistGradientBoosting направляет строки с NaN
В HistGradientBoostingClassifier пропуски можно оставить как NaN. При обучении дерево в каждом разбиении выбирает для них левую или правую ветвь по выигрышу от разбиения. При предсказании использует выученное направление.
Есть отдельный случай: в обучении у этого признака пропусков не было, а при предсказании появился NaN. Тогда строка уйдёт в дочерний узел с большим числом обучающих объектов.
Это поведение конкретного классификатора scikit-learn. Выбирайте между NaN и импутацией по результатам валидации на вашей задаче.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 883 |
| 5 | 📊 Расстояние между распределениями в понятных единицах
В SciPy wasserstein_distance([0, 1, 3], [5, 6, 8]) возвращает 5,0. Второй набор сдвинут на пять единиц. На схеме каждая из трёх масс переносится на это расстояние.
Wasserstein-1 — минимальная стоимость переноса вероятностной массы: масса × расстояние. Для одномерных распределений это также площадь между CDF.
Аргументы функции — наблюдения или значения поддержки, а не частоты гистограммы. Если у значений есть частоты, передавайте их через u_weights и v_weights. Без весов наблюдения равновесны.
Результат измеряется в единицах исходной величины и зависит от масштаба. Это не p-value и не универсальный порог дрейфа данных.
🔗 Функция и примеры SciPy
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 009 |
| 6 | 📊 Выделить область и подсветить точки в Altair
На scatter plot хочется быстро рассмотреть часть объектов. В Altair прямоугольное выделение задаётся через alt.selection_interval() и подключается с add_params(brush).
В официальном примере условие alt.when(brush) сохраняет цвет по числу цилиндров внутри выделения, а остальные точки делает серыми. Это изменение цвета, а не фильтрация данных.
На нашей статичной схеме с синтетическими данными видно, что внешние точки остаются на графике. Потянуть рамку можно в интерактивном примере по ссылке ниже. Его оси — Horsepower и Miles_per_Gallon.
Показанный API с alt.when соответствует текущему примеру Altair 6.
🔗 Интерактивный пример и код
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 014 |
| 7 | 📊 STL: почему period=12, а seasonal=13
Для месячного ряда с годовым циклом period=12 означает 12 наблюдений в сезоне. А seasonal=13 задаёт нечётную длину окна сезонного сглаживания. Это разные параметры.
STL с помощью LOESS раскладывает ряд на тренд, сезонность и остаток. На графике показана декомпозиция синтетического месячного ряда с этими настройками.
robust=True уменьшает влияние больших ошибок через веса при сглаживании. Он не удаляет выбросы из исходных данных.
Сначала проверьте регулярность ряда и смысл выбранного периода. Сама декомпозиция не даёт прогноз. Для него нужна отдельная модель, например в составе STLForecast.
🔗 Разбор STL в statsmodels
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 049 |
| 8 | 🔔 Последние дни акции Proglib Academy! Покупаете один курс — второй получаете в подарок. Успейте до 31 октября.
Можно совместить два направления и прокачать навыки сразу в нескольких областях:
⬆️ ИИ для разработчиков — системная работа с ИИ на всех этапах разработки: от планирования задачи до написания кода, тестирования и ревью.
⬆️ Разработка ИИ-агентов — создание собственных агентов для работы с данными, API и внешними сервисами. В программе — RAG, MCP, LangGraph, n8n и тестирование агентов.
Первый курс поможет встроить ИИ в привычный процесс разработки, второй — перейти к созданию собственных интеллектуальных инструментов.
🎁 А если эти направления не совсем то, что нужно, можно выбрать любые две программы из каталога.
Осталось совсем немного времени — акция заканчивается 31 октября!
👉 Подобрать свою пару курсов | 965 |
| 9 | 🧠 Можно ли верить вероятности 0,8
Модель хорошо ранжирует объекты. Это ещё не значит, что её вероятности надёжны. Среди прогнозов около 0,8 у калиброванной бинарной модели должно быть примерно 80% положительных исходов.
Reliability diagram группирует прогнозы в интервалы. По горизонтали — средняя предсказанная вероятность, по вертикали — фактическая доля положительных. На учебном графике 0,9 соответствует доле 0,75: модель излишне уверена.
Калибратор нельзя учить на in-sample прогнозах базовой модели. CalibratedClassifierCV использует для калибровки out-of-fold прогнозы.
Проверяйте число объектов в интервалах. Даже меньший Brier score сам по себе не доказывает лучшую калибровку: он зависит и от других свойств прогноза.
🔗 Калибровка в scikit-learn
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 932 |
| 10 | Алгоритм знает, где вы будете 7-го ноября 😎
RecSys-митап в Москве для тех, кто уже строит рекомендательные системы и хочет делать это еще лучше.
В программе — доклады от топовых экспертов Сбера с разбором кейсов, свежих подходов и неочевидных решений.
После официальной части — нетворкинг. Время в узком кругу профессионалов и сообщества Зеленый RecSys.
Участие бесплатное, но количество мест ограничено.
Москва. Суббота. 7 ноября. RecSys!
➡️ регистрируйтесь | 1 172 |
| 11 | 📊 Две строки превратились в четыре после merge
Заказы соединяют со справочником клиентов, а сумма покупок вдруг удваивается. Частая причина: ключ справочника оказался неуникальным.
На схеме у customer=7 две строки слева и две справа. Каждая левая совпадёт с каждой правой: 2 × 2 = 4 строки.
Если ожидаете «много заказов → один клиент», добавьте validate="many_to_one" в merge. pandas проверит уникальность правого ключа и на таком справочнике выбросит MergeError.
Для поиска заказов без пары пригодятся how="left", indicator=True и метка left_only. Учтите: null-ключи в pandas совпадают друг с другом, в отличие от обычного SQL.
🔗 Параметры pandas.merge
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 032 |
| 12 | ⚡ Только до 31 октября: покупайте один курс Proglib Academy и получайте второй в подарок!
Что можно освоить?
⏬ ИИ для разработчиков — применение ИИ на разных этапах разработки: от работы с кодом до тестирования, ревью и организации рабочего процесса.
⏬ Разработка ИИ-агентов — создание собственных агентов с памятью, интеграциями и доступом к внешним инструментам.
Научитесь не просто работать с нейросетями, а создавать решения, которые помогают автоматизировать реальные задачи 📍
Можно выбрать эту пару или сочетать любые другие курсы из каталога — под свои интересы и цели.
🎁 Один курс оплачиваете, второй получаете бесплатно. Акция длится до 31 октября.
✨ Прокачать скиллы по акции | 1 053 |
| 13 | 📊 Сколько запросов укладывается в 120 мс
Гистограмма показывает форму распределения, но долю до конкретного порога удобнее читать по ECDF. Ей не нужны интервалы гистограммы или сглаживание.
На синтетическом примере 5 из 8 задержек не превышают 120 мс. Значит, F(120) = 62,5%. Наблюдения ровно на пороге тоже учитываются.
В seaborn это sns.ecdfplot(x=latency_ms). Параметр complementary=True показывает 1 − F: здесь 37,5% запросов строго дольше 120 мс.
Это доля в выборке, а не гарантия для будущего трафика. С весами доля будет взвешенной.
🔗 ECDF в seaborn
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 055 |
| 14 | Скиллов для AI-агентов становится всё больше, и уже непонятно, что где используется и как работает!
Мы делаем Hollon AMS. В визуальном редакторе из скиллов собираются процессы, для них задаются общие правила, а разных AI-агентов можно подключить через MCP. Разработчик может прогонять сценарии и разбираться, где что сломалось. Тимлид или CTO видит, как устроены процессы, какие у них версии и что они дают по KPI.
Это не только про разработку: подойдёт для любого процесса, который можно отдать AI-агенту. Попробовать можно в облаке, а для компаний есть возможность развёртывания в закрытом контуре.
Попробуйте собрать первый процесс
Если интересны готовые кейсы или хочется обсудить свой, пишите: dmitriy.parasyna@hollon.tech | 992 |
| 15 | 🧠 Один клиент и в train, и в test?
У клиента десять событий. Случайно разделили строки, и часть его истории оказалась по обе стороны. Такая проверка уже не отвечает на вопрос «как модель работает на новых клиентах».
GroupKFold разделяет целые группы. На схеме у каждого клиента две строки, и в каждом разбиении они вместе. За три фолда каждая группа один раз становится тестовой.
Передайте идентификатор клиента в groups и проверьте, что множества групп train и test не пересекаются. Уникальных групп должно быть не меньше числа фолдов.
Хронологию и баланс классов этот метод не гарантирует. Преобразования данных обучайте только на train каждого фолда.
🔗 Документация GroupKFold
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 201 |
| 16 | Как присоединить значение, известное на момент события
Датчик прислал событие в 10:05, а настройки менялись в 10:00 и 10:10. Для анализа нужна настройка из 10:00. Обычное равенство времён её не найдёт, а ближайшая точка без направления может оказаться из будущего.
В DuckDB для этого подходит ASOF LEFT JOIN. Соединяйте по одинаковому sensor_id и условию event_time >= setting_time. Тогда для каждого события выбирается последнее значение справа с временем не позже события, включая точное совпадение. В примере предполагается одна настройка на пару «датчик + время».
Совпадение будет максимум одно. Если подходящей настройки нет, LEFT сохранит событие и вернёт NULL в правых полях. Без LEFT такая строка пропадёт.
Для проверки выведите обе временные метки явно. И отдельно учитывайте, когда запись реально стала доступна: старое время события не спасёт от утечки, если сама запись поступила позже. ASOF задаёт правило сопоставления, а не проверяет всю историю доступности данных.
ASOF JOIN в DuckDB
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста | 1 264 |
| 17 | 📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше.
В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.
Например, можно совместить два направления по работе с ИИ:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.
💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета.
А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога.
Акция действует до 31 октября включительно ⏳
⏮️ Пора прокачать свой стек | 1 321 |
| 18 | Модель училась на log(y). Что вернёт predict?
Обучили регрессию на логарифме целевой переменной, а прогноз сравнили с исходными суммами. Код может отработать без ошибки, хотя шкалы уже разные.
В scikit-learn есть TransformedTargetRegressor: он преобразует y перед обучением и применяет обратное преобразование к прогнозам. Для логарифма это пара func=np.log и inverse_func=np.exp. Поэтому predict возвращает результат в исходной шкале.
Прямое и обратное преобразования хранятся вместе с моделью. Их не приходится вручную повторять в каждом месте, где нужен прогноз. Но обычный log требует строго положительных значений y.
Есть и статистический нюанс: exp от среднего в логарифмической шкале обычно не равно среднему в исходной. Обёртка возвращает прогноз в нужных единицах, но сама по себе не устраняет это смещение и не обещает роста качества. Проверяйте метрику в той шкале, в которой будете использовать результат.
Преобразование целевой переменной
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста | 1 324 |
| 19 | Как Polars убирает лишнюю работу из запроса
Нужно посчитать сумму покупок по пользователям из одной страны. В исходной таблице десятки колонок. Зачем тащить их все до финальной группировки?
Lazy API Polars позволяет оптимизировать план до выполнения. Два полезных механизма работают ближе к чтению данных:
— predicate pushdown переносит фильтрацию как можно раньше. В нашем примере это условие по стране
— projection pushdown оставляет нужные колонки: идентификатор пользователя, сумму и страну для фильтра
Колонка страны нужна, даже если её не будет в результате. Оптимизатор учитывает не только финальный список полей, но и то, что требуется промежуточным операциям.
Выигрыш зависит от источника и плана. Ранний фильтр не обязательно означает, что движок физически прочитает меньше байтов. Но сам вопрос полезный: какие данные действительно нужны для результата и на каком этапе можно отбросить остальные?
Оптимизации Lazy API Polars
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста | 1 393 |
| 20 | Почему три значимых результата превращаются в два
Проверили четыре гипотезы и получили p-value 0.001, 0.01, 0.04, 0.2. По отдельности первые три проходят порог 0,05. После поправки Benjamini–Hochberg значения станут 0.004, 0.02, 0.0533…, 0.2. Останутся первые две.
В statsmodels такую поправку делает multipletests с явно заданным method="fdr_bh". По умолчанию используется Holm–Sidak, это другая процедура.
BH контролирует FDR: ожидаемую долю ложных отклонений среди всех отклонённых гипотез. Если отклонений нет, долю считают нулевой. Это не вероятность ошибки каждой отдельной находки. Контроль FWER, например методом Bonferroni, решает другую задачу: ограничивает вероятность хотя бы одного ложного отклонения в семействе.
У BH есть условия применимости. Для независимых тестов с корректными p-value контроль FDR обеспечивается, но переносить его на любую зависимость нельзя. И поправку нужно применять ко всему выбранному семейству проверок, а не только к удачным результатам.
Методы и параметры multipletests
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста | 1 308 |
