Привет! Ты слышал про машинное обучение и хочешь попробовать свои силы? Самое время познакомиться с scikit-learn — главной библиотекой для ML на Python. Она простая, мощная и идеально подходит для начинающих.
В этой статье мы разберём:
- Что такое scikit-learn и зачем он нужен
- Как установить scikit-learn
- Первое знакомство: структура и возможности
- Как загрузить данные и обучить первую модель
- Что нужно знать перед началом
- Основная часть
- Что такое scikit-learn?
- Установка scikit-learn
- Базовая установка через pip
- Проверка установки
- Установка с дополнительными пакетами
- Структура scikit-learn: главные модули
- Твой первый ML-проект: пошагово
- Загрузка данных
- Разделение данных на train и test
- Обучение первой модели
- Предсказание и оценка
- Практический пример: регрессия
- Полезные ресурсы
- Задачи для закрепления
- Нюансы и подводные камни
- Разница между sklearn и scikit-learn
- Версионность
- Установка sklearn вместо scikit-learn
- Частые ошибки и как их избежать
- Ошибка 1: Неправильный импорт
- Ошибка 2: Перепутал X и y в fit()
- Ошибка 3: Не фиксируешь random_state
- Шпаргалка
- Заключение
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python (версия 3.7+)
- Базовое понимание Python (списки, функции, импорты)
- Желание разобраться в машинном обучении
Совет: scikit-learn работает поверх NumPy и SciPy, так что эти библиотеки установятся вместе с ним автоматически.
Основная часть
Что такое scikit-learn?
scikit-learn (сокращённо sklearn) — это бесплатная библиотека для машинного обучения на Python. Она включает в себя множество готовых алгоритмов и инструментов для:
- Классификации — предсказание категории (например, спам или не спам)
- Регрессии — предсказание числа (например, цена квартиры)
- Кластеризации — поиск групп в данных (например, сегментация клиентов)
- Снижения размерности — сжатие данных для визуализации (PCA, t-SNE)
- Предобработки данных — масштабирование, кодирование категорий, заполнение пропусков
- Оценки моделей — метрики, кросс-валидация, подбор гиперпараметров
Совет: scikit-learn — это не библиотека для глубокого обучения (как PyTorch или TensorFlow). Она создана для классических алгоритмов ML. Если тебе нужны нейросети — это в другой раздел!
Установка scikit-learn
Базовая установка через pip
Открой терминал (командную строку) и выполни:
pip install scikit-learnИли для обновления до последней версии:
pip install -U scikit-learnСовет: Устанавливай scikit-learn в виртуальное окружение, чтобы не путать зависимости между проектами.
Проверка установки
Проверь, что всё работает:
import sklearn
print(sklearn.__version__)Если видишь номер версии — всё отлично!
Установка с дополнительными пакетами
Для визуализаций и работы с данными полезно установить ещё:
pip install matplotlib pandas seabornСтруктура scikit-learn: главные модули
Библиотека имеет очень удобную и предсказуемую структуру. Вот главные модули, с которыми ты будешь работать:
| Модуль | Что делает |
|---|---|
sklearn.datasets | Встроенные датасеты для обучения (как load_iris()) |
sklearn.model_selection | Разбивка данных (train_test_split), кросс-валидация |
sklearn.preprocessing | Масштабирование (StandardScaler), кодирование (OneHotEncoder) |
sklearn.linear_model | Линейные модели: регрессия, логистическая регрессия |
sklearn.ensemble | Ансамбли: RandomForest, GradientBoosting |
sklearn.metrics | Метрики качества: accuracy, precision, recall, R² |
sklearn.pipeline | Сборка пайплайнов для воспроизводимых экспериментов |
Твой первый ML-проект: пошагово
Загрузка данных
scikit-learn поставляется с несколькими встроенными датасетами для практики. Один из самых известных — Iris (цветы ириса).
from sklearn.datasets import load_iris
# Загружаем данные
iris = load_iris()
# Смотрим описание
print(iris.DESCR)
# Признаки (features) и целевая переменная (target)
X = iris.data # Массив с признаками (размер цветка)
y = iris.target # Массив с метками (вид ириса)
print(f"Форма X: {X.shape}") # (150, 4) — 150 строк, 4 признака
print(f"Форма y: {y.shape}") # (150,)Совет: В ML принято называть матрицу признаков
X(заглавная), а вектор ответов —y(строчная). Это стандарт.
Разделение данных на train и test
Чтобы оценить модель честно, мы не можем обучать её на всех данных — нужно оставить часть для проверки.
from sklearn.model_selection import train_test_split
# Разбиваем: 80% — обучение, 20% — проверка
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.2, # 20% на тест
random_state=42, # Фиксируем случайность для воспроизводимости
stratify=y # Сохраняем пропорции классов
)
print(f"Обучающая выборка: {X_train.shape}")
print(f"Тестовая выборка: {X_test.shape}")Обучение первой модели
Используем логистическую регрессию — несмотря на название, это классификатор.
from sklearn.linear_model import LogisticRegression
# Создаём модель
model = LogisticRegression(max_iter=1000, random_state=42)
# Обучаем на тренировочных данных
model.fit(X_train, y_train)
print("Модель обучена!")Предсказание и оценка
from sklearn.metrics import accuracy_score, classification_report
# Предсказываем на тестовых данных
y_pred = model.predict(X_test)
# Считаем точность
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy:.2%}")
# Детальный отчёт
print(classification_report(y_test, y_pred, target_names=iris.target_names))Совет: В scikit-learn все модели работают по единому принципу:
model.fit(X_train, y_train)— обучение,model.predict(X_test)— предсказание.
Практический пример: регрессия
Теперь попробуем решить задачу регрессии — предсказать число. Используем датасет с ценами на жильё в Калифорнии.
from sklearn.datasets import fetch_california_housing
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, r2_score
# Загружаем данные
housing = fetch_california_housing()
X, y = housing.data, housing.target
# Разбиваем
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# Создаём и обучаем модель
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Предсказываем и оцениваем
y_pred = model.predict(X_test)
print(f"MAE (средняя ошибка): {mean_absolute_error(y_test, y_pred):.2f}")
print(f"R² (качество модели): {r2_score(y_test, y_pred):.2f}")Полезные ресурсы
- Официальная документация — https://scikit-learn.org/stable/
- Встроенные примеры в документации — с кодом и визуализациями
- Начни с алгоритмов: линейная регрессия, Random Forest, K-ближайших соседей
Задачи для закрепления
Задача 1. Установи scikit-learn и проверь версию.
Задача 2. Загрузи датасет load_diabetes() и выведи форму признаков и целевой переменной.
Задача 3. Разбей данные из задачи 2 на train/test с test_size=0.3.
Задача 4. Обучи модель линейной регрессии на датасете диабета и выведи R² на тестовой выборке.
Задача 5. Найди в документации scikit-learn, какой алгоритм рекомендуется как «первый» для классификации.
Ответы:
Задача 1.
pip install scikit-learn
import sklearn
print(sklearn.__version__)Задача 2.
from sklearn.datasets import load_diabetes
diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target
print(X.shape, y.shape)Задача 3.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)Задача 4.
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f"R²: {r2_score(y_test, y_pred):.3f}")Задача 5.
Random Forest часто рекомендуют как первый алгоритм для классификации, поскольку он работает хорошо «из коробки» и не требует масштабирования признаков.
Нюансы и подводные камни
Разница между sklearn и scikit-learn
Это одно и то же! Название библиотеки — scikit-learn, а в коде импортируем как sklearn.
Версионность
Версия scikit-learn важна для воспроизводимости. При сохранении модели фиксируй версию:
print(sklearn.__version__) # Запомни эту версию!Установка sklearn вместо scikit-learn
На PyPI есть пакет sklearn, но он устарел. Всегда устанавливай scikit-learn.
Частые ошибки и как их избежать
Ошибка 1: Неправильный импорт
# Так нельзя
import sklearn.linear_model
# Правильно
from sklearn.linear_model import LogisticRegressionОшибка 2: Перепутал X и y в fit()
# Так неправильно
model.fit(y_train, X_train)
# Правильно
model.fit(X_train, y_train)Ошибка 3: Не фиксируешь random_state
# Результаты будут меняться при каждом запуске
model = RandomForestClassifier()
# Фиксируй для воспроизводимости
model = RandomForestClassifier(random_state=42)Шпаргалка
| Что нужно | Как пишется |
|---|---|
| Установить библиотеку | pip install scikit-learn |
| Импортировать | import sklearn |
| Загрузить датасет | from sklearn.datasets import load_iris |
| Разделить данные | from sklearn.model_selection import train_test_split |
| Обучить модель | model.fit(X_train, y_train) |
| Сделать предсказание | model.predict(X_test) |
| Оценить точность | from sklearn.metrics import accuracy_score |
Заключение
Сегодня мы:
- Установили scikit-learn и проверили его работу
- Разобрались, что это за библиотека и для чего она нужна
- Загрузили встроенный датасет
- Разделили данные на обучающую и тестовую выборки
- Обучили модель классификации и регрессии
- Оценили качество модели




