Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
18.5K subscribers
2.37K 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
😐 Холивар: удалённая работа для дата-сайентистов — проклятие или спасение

Удалёнка стала нормой с 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