0Pricing
Python Academy · Урок

API scikit-learn: fit, transform, predict

Разберитесь в интерфейсе оценивателя и процессе разделения данных на обучающую и тестовую выборки.

«API scikit-learn: fit, transform, predict» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Что такое scikit-learn

scikit-learn — основная библиотека Python для классического машинного обучения. Она предоставляет единообразный API: у каждого оценщика есть fit(), а у большинства — predict() или transform().

from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3],[4],[5]])
y = np.array([2, 4, 6, 8, 10])

model = LinearRegression().fit(X, y)
print(model.predict([[6]]))   # [12.]

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

Всегда разделяйте данные до обучения, чтобы оценить, насколько хорошо модель обобщает знания на ещё не виденные данные.

from sklearn.model_selection import train_test_split
import numpy as np

X = np.random.rand(100, 5)
y = (X[:,0] > 0.5).astype(int)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)
print(X_train.shape, X_test.shape)   # (80,5) (20,5)

fit() — обучение

estimator.fit(X, y) обучает модель на X (признаках) и y (метках). Для методов без учителя передаётся только X.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=200, random_state=0)
model = LogisticRegression()
model.fit(X, y)
print("Trained:", model.classes_)

predict() и predict_proba()

predict(X) возвращает метки классов, а predict_proba(X) — вероятности классов для классификаторов.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)

print(model.predict(X[:5]))          # [0 1 0 ...]
print(model.predict_proba(X[:2]))    # [[0.7 0.3] ...]

Преобразователи: fit и transform

У преобразователей, таких как масштабировщики и кодировщики, есть методы fit(X) и transform(X). Всегда обучайте их только на обучающих данных, а затем преобразуйте и обучающую, и тестовую выборки.

from sklearn.preprocessing import StandardScaler
import numpy as np

X_train = np.array([[1,2],[3,4],[5,6]])
X_test  = np.array([[2,3],[4,5]])

scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)   # fit + transform
X_test_s  = scaler.transform(X_test)        # transform only (using train stats)

Конвейер

Pipeline объединяет преобразователи и оценщик в один объект. Он предотвращает утечку данных, корректно применяя преобразования в процессе перекрёстной проверки.

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("clf", SVC())
])
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))

Точность и другие метрики

Используйте accuracy_score, f1_score и classification_report для оценки классификаторов.

from sklearn.metrics import accuracy_score, classification_report

y_pred = model.predict(X_test)
print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

Перекрёстная проверка

cross_val_score оценивает модель с помощью перекрёстной проверки по k блокам, не требуя вручную разделять данные.

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
scores = cross_val_score(LogisticRegression(), X, y, cv=5)
print(f"CV scores: {scores.mean():.3f} ± {scores.std():.3f}")

Настройка гиперпараметров с помощью GridSearchCV

GridSearchCV перебирает всю сетку параметров с помощью перекрёстной проверки, чтобы найти лучшие гиперпараметры.

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
param_grid = {"C": [0.1, 1, 10], "kernel": ["rbf", "linear"]}
gs = GridSearchCV(SVC(), param_grid, cv=5)
gs.fit(X, y)
print(gs.best_params_, gs.best_score_)

Предварительная обработка: LabelEncoder и OneHotEncoder

Кодируйте категориальные метки с помощью LabelEncoder, а категориальные признаки — с помощью OneHotEncoder или ColumnTransformer.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
import numpy as np

le = LabelEncoder()
print(le.fit_transform(["cat","dog","cat","fish"]))   # [0 1 0 2]

ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"],["green"],["blue"]]))

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

Сохраняйте обученные модели с помощью joblib — для массивов NumPy этот инструмент работает быстрее, чем pickle.

import joblib
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)

joblib.dump(model, "model.joblib")
loaded = joblib.load("model.joblib")
print(loaded.predict(X[:3]))

Быстрая проверка

Почему следует вызывать scaler.fit() только для обучающих данных, а не для тестовых?

Итоги

Единообразный API scikit-learn: fit() обучает, predict() делает прогноз, а transform() выполняет предварительную обработку. Используйте Pipeline для объединения этапов. Разделяйте данные с помощью train_test_split, оценивайте модель с помощью cross_val_score и настраивайте её с помощью GridSearchCV.

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

Урок «API scikit-learn: fit, transform, predict» бесплатный?

Да — полный текст урока «API scikit-learn: fit, transform, predict» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «API scikit-learn: fit, transform, predict»?

Разберитесь в интерфейсе оценивателя и процессе разделения данных на обучающую и тестовую выборки. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «API scikit-learn: fit, transform, predict»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. API scikit-learn: fit, transform, predict
  2. Линейные модели: регрессия и классификация
  3. Модели на основе деревьев: деревья решений и случайные леса
  4. Оценка моделей и перекрёстная проверка
← Назад к Python Academy