Установка scikit-learn и знакомство

Установка scikit-learn и знакомство Scikit-learn

Привет! Ты слышал про машинное обучение и хочешь попробовать свои силы? Самое время познакомиться с scikit-learn — главной библиотекой для ML на Python. Она простая, мощная и идеально подходит для начинающих.

В этой статье мы разберём:

  • Что такое scikit-learn и зачем он нужен
  • Как установить scikit-learn
  • Первое знакомство: структура и возможности
  • Как загрузить данные и обучить первую модель

Что нужно знать перед началом

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

  • Установленный 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 и проверили его работу
  • Разобрались, что это за библиотека и для чего она нужна
  • Загрузили встроенный датасет
  • Разделили данные на обучающую и тестовую выборки
  • Обучили модель классификации и регрессии
  • Оценили качество модели

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×