1. Python для данных: NumPy и pandas как основа ML-пайплайна
Python для данных: NumPy и pandas как основа ML-пайплайна
Зачем в машинном обучении нужны NumPy и pandas
Большая часть работы в машинном обучении происходит до обучения модели: сбор данных, очистка, объединение источников, построение признаков, контроль утечек, подготовка матрицы признаков и целевого вектора. В Python эти задачи чаще всего решаются связкой:
Дальше по курсу мы будем добавлять матстатистику (оценки, проверки гипотез, доверительные интервалы) и PyTorch (обучение моделей). Поэтому цель этой статьи — научиться уверенно превращать сырой датасет в числовые тензоры, пригодные для обучения.
Полезные первоисточники:
Базовые структуры данных
NumPy: ndarray
numpy.ndarray — это однородный массив (все элементы одного типа), оптимизированный для быстрых операций.
Ключевые свойства:
shape — форма массива (например, (n_samples, n_features)).dtype — тип элементов (например, float32, int64).Пример:
pandas: Series и DataFrame
pandas.Series — одномерный массив с индексом.
pandas.DataFrame — таблица: столбцы (часто разных типов) + индекс строк.
Типичное правило:
groupby, merge, работа с датами.Сравнение:
| Что сравниваем | NumPy ndarray | pandas DataFrame |
|---|---|---|
| Типы данных | Обычно один dtype на весь массив | Типы по столбцам |
| Индексация | По позициям | По позициям и меткам |
| Работа с пропусками | Есть np.nan, но меньше инструментов | Много встроенных средств |
| Объединения таблиц | Не основная задача | merge, join, concat |
| Типичная роль в ML | Матрица признаков | Подготовка и исследование данных |
Векторизация и broadcasting в NumPy
Почему циклы в Python — часто плохая идея
Циклы по миллионам строк в чистом Python медленные. NumPy переносит вычисления в оптимизированный C-код.
Пример: стандартизация признака (вычитание среднего и деление на стандартное отклонение).
Формулы:
Здесь:
Здесь:
Реализация в NumPy:
Broadcasting
Broadcasting — это правило NumPy, позволяющее выполнять операции над массивами разных форм, если они совместимы.
Пример: вычесть вектор средних значений из матрицы признаков по столбцам.
Индексация и срезы: где чаще всего ошибаются
NumPy: позиции и маски
Два базовых подхода:
X[0, 1]X[X[:, 0] > 10]pandas: loc и iloc
В pandas важно различать:
iloc — индексация по позициям (как в NumPy)loc — индексация по меткам индекса и названиям колонокПрактическое правило для ML-пайплайна:
loc/iloc, а не цепочки вида df[...][...].Пропуски и типы данных: основа надежной подготовки данных
Пропуски: NaN и NA
В реальных данных пропуски встречаются всегда. В pandas вы будете видеть:
NaN (часто в числах)None (часто в объектах)pd.NA (универсальный пропуск в новых nullable-типах)Базовые операции:
Стратегии обработки пропусков зависят от смысла данных:
Типы: почему object — частый источник проблем
В pandas колонка типа object может содержать строки, числа и что угодно вперемешку. Для ML это плохо: модели ожидают числа.
Полезные практики:
pd.to_numeric(..., errors="coerce")pd.to_datetime(...)astype("category")Пример:
Объединение таблиц и агрегации: частая часть feature engineering
merge: собрать датасет из нескольких источников
merge — аналог SQL JOIN.
Важно для ML:
how="left" помогает не потерять пользователей без покупок (появятся пропуски в amount).groupby: агрегировать историю в признаки
Частый сценарий: из транзакций сделать признаки на пользователя.
Затем такие агрегаты объединяют обратно с таблицей пользователей через merge.
Из DataFrame к матрице признаков
Кодирование категорий
Многие модели работают только с числами. Простой базовый вариант для категорий — one-hot encoding.
Важно:
Получение X и y
Типичный формат для обучения:
X — матрица признаков размера (n_samples, n_features)y — целевая переменная размера (n_samples,)Мини-пайплайн: от CSV к тензорам PyTorch
Ниже пример сквозной подготовки: чтение, чистка, кодирование, базовая стандартизация, конвертация в тензоры.
Что важно в этом примере:
dtype, потому что в ML это влияет и на корректность, и на скорость.Производительность и надежность: практические правила
for по строкам.X и y после каждого крупного шага.df.dtypes, особенно если видите object.loc/iloc.merge проверяйте число строк и уникальность ключей соединения.Итоги
В следующей части курса логично перейти от подготовки данных к матстатистическим базовым понятиям, которые помогают принимать решения на данных: распределения, оценки, дисперсия, доверительные интервалы и проверка гипотез.