Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Все самое полезное для дата сайентиста в одном канале. Учиться у нас: clc.to/6qVHgg По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9
Ko'proq ko'rsatish📈 Telegram kanali Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение analitikasi
Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение (@dsproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 299 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 124-o'rinni va Rossiya mintaqasida 35 824-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 18 299 obunachiga ega bo‘ldi.
06 Noyabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -43 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.87% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 3.51% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 257 marta ko‘riladi; birinchi sutkada odatda 643 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 2 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent сайентиста, llm, буст, навигация, openai kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Все самое полезное для дата сайентиста в одном канале.
Учиться у нас: clc.to/6qVHgg
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 07 Noyabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
Ma'lumotlar yuklanmoqda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 07 Noyabr | +2 | |||
| 06 Noyabr | +2 | |||
| 05 Noyabr | +1 | |||
| 04 Noyabr | +2 | |||
| 03 Noyabr | +3 | |||
| 02 Noyabr | +1 | |||
| 01 Noyabr | +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 |
