Часто мы используем стандартизацию или нормализацию — и этого достаточно.
Но если данные:
• имеют выбросы
• сильно смещены
• не похожи на нормальное распределение
Вот 4 метода масштабирования, которые спасают в таких ситуациях:
Преобразует распределение признака в нормальное или равномерное, используя эмпирические квантили:
from sklearn.preprocessing import QuantileTransformer
import numpy as np
X = np.array([[10], [200], [30], [40], [5000]])
qt = QuantileTransformer(output_distribution='normal', random_state=0)
X_trans = qt.fit_transform(X)
Преимущества:
• Устойчив к выбросам
• Не требует предположений о распределении
• Полезен перед алгоритмами, ожидающими нормальность (например, лин. регрессия)
Преобразует данные, делая их более похожими на нормальное распределение:
from sklearn.preprocessing import PowerTransformer
X = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]])
pt = PowerTransformer(method='box-cox')
X_trans = pt.fit_transform(X)
•
method='box-cox'
— только для положительных значений• Есть вариант
yeo-johnson
, если есть нули или отрицательные значенияПолезно, когда:
• Требуется нормальность для моделей
• Данные положительные или симметричные
Центрирует по медиане, масштабирует по интерквартильному размаху (IQR):
from sklearn.preprocessing import RobustScaler
X = np.array([[10], [20], [30], [40], [1000]])
scaler = RobustScaler()
X_trans = scaler.fit_transform(X)
Преимущества:
• Идеально при наличии выбросов
• Не страдает от смещения из-за экстремальных значений
• Альтернатива StandardScaler
Масштабирует каждую строку так, чтобы её длина была равна 1 (L1 или L2-норма):
from sklearn.preprocessing import Normalizer
X = np.array([[1, 2, 3], [4, 5, 6]])
normalizer = Normalizer(norm='l2')
X_trans = normalizer.transform(X)
Когда использовать:
• При работе с векторами признаков
• Для алгоритмов, чувствительных к направлению, а не к масштабу (например, KNN, косинусное сходство)
Библиотека дата-сайентиста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥2😁1
Если ваш DataFrame больше, чем ваша оперативка — вам сюда 👇
— Обрабатывает данные по частям и параллельно
— Работает даже с файлами, не помещающимися в память
— Использует отложенные вычисления (операции запускаются только после
.compute()
)import dask.dataframe as dd
df = dd.read_csv("large_file.csv")
result = df.groupby("category")["sales"].mean().compute()
— Библиотека на Rust → невероятная скорость
— Ленивое API + оптимизация вычислений
— Отлично подходит для локальных ETL/дашбордов
import polars as pl
result = (
pl.read_csv("large_file.csv").lazy()
.filter(pl.col("sales") > 1000)
.groupby("region")
.agg(pl.col("sales").mean().alias("avg_sales"))
.sort("avg_sales", descending=True)
.collect()
)
— Формат хранения в памяти, оптимизированный под скорость
— Позволяет быстро передавать данные между Pandas, Polars и другими
import pandas as pd
import pyarrow as pa
import polars as pl
df_pandas = pd.DataFrame({"region": ["West", "East"], "sales": [100, 200]})
arrow_table = pa.Table.from_pandas(df_pandas)
df_polars = pl.from_arrow(arrow_table)
— Работает как SQLite, но для аналитики
— Поддерживает прямой SQL по CSV/Parquet без загрузки в память
— Отличный выбор, если вы «мысленно на SQL»
import duckdb
query = """
SELECT category, AVG(sales) AS avg_sales
FROM 'data/transactions.parquet'
WHERE transaction_date >= '2023-01-01'
GROUP BY category
ORDER BY avg_sales DESC
"""
result = duckdb.query(query).to_df()
— Обработка огромных данных (даже в кластере)
— Поддержка отказоустойчивости и параллелизма из коробки
— Интерфейс похож на Pandas, но всё работает распределённо
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, avg
spark = SparkSession.builder.appName("SalesAnalysis").getOrCreate()
df = spark.read.csv("large_sales.csv", header=True, inferSchema=True)
result = (
df.filter(col("region") == "West")
.groupBy("category")
.agg(avg("sales").alias("avg_sales"))
.orderBy("avg_sales", ascending=False)
)
result.show()
— Поддерживает 100+ млн строк без загрузки в память
— Использует memory-mapped файлы и ленивые вычисления
— Удобен для локальной аналитики, визуализации, препроцессинга
import vaex
df = vaex.open("big_data.csv")
result = df[df.sales > 1000].groupby("category", agg=vaex.agg.mean("sales"))
— Идеально, если памяти совсем мало
— Построчная обработка без загрузки всего файла
— Полный контроль + низкий overhead
def process_csv(path):
with open(path, "r") as f:
header = next(f).strip().split(",")
for line in f:
row = line.strip().split(",")
record = dict(zip(header, row))
if float(record["sales"]) > 1000:
yield {
"region": record["region"],
"sales": float(record["sales"]) * 1.1
}
for item in process_csv("large_file.csv"):
print(item)
Библиотека дата-сайентиста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🤩3🥰1
🫣 Боитесь математики в ML?
Думаете, для этого нужно вспоминать университетские интегралы и решать сложные уравнения?
У нас хорошая новость: машинное обучение — это в первую очередь инженерная практика, а не математическая олимпиада. Здесь важнее понимать суть, а не выводить формулы.
Именно на таком подходе — через логику, интуицию и наглядные примеры — и построен наш курс «ML для старта в Data Science», где мы объясняем всё на пальцах, без боли и зубрёжки.
Регистрируйтесь, пока есть свободные места 😉
Думаете, для этого нужно вспоминать университетские интегралы и решать сложные уравнения?
У нас хорошая новость: машинное обучение — это в первую очередь инженерная практика, а не математическая олимпиада. Здесь важнее понимать суть, а не выводить формулы.
Именно на таком подходе — через логику, интуицию и наглядные примеры — и построен наш курс «ML для старта в Data Science», где мы объясняем всё на пальцах, без боли и зубрёжки.
Регистрируйтесь, пока есть свободные места 😉
💬 Опыт подписчика: как потратить часы на очистку данных после парсинга
Один из наших подписчиков поделился своим опытом очистки грязных данных после веб-скрейпинга. Делимся его историей — вдруг вы узнаете в ней себя.
Потратив несколько часов на эксперименты (и выпив больше кофе, чем хотел бы признать), я кое-как вычистил всё с помощью Pandas. Делюсь, что сработало:
1️⃣ Работа с пропущенными значениями
Удалять всё подряд не хотелось, поэтому подход был аккуратным:
2️⃣ Удаление дублей
Повторные запуски скрипта дали одинаковые строки. Решается в одну строку:
3️⃣ Приведение к нужным форматам
Это спасло меня от последующих багов:
4️⃣ Очистка шума
Избавился от ненужного мусора:
5️⃣ Первые инсайты
Когда всё стало чисто, можно было наконец-то что-то анализировать:
Что я понял:
🟣 Парсинг — это только начало. Основная боль начинается после.
🟣 Pandas — суперсила. С его помощью можно разгрести 80% хаоса.
🟣 errors='coerce' — спасение. Преобразования не падают, если формат неожиданный.
🟣 В следующий раз сначала изучу практики очистки данных, а потом буду парсить.
Сейчас ищу хорошие подходы к:
🟣 Распознаванию цен, написанных словами (
🟣 Объединению разных форматов дат (особенно с названиями месяцев в разных языках)
💬 Если у вас есть свои фишки по чистке «грязных» парсинг-данных — расскажите в комментариях.
Библиотека дата-сайентиста #междусобойчик
Один из наших подписчиков поделился своим опытом очистки грязных данных после веб-скрейпинга. Делимся его историей — вдруг вы узнаете в ней себя.
Думал, самое сложное — спарсить данные. А оказалось — привести их в порядок.
На выходных я собрал датасет для своего сайд-проекта. Парсинг прошёл без особых проблем — за пару часов всё было готово. А вот дальше началось настоящее веселье.
С чем я столкнулся:
— Пропуски в случайных местах
— Дубли из-за повторных запусков
— Даты в абсолютно разном формате
— Цены, записанные как строки, иногда даже словами ("twenty")
Потратив несколько часов на эксперименты (и выпив больше кофе, чем хотел бы признать), я кое-как вычистил всё с помощью Pandas. Делюсь, что сработало:
Удалять всё подряд не хотелось, поэтому подход был аккуратным:
# Удаляю строки, где вообще нет данных
df_clean = df.dropna(how='all')
# Остальное заполняю заглушками
df_filled = df.fillna("N/A")
Повторные запуски скрипта дали одинаковые строки. Решается в одну строку:
df_unique = df.drop_duplicates()
Это спасло меня от последующих багов:
# Привожу названия товаров к нижнему регистру
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')
Избавился от ненужного мусора:
# Удаляю колонку, если она вообще есть
df = df.drop(columns=['unnecessary_column'], errors='ignore')
# Оставляю товары только с ценой > 10
df_filtered = df[df['price'] > 10]
Когда всё стало чисто, можно было наконец-то что-то анализировать:
# Средняя цена по категориям
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()
Что я понял:
Сейчас ищу хорошие подходы к:
"forty-two"
и т.п.)Библиотека дата-сайентиста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2😁2
Proglib Academy — это место, где вы превращаете теорию в практику. Здесь ваши знания становятся проектами для портфолио, а вы — более уверенным специалистом.
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
Прошла трансляция с официальным анонсом новой модели — GPT-5.
Что показали:
— Улучшения в reasoning и пошаговой логике
— Новый уровень качества в генерации текста и кода
— Улучшенное управление памятью и контекстом
— Демки в реальном времени
— И немного о будущем ChatGPT и API
🔗 Смотреть запись презентации: https://clc.to/vNmVGg
Библиотека дата-сайентиста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4🔥3
🐬 Dolphin — превращает PDF в структурированные данные
Dolphin (Document Image Parsing via Heterogeneous Anchor Prompting) — 100% open source-модель для автоматического разбора PDF и сканов.
Зачем нужен:
— Конвертирует документы в готовые форматы: Markdown, HTML, LaTeX, JSON.
— Извлекает текст, таблицы, формулы и изображения.
— Полезен как для подготовки данных для LLM, так и для любых автоматизированных систем, архивов, поиска и аналитики.
Как работает:
1️⃣ Анализ макета страницы — определяет все элементы в естественном порядке чтения.
2️⃣ Параллельный парсинг — с «якорями» и промптами под каждый тип контента.
💡 Лёгкая архитектура + параллельная обработка = высокая скорость без потери качества.
🔗 Репозиторий с кодом и моделями: https://clc.to/6gPIwA
Библиотека дата-сайентиста #буст
Dolphin (Document Image Parsing via Heterogeneous Anchor Prompting) — 100% open source-модель для автоматического разбора PDF и сканов.
Зачем нужен:
— Конвертирует документы в готовые форматы: Markdown, HTML, LaTeX, JSON.
— Извлекает текст, таблицы, формулы и изображения.
— Полезен как для подготовки данных для LLM, так и для любых автоматизированных систем, архивов, поиска и аналитики.
Как работает:
Представьте, что у вас есть 500 отчётов в PDF с финансовыми таблицами и графиками. Dolphin превращает их в аккуратный CSV или JSON, готовый для анализа в Pandas или загрузки в базу данных — без ручного копипаста и правок.
💡 Лёгкая архитектура + параллельная обработка = высокая скорость без потери качества.
Библиотека дата-сайентиста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4🔥1
🔥 Холивар: отвечать ли на странные вопросы рекрутеров или морозиться
Есть вечная боль: рекрутер задаёт вопрос, который либо слишком общий, либо вообще бьёт мимо.
Примеры:
— «Где вы видите себя через 5 лет?»
— «Назовите свои слабые стороны»
— «Почему ушли с прошлого места?»
— «Сколько хотите зарабатывать?» (без вилки)
Кто-то отвечает честно (и потом жалеет), кто-то уходит в общие фразы, кто-то прямо говорит: «Вопрос некорректный, давайте дальше».
💬 Вопросы в зал:
— Вы отвечаете или морозитесь?
— Если морозитесь, то как это делаете, чтобы не сжечь контакт?
— Может, стоит наоборот троллить вежливо, чтобы отсеивать токсичные компании?
Библиотека дата-сайентиста #междусобойчик
Есть вечная боль: рекрутер задаёт вопрос, который либо слишком общий, либо вообще бьёт мимо.
Примеры:
— «Где вы видите себя через 5 лет?»
— «Назовите свои слабые стороны»
— «Почему ушли с прошлого места?»
— «Сколько хотите зарабатывать?» (без вилки)
Кто-то отвечает честно (и потом жалеет), кто-то уходит в общие фразы, кто-то прямо говорит: «Вопрос некорректный, давайте дальше».
💬 Вопросы в зал:
— Вы отвечаете или морозитесь?
— Если морозитесь, то как это делаете, чтобы не сжечь контакт?
— Может, стоит наоборот троллить вежливо, чтобы отсеивать токсичные компании?
Библиотека дата-сайентиста #междусобойчик
❤4👍2😁1
🧐 Зоопарк моделей в ML: с чего начать?
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
Открываешь статью по машинному обучению — и в тебя летят слова: трансформеры, бустинги, SVM, регрессии.
Кажется, придётся учить всё это, иначе в ML не пустят.
Хорошая новость: 90% задач можно закрыть 2–3 классическими методами. Разберёшь их — уже сможешь собирать работающие проекты. А хайповые названия подождут.
Важно: не распыляйся на всё подряд. Начни с базового — это фундамент, на котором держится остальное.
👉 Успей попасть на курс «ML для старта в Data Science»
👍2
🚀 Вышел PyTorch 2.8
Свежая версия принесла кучу обновлений — от ускорения инференса LLM до новых механизмов доставки колёс и улучшенной поддержки разных архитектур.
Главное:
— Stable ABI (C++/CUDA) — теперь расширения можно собирать один раз и запускать на разных версиях libtorch.
— Квантованный инференс LLM на Intel CPU — высокая производительность прямо в нативном PyTorch.
— Control flow операторы (cond, while_loop, scan, map и др.) для компиляции и экспорта моделей с динамическим управлением потоком.
— CUTLASS backend в Inductor — ещё больше производительных GEMM.
— SafeTensors в Distributed Checkpointing — теперь без проблем с HuggingFace форматом.
— Поддержка SYCL для кастомных операторов на Intel GPU и новый XCCL backend для распределённого обучения.
🔗 Подробнее и полные release notes: https://clc.to/4RVcPQ
Библиотека дата-сайентиста #свежак
Свежая версия принесла кучу обновлений — от ускорения инференса LLM до новых механизмов доставки колёс и улучшенной поддержки разных архитектур.
Главное:
— Stable ABI (C++/CUDA) — теперь расширения можно собирать один раз и запускать на разных версиях libtorch.
— Квантованный инференс LLM на Intel CPU — высокая производительность прямо в нативном PyTorch.
— Control flow операторы (cond, while_loop, scan, map и др.) для компиляции и экспорта моделей с динамическим управлением потоком.
— CUTLASS backend в Inductor — ещё больше производительных GEMM.
— SafeTensors в Distributed Checkpointing — теперь без проблем с HuggingFace форматом.
— Поддержка SYCL для кастомных операторов на Intel GPU и новый XCCL backend для распределённого обучения.
🔗 Подробнее и полные release notes: https://clc.to/4RVcPQ
Библиотека дата-сайентиста #свежак
👍3⚡2❤1🔥1
🚀 Ключевые анонсы и исследования
— Kaggle запускает Game Arena — cовместно с Google DeepMind представлена новая платформа для соревнований ИИ в стратегических играх.
— MIT разработал SEAL — фреймворк для того, чтобы LLM могли самообучаться, генерируя синтетические данные для собственного дообучения.
— OpenAI впервые с GPT-2 выпускает открытые веса — модели gpt-oss-120b и gpt-oss-20b доступны бесплатно для локального запуска.
— Новый инструмент Guided Learning в Google Gemini — AI-репетитор, помогающий строить глубокое понимание материала, а не просто давать ответы.
— GPT-5 официально представлен — 256k контекст, улучшенная маршрутизация, прорывы в кодинге и научных задачах.
👍 Опыт других
— Оптимизация LLM: LoRA и QLoRA
— Решение задачи коммивояжера в реальных приложениях
— Прогнозирование почасовых осадков: опыт Яндекса
Библиотека дата-сайентиста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4
ML-инженер (NLP, LLM), удалёнка
Python ML Engineer — от 200 000 до 243 000 ₽, гибрид (Москва)
Data Scientist (LLM), удалёнка
Data Engineer (команда AI), удалёнка
ML-инженер (Интеграции с большими языковыми моделями) — от 280 000 до 350 000 ₽, гибрид (Москва, Санкт-Петербург)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
DBeaver — это не только «игрушка» для DBA. Он отлично подходит дата-сайентистам, которые часто работают с SQL-данными, готовят выборки и делают быстрый EDA до Python. Вот фичи, которые реально ускоряют работу.
Ctrl + 3
(Windows) / Cmd + 3
(Mac) — мгновенный доступ к любой функции: от экспорта в CSV до поиска таблицы в схеме. Экономит тонны кликов.Любите, когда запросы читаются, как в учебнике? Подключите, например,
pg_formatter
и забудьте про хаос в SQL перед вставкой в ноутбук.Хотите все колонки, кроме пары лишних?
Ctrl + Space
— и у вас полный список, без ручного переписывания.Считает уникальные значения,
min
, max
, mean
, median
и другие метрики прямо по результатам запроса. Можно прикинуть статистику, даже не открывая Jupyter.Нужно быстро посчитать количество пользователей по странам или суммарный revenue? Клик — и готово, никакого
GROUP BY
руками.Часто пишете одно и то же? Сделайте сниппет и вставляйте в один таб — например, для «SELECT \* FROM {table} WHERE date > {start}».
Быстрый экспорт выборки в CSV, JSON, Markdown или SQL Insert прямо из результата запроса. TSV тоже есть — открывается в Excel/Sheets без плясок с разделителями.
Как это помогает дата-сайентисту:
— Делать быстрый EDA до загрузки данных в Pandas.
— Готовить сэмплы и моковые датасеты для тестов.
— Экспортировать данные прямо в формат для ML-пайплайна.
— Сократить время между «запрос» и «первый график».
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5😍2🔥1
📺 Хватит коллекционировать туториалы!
Десятки роликов по ML, сотни вкладок, папка «Посмотреть позже» трещит по швам. В голове — обрывки знаний о нейросетях и Pandas.
Знания без системы — это просто «шум». Они не превращаются в навыки и проекты.
Наш курс «ML для старта в Data Science» — это не ещё один туториал. Это система. Чёткий путь от «каши» в голове до первого сильного проекта в портфолио.
И да, чтобы старт был ещё проще — при покупке курса по ML вы получаетекурс по Python в подарок
👉 Превратите «шум» в навык
А вы сталкивались с «информационной кашей»? Как выбирались? 👇
Десятки роликов по ML, сотни вкладок, папка «Посмотреть позже» трещит по швам. В голове — обрывки знаний о нейросетях и Pandas.
Знания без системы — это просто «шум». Они не превращаются в навыки и проекты.
Наш курс «ML для старта в Data Science» — это не ещё один туториал. Это система. Чёткий путь от «каши» в голове до первого сильного проекта в портфолио.
И да, чтобы старт был ещё проще — при покупке курса по ML вы получаете
👉 Превратите «шум» в навык
А вы сталкивались с «информационной кашей»? Как выбирались? 👇
❤1😁1
97 % программистов уже пробовали писать код с помощью ИИ.
Но облегчает ли это работу — или, наоборот, мешает расти? Как «код по вайбу» отражается на качестве, обучении и доверии к разработчику?
В статье:
— Что такое вайб-кодинг
— Почему джунам с ИИ проще, но опаснее
— Как работодатели относятся к ИИ-помощникам в коде
— Где проходит граница между полезной автоматизацией и потерей контроля
📖 Читать: https://proglib.io/sh/vtER5zUeOF
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1