Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Все самое полезное для дата сайентиста в одном канале. Учиться у нас: clc.to/6qVHgg По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
تُعد قناة Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение (@dsproglib) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 18 453 مشتركاً، محتلاً المرتبة 7 203 في فئة التكنولوجيات والتطبيقات والمرتبة 36 416 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 18 453 مشتركاً.
بحسب آخر البيانات بتاريخ 30 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -69، وفي آخر 24 ساعة بمقدار -1، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 7.26%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.10% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 340 مشاهدة. وخلال اليوم الأول يجمع عادةً 756 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 7.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل сайентиста, llm, буст, навигация, openai.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Все самое полезное для дата сайентиста в одном канале.
Учиться у нас: clc.to/6qVHgg
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 01 يوليو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
● При покупке VIP-тарифа (осталось 4 места) нового потока «Разработка ИИ-агентов» получаете в подарок курс «AgentOps» + ещё один любой курс Академии (например, «Математика для разработки AI», чтобы глубже освоить направление). ● Три курса обойдутся вам всего в 134.000 ₽ вместо 263.000 ₽. ● Доступна удобная беспроцентная рассрочка, платеж можно разбить на несколько комфортных частей.Хотите прокачать свое портфолио продакшн-кейсом, но пока сомневаетесь? Пройдите наш бесплатный демо-урок, чтобы протестировать формат перед покупкой. 👉 Забрать 3 курса по цене 1 и получить демо-урок
# x: [B, F, N, D] # Temporal attention — последовательность это кадры x_t = rearrange(x, "b f n d -> (b n) f d") x_t = temporal_attention(x_t, x_t, x_t) x = rearrange(x_t, "(b n) f d -> b f n d", n=N) # Spatial attention — последовательность это патчи x_s = rearrange(x, "b f n d -> (b f) n d") x_s = spatial_attention(x_s, x_s, x_s) x = rearrange(x_s, "(b f) n d -> b f n d", f=F)Просто перекладываем тензор — и стандартный attention блок работает нужным образом. 🔗 Ссылка на пост 📍 Навигация: Вакансии • Задачи • Собесы Библиотека дата-сайентиста #буст
from category_encoders import TargetEncoder
enc = TargetEncoder()
X_train['city'] = enc.fit_transform(X_train['city'], y_train)
📊 Frequency encoding — заменяем категорию её частотой в данных. Просто, без утечки, хорошо работает с деревьями:
freq = df['city'].value_counts(normalize=True)
df['city_freq'] = df['city'].map(freq)
🌀 Cyclic encoding — для часа, дня недели, месяца. Синус и косинус сохраняют цикличность:
df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24)
df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24)
📋 Шпаргалка выбора
- Мало уникальных значений (< 15) → one-hot
- Есть порядок → ordinal encoding
- Высокая кардинальность → target или frequency encoding
- Временные признаки → cyclic encoding
- XGBoost / LightGBM → нативная поддержка категорий, можно не кодировать вообще
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст— При покупке VIP-тарифа (осталось 4 места) нового потока «ИИ-агенты» вы получаете в подарок доступ к курсу «AgentOps» + ещё один любой курс Академии на выбор — В деньгах это два топовых курса по автоматизации и контролю ИИ всего за 134.000 ₽ вместо 263.000 ₽ 🔥 А за счет третьего курса (например, можно выбрать «Математику») вы соберете мощный стек и освоите целое востребованное направление. — Платеж можно разбить на несколько частей с помощью беспроцентной рассрочки.👉 Получить демо-урок и зафиксировать спецпредложение 3 в 1
A AND NOT(A)
— x > 5 AND x <= 5
— is_in([]) — пустое множество
— a > 5 AND a < 3 — несовместимые диапазоны
— два непересекающихся is_between
— a == 5 AND a > 10
Полезно при программно генерируемых фильтрах где параметры могут дать low > high или взаимоисключающие условия. Никаких изменений в коде не нужно.
3️⃣ is_sorted() для DataFrame и Expr
Series.is_sorted() давно есть, теперь добавили для DataFrame и выражений:
df.is_sorted("a") # True/False
df.is_sorted("b", descending=True)
df.select(pl.col("a").is_sorted()) # внутри select/filter
Поддерживает descending и nulls_last. Пока помечено как unstable.
🔛 Релиз-блог
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст
df.query("age > 30 and city == 'Moscow'")
df.query("category in @my_list") # переменные через @
Новые колонки
np.select() для нескольких условий вместо вложенных np.where():
conditions = [df.score > 90, df.score > 70, df.score > 50]
choices = ["A", "B", "C"]
df["grade"] = np.select(conditions, choices, default="F")
Пропуски
Процент null по каждой колонке — одной строкой:
df.isnull().mean().sort_values(ascending=False)
Удалить колонки где больше 50% null:
df.dropna(thresh=len(df) * 0.5, axis=1)
Агрегация
Именованные агрегации — результат сразу с нужными именами:
df.groupby("region").agg(
total_sales=("sales", "sum"),
avg_rating=("rating", "mean"),
n_orders=("order_id", "count"),
)
transform() — добавить агрегат как колонку не теряя строки:
df["pct_of_region"] = df["sales"] / df.groupby("region")["sales"].transform("sum")
Feature engineering
Процентильный ранг:
df["rank"] = df["sales"].rank(pct=True)
Биннинг:
df["bucket"] = pd.cut(df["age"], bins=[0,18,35,60,100],
labels=["teen","young","mid","senior"])
Z-score для поиска выбросов:
from scipy import stats
df["zscore"] = stats.zscore(df["value"])
outliers = df[df["zscore"].abs() > 3]
Даты
Компоненты даты сразу все:
df["year"] = df["date"].dt.year
df["month"] = df["date"].dt.month
df["weekday"] = df["date"].dt.day_name()
df["is_weekend"] = df["date"].dt.dayofweek >= 5
✔️ Больше хитростей в прикрепленной шпаргалке
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст
# было:
# optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3)
# стало:
from gefen import Gefen
optimizer = Gefen(model.parameters(), lr=1e-3)
➡️ Gefen квантизирует состояния оптимизатора до 8 бит используя подход основанный на блочно-диагональном приближении матрицы Гессиана. Это не просто округление — точность квантизации подбирается так чтобы не ронять качество обучения.
➡️ Работает с PyTorch DDP, FSDP, DeepSpeed ZeRO. Интегрируется в Hugging Face Trainer через optimizer_cls_and_kwargs. Есть версия GefenMuon — Muon с 4-кратным сокращением памяти оптимизатора.
pip install gefen
🔗 Ссылка на Gefen
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#бустRNN → простая, страдает от vanishing gradient LSTM → long + short memory, 3 гейта, решает vanishing GRU → упрощённый LSTM, 2 гейта, быстрее обучается Bi-RNN → читает последовательность в обе стороныКогда что брать — Короткие последовательности → RNN (или вообще не RNN) — Длинные зависимости → LSTM — Скорость важнее качества → GRU — Нужен контекст с обеих сторон → Bi-LSTM / Bi-GRU — Очень длинные последовательности → Transformer PyTorch — минимально
lstm = nn.LSTM(input_size=10, hidden_size=64,
num_layers=2, batch_first=True)
out, (h_n, c_n) = lstm(x) # x: (batch, seq_len, input_size)
Типичные проблемы
— Vanishing gradient → LSTM/GRU + gradient clipping
— Exploding gradient → clip_grad_norm_ с порогом 1.0
— Переобучение → dropout между слоями
— Медленно → GRU вместо LSTM, или Transformer
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст500 байт/запись × 10 000 запросов/с × 100 записей/запрос = 500 МБ/с Лимит одной партиции = 24 МБ/с Нужно минимум 21 партицияНаивные решения и почему они не работают Случайный суффикс → нельзя искать по значению, не знаешь в какой партиции данные. Хэш от значения → данные распределены равномерно, но порядок потерян. Нельзя вернуть отсортированный результат. Первый символ → 5 400 уникальных символов в реальных данных (Unicode), часть символов всё равно не помещается в одну партицию. Правильное решение: границы по перцентилям Разбить отсортированные данные на N равных диапазонов и сохранить граничные значения:
import bisect, unicodedata
# Предварительно вычисленные границы из реальных данных
BOUNDARIES = ['', 'agartha', 'barstow', 'can you', ...]
def shard_id(title):
normalized = unicodedata.normalize('NFKD', title.lower())
return bisect.bisect(BOUNDARIES, normalized) - 1
Поиск границы — O(log n) через bisect, константа с предвычисленным списком.
Урок для дата сайнтиста
Это та же проблема что при партиционировании данных в pandas, Spark или Polars: если партиции неравномерные — одни воркеры простаивают, другие перегружены (data skew).
Решение одинаковое: не делить по первому символу или хэшу, а вычислять границы по перцентилям реального распределения данных. В Spark это называется range partitioning, в pandas — pd.qcut.
Данные всегда распределены неравномерно. Проектировать партиции нужно под реальное распределение, а не под удобство.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#бустДля этого курса мы ищем классных спикеров-практиков.➡️ Что требуется от вас? ● BigTech бэкграунд: опыт работы разработчиком, тимлидом или архитектором в крупных технологических компаниях. ● Опыт управляемой разработки с ИИ: вы на практике знаете, как встроить AI-инструменты в личный или командный workflow (от постановки задачи до ревью AI-кода). ● Системный подход: умение превращать хаотичную генерацию кода в предсказуемый инженерный процесс (работа с архитектурой, чек-листами, легаси и покрытием тестами). ➡️ Что мы предлагаем? ● Достойную оплату за подготовку материалов и проведение занятий. ● Мощное продвижение личного бренда через медиаресурсы Proglib (наша аудитория — 1 млн+ айтишников). ● Возможность публиковать свои экспертные материалы и статьи на наших площадках. ● Доступ к сильному и закрытому профессиональному сообществу. Также мы ищем консультанта программы. Если вы практикующий эксперт и готовы помочь нам отвалидировать программу курса, дать рекомендации по актуальности тем и финальным результатам обучения — мы вас очень ждем. ➡️ Как с нами связаться: Telegram: @alinaa_kh E-mail: alina@proglib.io
«AI-инструменты в разработке: пишем код быстрее»Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины. 🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei). 👉 Узнать, как ускорить разработку с AI
tinystories_tokenized = default_tokenize(
name="roneneldan/TinyStories",
tokenizer=llama3_tokenizer,
)
model = default_train(
name="marin-nano-tinystories",
tokenized=tinystories_tokenized, # зависимость явная
model_config=llama_nano,
train_config=nano_train_config,
)
С помощью Marin обучили первую open-source 8B модель которая превзошла Llama 3.1 8B. Скрипт обучения и ретроспектива опубликованы — можно воспроизвести самостоятельно.
➡️ Фреймворк
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
