Django-Admin.ru

Машинное обучение на Python: библиотеки и с чего начать

Библиотеки для машинного обучения на Python: scikit-learn, бустинги, PyTorch, TensorFlow. Сравнение, поддержка версий Python и первая модель с нуля.

Редакция Django-Admin.ru
· 16 мин чтения

Содержание · 11 разделов
  1. Из чего состоит набор библиотек для машинного обучения
  2. Сравнение библиотек машинного обучения
  3. С чего начать машинное обучение на Python с нуля
  4. Установка
  5. Первая модель на scikit-learn
  6. Сравнение нескольких моделей
  7. Порядок изучения
  8. Градиентный бустинг: CatBoost, LightGBM и XGBoost
  9. PyTorch или TensorFlow: что выбрать для нейросетей
  10. Установка PyTorch
  11. TensorFlow и Keras
  12. Готовые модели и вспомогательные инструменты
  13. Где запускать: свой компьютер или облако
  14. Какую библиотеку выбрать под задачу
  15. Книги для старта
  16. Частые вопросы
  17. Нужна ли математика, чтобы начать?
  18. Нужна ли видеокарта для машинного обучения?
  19. Почему pip install tensorflow или torch выдаёт ошибку?
  20. Anaconda или pip?
  21. Как сохранить обученную модель и использовать её в Django или FastAPI?
  22. Итог

Машинное обучение на Python начинают со scikit-learn: в ней есть классические алгоритмы, подготовка данных и оценка моделей, а первая модель занимает десяток строк. Для табличных данных в рабочих задачах берут градиентный бустинг — CatBoost, LightGBM или XGBoost. Нейросети пишут на PyTorch; TensorFlow с Keras выбирают, когда на нём уже построен проект или нужен запуск модели на мобильных устройствах. Под всем этим лежат NumPy и pandas.

pip install scikit-learn pandas matplotlib

Ниже — сравнительная таблица библиотек, поддержка версий Python (данные PyPI на октябрь 2026), первая модель на scikit-learn, выбор между PyTorch и TensorFlow и порядок изучения с нуля. Примеры проверены на Python 3.12, scikit-learn 1.9.1, CatBoost 1.2.10 и PyTorch 2.14.1.

Из чего состоит набор библиотек для машинного обучения

Машинное обучение (ML, machine learning) — подход, при котором программа сама выводит правила из примеров: по истории клиентов предсказывает отток, по фотографиям — что на снимке. Модель «обучается» на данных с известными ответами и затем отвечает на новых.

Библиотеки для этого делятся на уровни:

  • Работа с данными — NumPy для массивов и математики, pandas для таблиц, Matplotlib для графиков. Без них не обходится ни один ML-проект.
  • Классическое машинное обучение — scikit-learn: линейные модели, деревья решений, случайный лес, кластеризация, метрики.
  • Градиентный бустинг — XGBoost, LightGBM, CatBoost. Чаще всего дают лучшее качество на табличных данных.
  • Глубокое обучение (нейросети) — PyTorch, TensorFlow, Keras, JAX. Нужны для изображений, текста, звука.
  • Готовые модели — Hugging Face Transformers: предобученные языковые и визуальные модели, которые можно использовать без обучения с нуля.
  • Инструменты вокруг модели — подбор гиперпараметров, учёт экспериментов, экспорт в другие среды.

Общий обзор пакетов Python за пределами ML — в статье библиотеки Python.

Сравнение библиотек машинного обучения

БиблиотекаДля каких задачПорог входаGPUВерсия на PyPI и Python
scikit-learnКлассическое ML: регрессия, классификация, кластеризация, подготовка данныхНизкийВ основном работает на CPU1.9.1, Python 3.11–3.15
CatBoostБустинг на таблицах, особенно с категориальными признакамиНизкийNVIDIA (CUDA) в сборках для Linux и Windows1.2.10, колёса до Python 3.14
LightGBMБустинг на больших таблицах, быстрое обучениеСреднийOpenCL в колёсах для Linux и Windows; CUDA — сборка из исходников4.7.0, Python 3.10+
XGBoostБустинг на таблицах, тонкая настройка, распределённое обучениеСреднийNVIDIA в колёсах для Linux и Windows, на macOS нет3.4.1, Python 3.12+
PyTorchНейросети: изображения, текст, звук, языковые модели, исследованияСреднийNVIDIA (CUDA), AMD (ROCm, Linux), Apple Silicon (MPS)2.14.1, Python 3.10–3.14
TensorFlowНейросети, продакшен-инфраструктура, мобильные устройстваСреднийNVIDIA на Linux и в WSL2; на Windows без WSL2 — нет2.21.0, Python 3.10–3.13
KerasВысокоуровневый API нейросетей поверх JAX, TensorFlow или PyTorchНизкийЧерез выбранный бэкенд3.15.1, Python 3.11+
JAXЧисленные вычисления и нейросети с автодифференцированием, TPUВысокийNVIDIA и TPU на Linux; на Windows только CPU0.11.2, Python 3.12–3.15
TransformersГотовые предобученные модели для текста, изображений и звукаНизкий для готовых моделейЧерез PyTorch5.19.0, Python 3.10+

Все библиотеки из таблицы бесплатны и распространяются под лицензиями BSD, MIT или Apache 2.0, которые разрешают коммерческое использование.

Что важно по версиям Python. Python 3.15 вышел 9 октября 2026 года, и готовые колёса (бинарные сборки) под него пока есть только у части библиотек: scikit-learn, NumPy, pandas, SciPy, JAX. У PyTorch и CatBoost последняя поддерживаемая версия — 3.14, у стабильного TensorFlow — 3.13. XGBoost и LightGBM публикуют колёса, не привязанные к версии интерпретатора, но официально заявляют поддержку до 3.14. Для ML-проекта, где могут понадобиться нейросети, надёжный выбор сейчас — Python 3.12 или 3.13. Какая версия стоит у вас, подскажет статья как проверить версию Python.

С чего начать машинное обучение на Python с нуля

До первой модели нужно уверенно владеть основами Python: списки, словари, функции, циклы, импорт модулей. Классы и декораторы пригодятся позже — в начале их хватит на уровне «умею вызвать метод объекта».

Из математики на старте достаточно трёх тем:

  • Линейная алгебра — векторы, матрицы, умножение матриц: данные в ML хранятся именно так.
  • Теория вероятностей и статистика — среднее, дисперсия, распределения, корреляция: на них построены метрики и проверка результатов.
  • Производная и градиент — чтобы понимать, как модель подбирает параметры (градиентный спуск).

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

Установка

Создайте виртуальное окружение для ML-проектов и поставьте базовый набор. Jupyter — интерактивные блокноты, в которых удобно экспериментировать с данными по шагам.

# Windows
py -m venv .venv
.venv\Scripts\activate
python -m pip install scikit-learn pandas matplotlib jupyter
# macOS / Linux
python3 -m venv .venv
source .venv/bin/activate
python -m pip install scikit-learn pandas matplotlib jupyter

Обратите внимание: пакет называется scikit-learn, а импортируется как sklearn. Проверка:

import sklearn

print(sklearn.__version__)  # → 1.9.1 (у вас может быть новее)

Если импорт падает, пакет установлен в другой интерпретатор — разбор причин в руководстве по установке библиотек Python.

Первая модель на scikit-learn

Задача — по 30 характеристикам опухоли определить, злокачественная она или доброкачественная. Набор данных встроен в scikit-learn, скачивать ничего не нужно.

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

# Данные: 569 объектов, 30 числовых признаков; метка 0 — злокачественная, 1 — доброкачественная
X, y = load_breast_cancer(return_X_y=True)
print(X.shape)  # → (569, 30)

# 80% данных — для обучения, 20% — для проверки
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# Модель: масштабирование признаков + логистическая регрессия
model = make_pipeline(StandardScaler(), LogisticRegression())
model.fit(X_train, y_train)

# Оценка на данных, которые модель не видела
y_pred = model.predict(X_test)
print(f"Точность: {accuracy_score(y_test, y_pred):.3f}")  # → Точность: 0.982
print(model.predict(X_test[:5]), y_test[:5])             # → [0 1 0 1 0] [0 1 0 1 0]

В этих строках весь типовой цикл обучения с учителем:

  • X — матрица признаков (строка — объект, столбец — признак), y — правильные ответы.
  • train_test_split откладывает часть данных для проверки. Оценивать модель на тех же данных, на которых она училась, нельзя: результат будет завышен.
  • make_pipeline склеивает подготовку данных и модель в один объект. StandardScaler приводит признаки к одному масштабу — линейные модели без этого учатся хуже.
  • У любой модели scikit-learn одинаковый интерфейс: fit обучает, predict предсказывает. Поэтому алгоритм меняется одной строкой.

Сравнение нескольких моделей

Одна случайная проверка может повезти или не повезти. Надёжнее кросс-валидация: данные делятся на 5 частей, модель обучается 5 раз, и каждый раз проверяется на новой части.

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import HistGradientBoostingClassifier, RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, y = load_breast_cancer(return_X_y=True)

models = {
    "Логистическая регрессия": make_pipeline(StandardScaler(), LogisticRegression()),
    "Случайный лес": RandomForestClassifier(random_state=42),
    "Градиентный бустинг": HistGradientBoostingClassifier(random_state=42),
}
for name, model in models.items():
    scores = cross_val_score(model, X, y, cv=5)
    print(f"{name}: {scores.mean():.3f} ± {scores.std():.3f}")
Логистическая регрессия: 0.981 ± 0.007
Случайный лес: 0.956 ± 0.023
Градиентный бустинг: 0.965 ± 0.018

На этом наборе простая линейная модель оказалась точнее сложных. Так бывает часто, поэтому работу начинают с простой базовой модели и усложняют, только если сложная модель действительно выигрывает.

Порядок изучения

  1. Основы Python и работа с файлами.
  2. NumPy и pandas: загрузка, очистка и группировка данных; графики в Matplotlib.
  3. scikit-learn: регрессия и классификация, деревья и случайный лес, кластеризация, метрики, кросс-валидация, пайплайны.
  4. Градиентный бустинг (CatBoost или LightGBM) на реальных табличных данных.
  5. Нейросети на PyTorch или Keras — когда понадобятся изображения, текст или звук.
  6. Готовые модели из Transformers и доведение модели до приложения: сохранение, API, мониторинг.

Для практики подойдут встроенные наборы scikit-learn (load_iris, load_wine, fetch_openml) и открытые датасеты на Kaggle.

Градиентный бустинг: CatBoost, LightGBM и XGBoost

Градиентный бустинг строит много небольших деревьев решений, и каждое следующее исправляет ошибки предыдущих. На табличных данных — продажи, отток клиентов, кредитный скоринг — он обычно точнее нейросетей и требует меньше вычислений. У всех трёх библиотек есть классы в стиле scikit-learn с методами fit и predict, так что их можно встраивать в те же пайплайны и кросс-валидацию.

Различаются они в деталях, которые влияют на выбор:

  • CatBoost (разработка Яндекса) принимает категориальные признаки — город, тариф, марку — строками, без ручного кодирования. Неплохо работает с настройками по умолчанию, поэтому удобен для старта.
  • LightGBM (Microsoft) обычно обучается быстрее всех на больших объёмах. Категории принимает через параметр categorical_feature или столбцы pandas с типом category. На маленьких данных склонен к переобучению, поэтому ограничивайте num_leaves и max_depth.
  • XGBoost — самая давняя из трёх библиотек, с подробной документацией и распределённым обучением. Категории поддерживает при enable_categorical=True и типе category в pandas. Если GPU не нужен, есть облегчённый пакет xgboost-cpu.

Пример с CatBoost: строковые столбцы передаются как есть.

import pandas as pd
from catboost import CatBoostClassifier

df = pd.DataFrame({
    "city": ["Москва", "Казань", "Москва", "Пермь", "Казань", "Пермь"] * 20,
    "plan": ["basic", "pro", "pro", "basic", "basic", "pro"] * 20,
    "months": [1, 12, 24, 3, 6, 18] * 20,
    "churn": [1, 0, 0, 1, 1, 0] * 20,
})
X, y = df.drop(columns="churn"), df["churn"]

model = CatBoostClassifier(iterations=200, verbose=0, random_seed=42)
model.fit(X, y, cat_features=["city", "plan"])  # строки без ручного кодирования

new = pd.DataFrame({"city": ["Пермь"], "plan": ["pro"], "months": [2]})
print(model.predict(new))  # → [0] — модель считает, что клиент не уйдёт

Какая из трёх окажется точнее на ваших данных, заранее не скажешь: на практике обучают две-три и сравнивают метрики на кросс-валидации. Для начала в scikit-learn есть собственный быстрый бустинг HistGradientBoostingClassifier — он не требует установки дополнительных пакетов.

PyTorch или TensorFlow: что выбрать для нейросетей

Для новых проектов и обучения чаще выбирают PyTorch. Код на нём — обычный Python: модель описывается классом, отладка работает стандартными средствами, а большинство современных открытых моделей, включая модели в Transformers, публикуются под него. TensorFlow оправдан в трёх случаях: проект уже на нём написан, нужен запуск модели на телефоне или микроконтроллере через LiteRT (бывший TensorFlow Lite) или команда использует инфраструктуру TensorFlow Serving.

Темп разработки тоже различается. Новые версии PyTorch выходят примерно раз в два месяца: 2.12 — май 2026, 2.13 — июль, 2.14 — сентябрь. У TensorFlow релизы выходят примерно раз в полгода: 2.20 — август 2025, 2.21 — март 2026, 2.22 в октябре 2026 года существует как предварительная версия.

Установка PyTorch

pip install torch

Что ставит эта команда, зависит от системы:

  • Windows — сборку только для процессора. Для видеокарты NVIDIA нужна команда с параметром --index-url под вашу версию CUDA: её выдаёт конфигуратор Get Started на сайте PyTorch.
  • Linux — сборку с поддержкой CUDA. Для видеокарт AMD конфигуратор даёт команду со сборкой ROCm.
  • macOS — сборку с поддержкой GPU чипов Apple Silicon через бэкенд MPS (Metal Performance Shaders).

Проверить, видит ли PyTorch видеокарту:

import torch

print(torch.__version__)
print(torch.cuda.is_available())          # видеокарта NVIDIA (CUDA)
print(torch.backends.mps.is_available())  # GPU Apple Silicon

device = "cuda" if torch.cuda.is_available() else "cpu"
x = torch.tensor([[1.0, 2.0], [3.0, 4.0]], device=device)
print(x @ x)

Вывод на Windows-компьютере без видеокарты NVIDIA:

2.14.1+cpu
False
False
tensor([[ 7., 10.],
        [15., 22.]])

Суффикс +cpu в версии означает сборку без поддержки GPU. Если видеокарта есть, а torch.cuda.is_available() возвращает False, переустановите PyTorch командой из конфигуратора.

TensorFlow и Keras

pip install tensorflow                 # CPU на любой системе
pip install "tensorflow[and-cuda]"     # GPU NVIDIA на Linux и в WSL2

Главное ограничение — Windows: TensorFlow 2.10 стал последней версией с поддержкой GPU в обычной Windows. С 2.11 для обучения на видеокарте TensorFlow ставят в WSL2 (подсистему Linux для Windows), иначе он работает только на процессоре. Официальной поддержки GPU на macOS у TensorFlow нет.

Keras — высокоуровневый API, в котором модель собирается из готовых слоёв. С TensorFlow 2.16 команда pip install tensorflow ставит Keras 3, и tf.keras указывает на него. Отдельный пакет keras работает с тремя бэкендами — JAX, TensorFlow и PyTorch. Бэкенд выбирают переменной окружения KERAS_BACKEND до импорта Keras. Так можно учиться на простом API Keras, а вычисления отдать, например, PyTorch.

JAX от Google — библиотека численных вычислений с автоматическим дифференцированием и компиляцией под GPU и TPU. Её выбирают для исследований и обучения больших моделей на TPU; для первого знакомства с нейросетями порог входа у неё выше, чем у PyTorch и Keras.

Готовые модели и вспомогательные инструменты

Многие задачи с текстом и изображениями не требуют обучать нейросеть с нуля. Transformers от Hugging Face загружает предобученную модель — классификатор тональности, переводчик, языковую модель — и позволяет использовать её в нескольких строках или дообучить на своих данных. Версия 5.x работает поверх PyTorch.

Когда модель уже работает, пригодятся инструменты вокруг неё:

  • statsmodels — статистические модели и классические методы временных рядов (ARIMA, экспоненциальное сглаживание) с подробными отчётами о значимости.
  • Optuna — автоматический подбор гиперпараметров. Работает с scikit-learn, бустингами и PyTorch.
  • MLflow — журнал экспериментов: параметры, метрики, версии моделей.
  • ONNX Runtime — запуск моделей в формате ONNX (Open Neural Network Exchange) без исходного фреймворка: на сервере, в браузере, на мобильных устройствах.

Где запускать: свой компьютер или облако

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

  • Google Colab — блокноты Jupyter в браузере с предустановленными scikit-learn, PyTorch и TensorFlow и бесплатным доступом к GPU с ограничениями по времени.
  • Kaggle — блокноты с GPU, тысячи открытых датасетов и соревнования с разборами решений.

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

Какую библиотеку выбрать под задачу

ЗадачаС чего начать
Изучаю машинное обучение с нуляscikit-learn, pandas, Matplotlib
Табличные данные на работе: отток, продажи, скорингБазовая модель в scikit-learn, затем CatBoost, LightGBM или XGBoost
Много категориальных признаковCatBoost
Миллионы строк, важна скорость обученияLightGBM
Своя нейросеть для изображений, текста или звукаPyTorch или Keras
Классификация текста, перевод, языковые моделиTransformers поверх PyTorch
Временные рядыstatsmodels; бустинг на признаках из прошлых значений
Нет видеокарты, слабый ноутбукscikit-learn локально, нейросети — в Colab или Kaggle
Windows и видеокарта NVIDIA, нейросетиPyTorch со сборкой CUDA; TensorFlow — только через WSL2
Mac на Apple SiliconPyTorch с бэкендом MPS
Модель на телефоне или в браузереTensorFlow с LiteRT или экспорт в ONNX
Поддержка существующего проектаФреймворк, на котором проект уже написан

Книги для старта

По запросам «введение в машинное обучение с помощью Python» и «машинное обучение с использованием Python. Сборник рецептов» ищут две переведённые книги издательства O’Reilly:

  • «Введение в машинное обучение с помощью Python» (Андреас Мюллер, Сара Гвидо) — последовательный курс по scikit-learn: от подготовки данных до пайплайнов и выбора модели. Один из авторов — разработчик scikit-learn.
  • «Машинное обучение с использованием Python. Сборник рецептов» (Крис Элбон) — короткие рецепты в формате «задача — код — пояснение»: загрузка и очистка данных, признаки, модели scikit-learn, нейросети на Keras. Удобна как справочник; для первого знакомства последовательнее книга Мюллера и Гвидо.

Обе книги написаны под версии библиотек конца 2010-х годов. Часть примеров на актуальных версиях падает: например, набор данных load_boston удалён из scikit-learn в версии 1.2. Если код из книги не работает, ищите замену в документации своей версии библиотеки. Другие книги по Python — в подборке лучших книг по Python.

Частые вопросы

Нужна ли математика, чтобы начать?

Для первых моделей на scikit-learn достаточно школьной алгебры и понимания среднего и процентов. Чтобы осознанно выбирать модели, настраивать их и разбирать ошибки, понадобятся линейная алгебра, теория вероятностей, статистика и производные. Их удобно изучать параллельно с практикой.

Нужна ли видеокарта для машинного обучения?

Для классических алгоритмов и бустинга — нет, они работают на процессоре. Видеокарта многократно ускоряет обучение нейросетей, но для учёбы хватит бесплатного GPU в Google Colab или Kaggle. Покупать видеокарту имеет смысл, когда вы регулярно обучаете нейросети и облачных лимитов перестаёт хватать.

Почему pip install tensorflow или torch выдаёт ошибку?

Чаще всего под вашу версию Python ещё нет сборки. На Python 3.15 команда pip install torch завершается ошибкой No matching distribution found for torch, то же происходит с TensorFlow. На Python 3.14 pip поставит предварительную версию TensorFlow 2.22.0rc0, потому что стабильная 2.21 поддерживает Python только до 3.13. Создайте окружение на Python 3.12 или 3.13: py -3.13 -m venv .venv в Windows или python3.13 -m venv .venv в macOS и Linux.

Anaconda или pip?

Для всех библиотек из статьи достаточно pip и виртуального окружения: PyTorch, TensorFlow, scikit-learn и бустинги публикуют готовые сборки на PyPI. Anaconda и Miniconda удобны, когда в одном окружении нужны и Python-пакеты, и системные библиотеки, но смешивать установку через conda и pip в одном окружении не стоит — это частый источник конфликтов. PyTorch официально распространяется только через pip.

Как сохранить обученную модель и использовать её в Django или FastAPI?

Модель scikit-learn сохраняют в файл через joblib (он ставится вместе со scikit-learn) и загружают при старте веб-приложения:

import joblib

joblib.dump(model, "model.joblib")    # сохранить после обучения
model = joblib.load("model.joblib")   # загрузить в приложении
print(model.predict(X[:3]))           # → [0 0 0]

Загружайте файлы моделей только из доверенных источников: при загрузке joblib может выполнить произвольный код. У PyTorch для сохранения есть torch.save, у Keras — model.save.

Итог

Начинайте машинное обучение на Python с NumPy, pandas и scikit-learn: на них отрабатывается весь цикл — данные, обучение, проверка, сравнение моделей. Для табличных задач добавьте CatBoost, LightGBM или XGBoost. К нейросетям переходите, когда понадобятся изображения, текст или звук: для новых проектов берите PyTorch, а TensorFlow — для существующего кода и запуска на мобильных устройствах. Перед установкой проверьте версию Python: для полного набора ML-библиотек сейчас подходят 3.12 и 3.13. Следующий практический шаг — собрать собственный датасет из рабочей задачи и пройти на нём тот же цикл: базовая модель, бустинг, сравнение на кросс-валидации.

  • #Python
  • #Машинное обучение
  • #scikit-learn
  • #PyTorch
  • #TensorFlow
↑ ↓ выборEnter открытьEsc закрыть