Библиотека дата-сайентиста | 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 299 подписчиков, занимая 7 124 место в категории Технологии и приложения и 35 824 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 18 299 подписчиков.
Согласно последним данным от 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) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
Загружаем данные
| Дата | Привлечение подписчиков | Упоминания | Каналы | |
| 07 ноября | +2 | |||
| 06 ноября | +2 | |||
| 05 ноября | +1 | |||
| 04 ноября | +2 | |||
| 03 ноября | +3 | |||
| 02 ноября | +1 | |||
| 01 ноября | +1 |
plt.subplots(layout="constrained"). Matplotlib перераспределит место между осями и подписями, сохраняя заданную сетку. Включать режим обычно нужно до добавления Axes.
На изображении один и тот же синтетический массив, размер фигуры и шрифт. Сверху — стандартная компоновка с обрезанной подписью. Снизу — constrained layout, где подписи помещаются.
Не добавляйте следом tight_layout(): этот вызов выключает constrained layout. Если места слишком мало, увеличьте фигуру. Произвольные графические элементы всё равно могут обрезаться или перекрываться.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста| 2 | MLflow: что меняется при переназначении alias
Alias champion в Model Registry можно переназначить с одной версии на другую. При загрузке URI вида models:/fraud@champion MLflow берёт версию, на которую alias указывает в этот момент. Имя fraud здесь условное.
После переназначения следующий вызов load_model по этому URI загрузит новую версию. Уже загруженный Python-объект сам от этого не обновится.
Для воспроизводимого эксперимента сохраняйте номер загруженной версии. Имя champion остаётся подвижной ссылкой и не заменяет проверку модели перед внедрением.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 718 |
| 3 | В парном bootstrap выбирайте строки целиком
Если x и y относятся к одному наблюдению, при пересэмплировании нужно сохранить их пару. Например, для корреляции двух измерений у одних и тех же объектов.
В scipy.stats.bootstrap параметр paired=True выбирает один массив индексов и применяет его ко всем входным массивам. При paired=False каждый массив пересэмплируется независимо. На схеме видно, какие пары сохраняет общий набор индексов.
Одинаковой длины массивов для парности недостаточно: она определяется тем, как собраны данные. Обычный iid bootstrap также не учитывает автоматически временную зависимость или кластеры.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 784 |
| 4 | Почему 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: у неизвестного нет однозначного булева значения.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 828 |
| 5 | Куда HistGradientBoosting направляет строки с NaN
В HistGradientBoostingClassifier пропуски можно оставить как NaN. При обучении дерево в каждом разбиении выбирает для них левую или правую ветвь по выигрышу от разбиения. При предсказании использует выученное направление.
Есть отдельный случай: в обучении у этого признака пропусков не было, а при предсказании появился NaN. Тогда строка уйдёт в дочерний узел с большим числом обучающих объектов.
Это поведение конкретного классификатора scikit-learn. Выбирайте между NaN и импутацией по результатам валидации на вашей задаче.
Документация и примеры
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 910 |
| 6 | 📊 Расстояние между распределениями в понятных единицах
В SciPy wasserstein_distance([0, 1, 3], [5, 6, 8]) возвращает 5,0. Второй набор сдвинут на пять единиц. На схеме каждая из трёх масс переносится на это расстояние.
Wasserstein-1 — минимальная стоимость переноса вероятностной массы: масса × расстояние. Для одномерных распределений это также площадь между CDF.
Аргументы функции — наблюдения или значения поддержки, а не частоты гистограммы. Если у значений есть частоты, передавайте их через u_weights и v_weights. Без весов наблюдения равновесны.
Результат измеряется в единицах исходной величины и зависит от масштаба. Это не p-value и не универсальный порог дрейфа данных.
🔗 Функция и примеры SciPy
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 027 |
| 7 | 📊 Выделить область и подсветить точки в Altair
На scatter plot хочется быстро рассмотреть часть объектов. В Altair прямоугольное выделение задаётся через alt.selection_interval() и подключается с add_params(brush).
В официальном примере условие alt.when(brush) сохраняет цвет по числу цилиндров внутри выделения, а остальные точки делает серыми. Это изменение цвета, а не фильтрация данных.
На нашей статичной схеме с синтетическими данными видно, что внешние точки остаются на графике. Потянуть рамку можно в интерактивном примере по ссылке ниже. Его оси — Horsepower и Miles_per_Gallon.
Показанный API с alt.when соответствует текущему примеру Altair 6.
🔗 Интерактивный пример и код
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 024 |
| 8 | 📊 STL: почему period=12, а seasonal=13
Для месячного ряда с годовым циклом period=12 означает 12 наблюдений в сезоне. А seasonal=13 задаёт нечётную длину окна сезонного сглаживания. Это разные параметры.
STL с помощью LOESS раскладывает ряд на тренд, сезонность и остаток. На графике показана декомпозиция синтетического месячного ряда с этими настройками.
robust=True уменьшает влияние больших ошибок через веса при сглаживании. Он не удаляет выбросы из исходных данных.
Сначала проверьте регулярность ряда и смысл выбранного периода. Сама декомпозиция не даёт прогноз. Для него нужна отдельная модель, например в составе STLForecast.
🔗 Разбор STL в statsmodels
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 056 |
| 9 | 🔔 Последние дни акции Proglib Academy! Покупаете один курс — второй получаете в подарок. Успейте до 31 октября.
Можно совместить два направления и прокачать навыки сразу в нескольких областях:
⬆️ ИИ для разработчиков — системная работа с ИИ на всех этапах разработки: от планирования задачи до написания кода, тестирования и ревью.
⬆️ Разработка ИИ-агентов — создание собственных агентов для работы с данными, API и внешними сервисами. В программе — RAG, MCP, LangGraph, n8n и тестирование агентов.
Первый курс поможет встроить ИИ в привычный процесс разработки, второй — перейти к созданию собственных интеллектуальных инструментов.
🎁 А если эти направления не совсем то, что нужно, можно выбрать любые две программы из каталога.
Осталось совсем немного времени — акция заканчивается 31 октября!
👉 Подобрать свою пару курсов | 987 |
| 10 | 🧠 Можно ли верить вероятности 0,8
Модель хорошо ранжирует объекты. Это ещё не значит, что её вероятности надёжны. Среди прогнозов около 0,8 у калиброванной бинарной модели должно быть примерно 80% положительных исходов.
Reliability diagram группирует прогнозы в интервалы. По горизонтали — средняя предсказанная вероятность, по вертикали — фактическая доля положительных. На учебном графике 0,9 соответствует доле 0,75: модель излишне уверена.
Калибратор нельзя учить на in-sample прогнозах базовой модели. CalibratedClassifierCV использует для калибровки out-of-fold прогнозы.
Проверяйте число объектов в интервалах. Даже меньший Brier score сам по себе не доказывает лучшую калибровку: он зависит и от других свойств прогноза.
🔗 Калибровка в scikit-learn
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 950 |
| 11 | Алгоритм знает, где вы будете 7-го ноября 😎
RecSys-митап в Москве для тех, кто уже строит рекомендательные системы и хочет делать это еще лучше.
В программе — доклады от топовых экспертов Сбера с разбором кейсов, свежих подходов и неочевидных решений.
После официальной части — нетворкинг. Время в узком кругу профессионалов и сообщества Зеленый RecSys.
Участие бесплатное, но количество мест ограничено.
Москва. Суббота. 7 ноября. RecSys!
➡️ регистрируйтесь | 1 194 |
| 12 | 📊 Две строки превратились в четыре после 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 055 |
| 13 | ⚡ Только до 31 октября: покупайте один курс Proglib Academy и получайте второй в подарок!
Что можно освоить?
⏬ ИИ для разработчиков — применение ИИ на разных этапах разработки: от работы с кодом до тестирования, ревью и организации рабочего процесса.
⏬ Разработка ИИ-агентов — создание собственных агентов с памятью, интеграциями и доступом к внешним инструментам.
Научитесь не просто работать с нейросетями, а создавать решения, которые помогают автоматизировать реальные задачи 📍
Можно выбрать эту пару или сочетать любые другие курсы из каталога — под свои интересы и цели.
🎁 Один курс оплачиваете, второй получаете бесплатно. Акция длится до 31 октября.
✨ Прокачать скиллы по акции | 1 127 |
| 14 | 📊 Сколько запросов укладывается в 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 171 |
| 15 | Скиллов для AI-агентов становится всё больше, и уже непонятно, что где используется и как работает!
Мы делаем Hollon AMS. В визуальном редакторе из скиллов собираются процессы, для них задаются общие правила, а разных AI-агентов можно подключить через MCP. Разработчик может прогонять сценарии и разбираться, где что сломалось. Тимлид или CTO видит, как устроены процессы, какие у них версии и что они дают по KPI.
Это не только про разработку: подойдёт для любого процесса, который можно отдать AI-агенту. Попробовать можно в облаке, а для компаний есть возможность развёртывания в закрытом контуре.
Попробуйте собрать первый процесс
Если интересны готовые кейсы или хочется обсудить свой, пишите: dmitriy.parasyna@hollon.tech | 992 |
| 16 | 🧠 Один клиент и в train, и в test?
У клиента десять событий. Случайно разделили строки, и часть его истории оказалась по обе стороны. Такая проверка уже не отвечает на вопрос «как модель работает на новых клиентах».
GroupKFold разделяет целые группы. На схеме у каждого клиента две строки, и в каждом разбиении они вместе. За три фолда каждая группа один раз становится тестовой.
Передайте идентификатор клиента в groups и проверьте, что множества групп train и test не пересекаются. Уникальных групп должно быть не меньше числа фолдов.
Хронологию и баланс классов этот метод не гарантирует. Преобразования данных обучайте только на train каждого фолда.
🔗 Документация GroupKFold
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста | 1 229 |
| 17 | Как присоединить значение, известное на момент события
Датчик прислал событие в 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 286 |
| 18 | 📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше.
В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.
Например, можно совместить два направления по работе с ИИ:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.
💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета.
А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога.
Акция действует до 31 октября включительно ⏳
⏮️ Пора прокачать свой стек | 1 335 |
| 19 | Модель училась на log(y). Что вернёт predict?
Обучили регрессию на логарифме целевой переменной, а прогноз сравнили с исходными суммами. Код может отработать без ошибки, хотя шкалы уже разные.
В scikit-learn есть TransformedTargetRegressor: он преобразует y перед обучением и применяет обратное преобразование к прогнозам. Для логарифма это пара func=np.log и inverse_func=np.exp. Поэтому predict возвращает результат в исходной шкале.
Прямое и обратное преобразования хранятся вместе с моделью. Их не приходится вручную повторять в каждом месте, где нужен прогноз. Но обычный log требует строго положительных значений y.
Есть и статистический нюанс: exp от среднего в логарифмической шкале обычно не равно среднему в исходной. Обёртка возвращает прогноз в нужных единицах, но сама по себе не устраняет это смещение и не обещает роста качества. Проверяйте метрику в той шкале, в которой будете использовать результат.
Преобразование целевой переменной
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста | 1 338 |
| 20 | Как Polars убирает лишнюю работу из запроса
Нужно посчитать сумму покупок по пользователям из одной страны. В исходной таблице десятки колонок. Зачем тащить их все до финальной группировки?
Lazy API Polars позволяет оптимизировать план до выполнения. Два полезных механизма работают ближе к чтению данных:
— predicate pushdown переносит фильтрацию как можно раньше. В нашем примере это условие по стране
— projection pushdown оставляет нужные колонки: идентификатор пользователя, сумму и страну для фильтра
Колонка страны нужна, даже если её не будет в результате. Оптимизатор учитывает не только финальный список полей, но и то, что требуется промежуточным операциям.
Выигрыш зависит от источника и плана. Ранний фильтр не обязательно означает, что движок физически прочитает меньше байтов. Но сам вопрос полезный: какие данные действительно нужны для результата и на каком этапе можно отбросить остальные?
Оптимизации Lazy API Polars
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста | 1 406 |
