Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
18.5K subscribers
2.36K photos
119 videos
64 files
4.81K links
Все самое полезное для дата сайентиста в одном канале.

По рекламе: @proglib_adv

Курс по ML: https://clc.to/4hNluQ

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5b03124c8ba6dcaa121c9
Download Telegram
🤔 JSON, YAML, XML — что лучше и когда

Вопрос подписчика:
«Какие форматы сериализации данных вы чаще всего используете на работе или в своих проектах?»


Подписчик делится опытом:
В основном работал с YAML (иногда JSON) — он кажется мне самым читаемым.
XML в моей практике почти не встречался. А у вас? Есть ли у XML реальные преимущества перед YAML или JSON?

Будет интересно узнать ваше мнение:
• Какие форматы чаще используете — YAML, JSON, TOML, CSV?
• XML ещё актуален? В каких случаях он действительно полезен?
• Бывали ли проекты, где удобочитаемость важнее производительности?

💬 Пишите в комментариях, какой стек предпочитаете и почему.

Библиотека дата-сайентиста #междусобойчик
3😁3👍1
🤔 Разметка данных: строить свою команду или отдать на аутсорс?

Когда проект переходит от MVP к реальному масштабированию, встаёт классический вопрос из data-ада:
Как организовать разметку данных — собрать собственную команду или поручить всё внешним подрядчикам?


🏠 In-house команда разметки

Плюсы:
— Полный контроль над качеством и процессами.
— Можно адаптировать под особенности продукта и задачи.
— Гибкая коммуникация между разметчиками и ML-командой.

Минусы:
— Найм, обучение, менеджмент — отдельный мини-отдел.
— Медленный запуск.
— Отвлечение от основного фокуса команды.
— Требуются ресурсы и процессы, которых может не быть.

🌍 Аутсорс/вендоры

Плюсы:
— Быстрый старт.
— Нет нужды тратить время на найм и операционку.
— Масштабирование по требованию.

Минусы:
— Почти нет контроля над качеством.
— Слепая зона: сложно понять, что именно и как размечается.
— Часто дорого — особенно при специфичных или нестандартных данных.
— Есть риск получить датасет, который придётся потом переделывать вручную.

💬 Классический холивар: контроль и кастомизация против скорости и удобства. Что на практике оказалось менее болезненным?

👀 Интересны кейсы, где удалось построить гибридную модель или обойтись без выгорания всей команды.

Библиотека дата-сайентиста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43
💬 Вопрос от подписчика: как получить повышение

«Я уже 3.5 года работаю Data Scientist I в крупной компании из Fortune 50. За два последних цикла сам поднимал тему повышения. В первый раз мне обозначили зоны роста — я поработал над ними, показал прогресс, сделал всё как надо.

Во второй раз мне сказали, что дело не только в результатах — ещё и в бюджете, очереди на повышение и других факторах. А когда я попросил чёткий план, как всё-таки попасть на повышение — внятного ответа не получил.

И теперь думаю: а что вообще делать до следующего цикла? Повышения реально надо “добираться на ощупь”, или в нормальных компаниях дают конкретные ориентиры?»


Кратко: да, во многих местах повышение — это квест без карты.

Но есть способы повысить шансы и вернуть контроль:
🔎 Попросить у менеджера leveling guide и примеры задач следующего уровня (если их нет — это тоже сигнал).
🔎 Сделать свои достижения видимыми — внутри и за пределами команды.
🔎 Найти спонсора — не просто ментора, а человека с влиянием, который готов продвигать тебя.
🔎 Запросить карьерный план: «что я должен показать, чтобы через Х месяцев обсуждать переход на следующий уровень?»
🔎 Регулярно сверяться с ожиданиями — не только в циклах оценок.

🚩 Частая ошибка: думать, что «хорошо делать свою работу» = автоматически получить повышение. На деле — часто продвигаются те, чьё влияние заметно и кому доверяют больше ответственности.

🤔 А как с этим у вас? В вашей компании есть прозрачная система повышения? Или тоже всё на интуиции?

Библиотека дата-сайентиста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
💯51🔥1😢1
🙃 ChatGPT на собесе — читерство или must-have навык?

Кандидат пришёл на интервью. Вопрос по ML — быстро накидал пайплайн, обсудил подход, выдал код.

Тех собеседующих терзают сомнения:
«Он точно сам это придумал? Или GPT помогал?»


А кандидат спокойно отвечает:
«Так я с ним и в проде работаю. Это инструмент, как Jupyter или Pandas».


📝 Одна сторона говорит:
«На собесе ты должен сам сформулировать гипотезу, выбрать метрику, предложить решение. Без ИИ.»

📝 Другая — возражает:
«Умение эффективно использовать GPT — такой же навык, как знание sklearn или prompt engineering. В реальности — без этого никуда.»

Как считаете, ChatGPT на собесе у DS — это:
❤️ Современный инструмент, и пусть используют
👍 Только на проде, а на собесе — пусть головой думает
🔥 Зависит от уровня: для джуна — нет, для сеньора — норм
😆 Уберите ваши собесы, мы уже в будущем

💬 Кидайте мысли в комментарии.

Библиотека дата-сайентиста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍17🔥10😁3👏2
😐 Холивар: удалённая работа для дата-сайентистов — проклятие или спасение

Удалёнка стала нормой с Covid, и многие перешли на полный remote. Вроде бы плюсы очевидны: нет потерь времени на дорогу, гибкий график, можно работать из любой точки мира.

Но… у многих заметно вырос уровень социальной тревожности, особенно когда дело доходит до презентаций результатов и командного взаимодействия. Меньше живого общения, меньше «неформальных» разговоров — и кажется, что давление во время редких встреч только усиливается. Сомнения и импостер-синдром подкрадываются чаще.

➡️ Основные проблемы:
🤖 Soft skills — критически важны в работе с командой и заказчиками
🤖 Без живого контакта сложно развивать навыки коммуникации
🤖 Технические успехи не всегда спасают, если не умеешь «продавать» результаты

➡️ Что с этим делать:
🤖 Пытаться больше общаться неформально онлайн
🤖 Использовать тренинги по коммуникациям
🤖 Выходить из зоны комфорта и делать презентации чаще
🤖 Возможно, частично вернуться в офис ради живого взаимодействия

И давайте сразу к главному спору:
❤️ — без живого общения и офиса soft skills у дата-сайентистов деградируют, и это угроза карьере
👍— современные коммуникационные инструменты позволяют развивать навыки и без офиса

Как вы думаете? Что важнее — привычка работать вживую или умение адаптироваться к новым форматам?

Библиотека дата-сайентиста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍206😁2
💬 Опыт подписчика: как потратить часы на очистку данных после парсинга

Один из наших подписчиков поделился своим опытом очистки грязных данных после веб-скрейпинга. Делимся его историей — вдруг вы узнаете в ней себя.

Думал, самое сложное — спарсить данные. А оказалось — привести их в порядок.

На выходных я собрал датасет для своего сайд-проекта. Парсинг прошёл без особых проблем — за пару часов всё было готово. А вот дальше началось настоящее веселье.

С чем я столкнулся:
— Пропуски в случайных местах
— Дубли из-за повторных запусков
— Даты в абсолютно разном формате
— Цены, записанные как строки, иногда даже словами ("twenty")


Потратив несколько часов на эксперименты (и выпив больше кофе, чем хотел бы признать), я кое-как вычистил всё с помощью Pandas. Делюсь, что сработало:

1️⃣ Работа с пропущенными значениями

Удалять всё подряд не хотелось, поэтому подход был аккуратным:
# Удаляю строки, где вообще нет данных
df_clean = df.dropna(how='all')

# Остальное заполняю заглушками
df_filled = df.fillna("N/A")


2️⃣ Удаление дублей

Повторные запуски скрипта дали одинаковые строки. Решается в одну строку:
df_unique = df.drop_duplicates()


3️⃣ Приведение к нужным форматам

Это спасло меня от последующих багов:
# Привожу названия товаров к нижнему регистру
df['product_name'] = df['product_name'].str.lower()

# Преобразую даты (если ошибка — получаю NaT)
df['date'] = pd.to_datetime(df['date'], errors='coerce')

# Преобразую цену в числовой формат
df['price'] = pd.to_numeric(df['price'], errors='coerce')


4️⃣ Очистка шума

Избавился от ненужного мусора:
# Удаляю колонку, если она вообще есть
df = df.drop(columns=['unnecessary_column'], errors='ignore')

# Оставляю товары только с ценой > 10
df_filtered = df[df['price'] > 10]


5️⃣ Первые инсайты

Когда всё стало чисто, можно было наконец-то что-то анализировать:
# Средняя цена по категориям
avg_price = df_filtered.groupby('category')['price'].mean()
print(avg_price)

# Гистограмма распределения цен
df_filtered['price'].plot(kind='hist', bins=20, title='Price Distribution')
plt.xlabel("Price")
plt.show()


Что я понял:
🟣 Парсинг — это только начало. Основная боль начинается после.
🟣 Pandas — суперсила. С его помощью можно разгрести 80% хаоса.
🟣 errors='coerce' — спасение. Преобразования не падают, если формат неожиданный.
🟣 В следующий раз сначала изучу практики очистки данных, а потом буду парсить.

Сейчас ищу хорошие подходы к:
🟣 Распознаванию цен, написанных словами ("forty-two" и т.п.)
🟣 Объединению разных форматов дат (особенно с названиями месяцев в разных языках)

💬 Если у вас есть свои фишки по чистке «грязных» парсинг-данных — расскажите в комментариях.

Библиотека дата-сайентиста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4😁2
🔥 Холивар: отвечать ли на странные вопросы рекрутеров или морозиться

Есть вечная боль: рекрутер задаёт вопрос, который либо слишком общий, либо вообще бьёт мимо.

Примеры:
— «Где вы видите себя через 5 лет?»
— «Назовите свои слабые стороны»
— «Почему ушли с прошлого места?»
— «Сколько хотите зарабатывать?» (без вилки)

Кто-то отвечает честно (и потом жалеет), кто-то уходит в общие фразы, кто-то прямо говорит: «Вопрос некорректный, давайте дальше».

💬 Вопросы в зал:
— Вы отвечаете или морозитесь?
— Если морозитесь, то как это делаете, чтобы не сжечь контакт?
— Может, стоит наоборот троллить вежливо, чтобы отсеивать токсичные компании?

Библиотека дата-сайентиста #междусобойчик
4👍2😁1
😶 Истории подписчиков: cамый бесполезный совет от коллеги

Сегодня делимся историями, когда советы коллег звучали разумно… пока вы не попробовали их на практике.

👻 Просто запусти без параметров:
Настраивал модель XGBoost, попросил совета у старшего дата-сайентиста.
Он сказал: «Запусти без параметров, там всё по дефолту нормально».
Модель обучалась 9 часов и выдала результат хуже случайного угадывания.


👻 В SQL всегда используй SELECT *:
Коллега уверял, что так «надёжнее, вдруг что-то понадобится».
Итог — запрос возвращал по 2 ГБ данных, и ETL падал каждые выходные.


👻 Зачем тесты? У тебя же ноутбук:
Говорю: хочу написать пару unit-тестов для функции парсинга.
Ответ: «Не трать время, у тебя же всё в Jupyter, там видно же».
Через неделю нашли баг, который стоил клиенту два дня простоя.


💬 А какой самый «полезный» бесполезный совет вы получали?

🐸 Библиотека дата-сайентиста

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2👍1🌚1
🚕 Как лог-трансформация спасла модель

Наш подписчик поделился лайфхаком, который снизил ошибку модели на 20% всего одной строкой кода.

В задаче регрессии (например, предсказание стоимости поездок Uber) оказалось, что таргет (fare) сильно скошен вправо: много маленьких значений + редкие, но вполне реальные высокие цены.

Модели сложно учиться: редкие большие значения «тянут» распределение и портят общую картину.

Простое решение — применить log1p к целевой переменной:
— большие значения сжимаются;
— малые почти не меняются;
— распределение становится ближе к нормальному;
— влияние «хвоста» снижается.

Схема:
y → log1p → модель → предсказания (log scale) → expm1 → предсказания (ориг. масштаб)


💡 Результат: MAE снизился на 20%.

Не магия, а классика — но про этот приём часто забывают. Если таргет имеет длинный правый хвост → лог-трансформация может резко улучшить качество.

🐸 Библиотека дата-сайентиста

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117
💻 Что под капотом у дата-сайентиста?

Говорят, ноутбук дата-сайентиста живёт в двух состояниях:
— «всё летает»
— «свопнулся насмерть при fit()»

Давайте проверим, кто на чём считает градиенты.
Расскажите в комментариях:
👉 модель ноутбука
👉 чип / GPU
👉 сколько ОЗУ спасает вас от крашей при обучении модели

🐸 Библиотека дата-сайентиста

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
2😁2😢2🤔1