Что такое Scikit-learn и для чего он используется
Scikit-learn — это мощная и удобная библиотека Python для реализации алгоритмов машинного обучения. Она предоставляет готовые инструменты для:
-
классификации, регрессии, кластеризации;
-
предобработки данных;
-
оценки моделей и отбора признаков;
-
кросс-валидации и подбора гиперпараметров.
Scikit-learn широко используется в Data Science, аналитике и машинном обучении благодаря своей простоте, надежности и интеграции с NumPy, Pandas и Matplotlib.
Установка и импорт Scikit-learn
Установка выполняется через pip:
Импорт основных компонентов:
Особенности и преимущества библиотеки
-
Простота API и документации;
-
Богатый выбор алгоритмов;
-
Хорошо интегрируется с Pandas и NumPy;
-
Поддерживает пайплайны, кросс-валидацию и GridSearchCV;
-
Идеальна для обучения и прототипирования.
Архитектура Scikit-learn: pipeline, estimator, transformer
-
Estimator — любой объект, реализующий
.fit()
и.predict()
(например, модель). -
Transformer — объект с
.fit()
и.transform()
(например, масштабирование). -
Pipeline — последовательность шагов обработки и обучения.
Загрузка и подготовка данных
Встроенные датасеты
Разделение на обучающую и тестовую выборки
Основные алгоритмы машинного обучения
Линейная регрессия
Логистическая регрессия
Метод опорных векторов (SVM)
Деревья решений и случайный лес
K-ближайших соседей (KNN)
Кластеризация (KMeans)
Оценка качества моделей
Метрики: accuracy, precision, recall, f1-score
Матрица ошибок и ROC-кривая
Кросс-валидация и подбор гиперпараметров
GridSearchCV и RandomizedSearchCV
Сохранение и загрузка моделей
Часто задаваемые вопросы
Что такое Scikit-learn?
Это библиотека Python для реализации алгоритмов машинного обучения.
Какие задачи можно решать?
Классификация, регрессия, кластеризация, отбор признаков и многое другое.
Как разделить данные?
Что такое 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() |
Генерация кластеров. |