Scikit-learn – машинное обучение

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Что такое Scikit-learn и для чего он используется

Scikit-learn — это мощная и удобная библиотека Python для реализации алгоритмов машинного обучения. Она предоставляет готовые инструменты для:

  • классификации, регрессии, кластеризации;

  • предобработки данных;

  • оценки моделей и отбора признаков;

  • кросс-валидации и подбора гиперпараметров.

Scikit-learn широко используется в Data Science, аналитике и машинном обучении благодаря своей простоте, надежности и интеграции с NumPy, Pandas и Matplotlib.


Установка и импорт Scikit-learn

Установка выполняется через pip:

bash
pip install scikit-learn

Импорт основных компонентов:

python
from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import accuracy_score

Особенности и преимущества библиотеки

  • Простота API и документации;

  • Богатый выбор алгоритмов;

  • Хорошо интегрируется с Pandas и NumPy;

  • Поддерживает пайплайны, кросс-валидацию и GridSearchCV;

  • Идеальна для обучения и прототипирования.


Архитектура Scikit-learn: pipeline, estimator, transformer

  • Estimator — любой объект, реализующий .fit() и .predict() (например, модель).

  • Transformer — объект с .fit() и .transform() (например, масштабирование).

  • Pipeline — последовательность шагов обработки и обучения.

python
from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC pipe = Pipeline([ ('scaler', StandardScaler()), ('svc', SVC()) ]) pipe.fit(X_train, y_train)

Загрузка и подготовка данных

Встроенные датасеты

python
from sklearn.datasets import load_iris data = load_iris() X, y = data.data, data.target

Разделение на обучающую и тестовую выборки

python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Основные алгоритмы машинного обучения

Линейная регрессия

python
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train)

Логистическая регрессия

python
from sklearn.linear_model import LogisticRegression model = LogisticRegression()

Метод опорных векторов (SVM)

python
from sklearn.svm import SVC model = SVC()

Деревья решений и случайный лес

python
from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier()

K-ближайших соседей (KNN)

python
from sklearn.neighbors import KNeighborsClassifier model = KNeighborsClassifier()

Кластеризация (KMeans)

python
from sklearn.cluster import KMeans model = KMeans(n_clusters=3)

Оценка качества моделей

Метрики: accuracy, precision, recall, f1-score

python
from sklearn.metrics import classification_report print(classification_report(y_test, y_pred))

Матрица ошибок и ROC-кривая

python
from sklearn.metrics import confusion_matrix, roc_auc_score

Кросс-валидация и подбор гиперпараметров

GridSearchCV и RandomizedSearchCV

python
from sklearn.model_selection import GridSearchCV param_grid = {'n_neighbors': [3, 5, 7]} grid = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5) grid.fit(X_train, y_train)

Сохранение и загрузка моделей

python
import joblib joblib.dump(model, "model.pkl") loaded_model = joblib.load("model.pkl")

Часто задаваемые вопросы

Что такое Scikit-learn?

Это библиотека Python для реализации алгоритмов машинного обучения.

Какие задачи можно решать?

Классификация, регрессия, кластеризация, отбор признаков и многое другое.

Как разделить данные?

python
train_test_split(X, y, test_size=0.2)

Что такое GridSearchCV?

Это способ подбора лучших параметров модели с помощью перебора по сетке.

Как сохранить обученную модель?

С помощью joblib.dump() или pickle.

Подходит ли Scikit-learn для нейронных сетей?

Нет, для этого лучше использовать TensorFlow или PyTorch.

Полный справочник по функциям и модулям библиотеки Scikit-learn (sklearn)

Модули и задачи

Модуль Назначение
sklearn.preprocessing Предобработка данных (масштабирование, кодирование и т.п.).
sklearn.model_selection Разделение данных, перекрёстная проверка, подбор параметров.
sklearn.linear_model Линейные модели (регрессия, логистическая регрессия и т.д.).
sklearn.tree Решающие деревья.
sklearn.ensemble Сложные ансамбли: случайный лес, градиентный бустинг.
sklearn.svm Метод опорных векторов.
sklearn.neighbors Алгоритмы ближайших соседей.
sklearn.naive_bayes Наивный байесовский классификатор.
sklearn.cluster Кластеризация.
sklearn.decomposition Уменьшение размерности.
sklearn.metrics Метрики качества моделей.
sklearn.pipeline Построение цепочек обработки.
sklearn.datasets Генерация и загрузка датасетов.

Предобработка данных (sklearn.preprocessing)

Класс / Функция Описание
StandardScaler() Приводит признаки к нулевому среднему и единичному стандартному отклонению.
MinMaxScaler() Масштабирует данные в заданный диапазон (по умолчанию от 0 до 1).
RobustScaler() Масштабирует на основе медианы и IQR (устойчив к выбросам).
OneHotEncoder() Кодирует категориальные признаки как вектор из 0 и 1.
LabelEncoder() Преобразует категории в числа.
PolynomialFeatures() Создаёт полиномиальные признаки из входных.
normalize() Нормирует строки матрицы признаков.

Разделение и проверка моделей (sklearn.model_selection)

Функция Описание
train_test_split(X, y, test_size=0.2) Делит данные на обучающую и тестовую выборки.
cross_val_score(model, X, y, cv=5) Кросс-валидация модели.
KFold(n_splits=5) Классический k-fold.
GridSearchCV(estimator, param_grid, cv=5) Поиск лучших параметров с перебором.
RandomizedSearchCV() Случайный перебор параметров.
StratifiedKFold() Сбалансированное разбиение по классам.

Линейные модели (sklearn.linear_model)

Модель Описание
LinearRegression() Классическая линейная регрессия.
LogisticRegression() Логистическая регрессия (для классификации).
Ridge() Регрессия с L2-регуляризацией.
Lasso() Регрессия с L1-регуляризацией.
ElasticNet() Комбинированная L1+L2 регуляризация.
SGDClassifier() Линейная модель с обучением стохастическим градиентным спуском.

Деревья и ансамбли (sklearn.tree, sklearn.ensemble)

Модель Описание
DecisionTreeClassifier() Дерево решений для классификации.
DecisionTreeRegressor() Дерево для регрессии.
RandomForestClassifier() Случайный лес (ансамбль деревьев).
RandomForestRegressor() То же для регрессии.
GradientBoostingClassifier() Градиентный бустинг.
AdaBoostClassifier() Адаптивный бустинг.
BaggingClassifier() Метод пакетирования.
VotingClassifier() Комбинация нескольких моделей.
HistGradientBoostingClassifier() Быстрый градиентный бустинг на гистограммах.

Метод опорных векторов (sklearn.svm)

Класс Описание
SVC() Классификатор SVM.
SVR() Регрессия SVM.
LinearSVC() Быстрая реализация линейного SVM.

Алгоритмы ближайших соседей (sklearn.neighbors)

Класс Описание
KNeighborsClassifier() Классификация по k ближайшим соседям.
KNeighborsRegressor() Регрессия по соседям.
NearestNeighbors() Поиск ближайших объектов.

Байесовские методы (sklearn.naive_bayes)

Класс Описание
GaussianNB() Для непрерывных признаков с нормальным распределением.
MultinomialNB() Для целочисленных признаков (например, текст).
BernoulliNB() Для бинарных признаков.

Кластеризация (sklearn.cluster)

Метод Описание
KMeans(n_clusters=...) Классический алгоритм кластеризации.
AgglomerativeClustering() Иерархическая кластеризация.
DBSCAN() Выделение плотных областей.
MeanShift() Алгоритм смещения среднего.

Уменьшение размерности (sklearn.decomposition)

Метод Описание
PCA(n_components) Метод главных компонент.
TruncatedSVD() SVD-разложение для разреженных данных.
FastICA() Независимые компоненты.
NMF() Неконv негативная матричная факторизация.

Метрики оценки качества (sklearn.metrics)

Функция Описание
accuracy_score(y_true, y_pred) Доля правильных ответов.
precision_score() Точность (precision).
recall_score() Полнота (recall).
f1_score() Гармоническое среднее точности и полноты.
confusion_matrix() Матрица ошибок.
classification_report() Все основные метрики сразу.
mean_squared_error() Среднеквадратичная ошибка.
r2_score() Коэффициент детерминации.
roc_auc_score() Площадь под ROC-кривой.

Построение пайплайнов (sklearn.pipeline)

Класс Описание
Pipeline([...]) Последовательность шагов: трансформации и модель.
make_pipeline(...) Быстрое создание пайплайна.
ColumnTransformer([...]) Применение разных трансформеров к разным колонкам.

Загрузка и генерация данных (sklearn.datasets)

Функция Описание
load_iris() Классический датасет по цветкам ириса.
load_boston() (устарел) Данные о недвижимости.
load_digits() Цифры для задач классификации.
make_classification() Генерация классификационного набора данных.
make_regression() Генерация набора для регрессии.
make_blobs() Генерация кластеров.

Установка

bash
pip install scikit-learn

Простой пример использования

python