Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+661новая вакансия за сутки·58 731вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 712
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 393 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python11 079
  • Облачные технологии8 824
  • QA вакансии2 977
  • Android1 395
  • Инженер данных1 032
  • Продакт-менеджер351

Разработка

  • Backend вакансии1 342
  • iOS1 307
  • AI вакансии660
  • Fullstack вакансии524
  • Frontend вакансии465
  • Mobile вакансии28

По стеку

  • Go6 622
  • Java3 670
  • Kotlin1 199
  • Node.js1 190
  • Rust1 181
  • .NET780
  • PHP329
  • C++301
  • C#211

DevOps и инфраструктура

  • Kubernetes5 251
  • Linux-инфраструктура4 138
  • DevOps вакансии3 024
  • Terraform / IaC2 834
  • Мониторинг и Observability1 406
  • CI/CD917
  • SRE389
  • Кибербезопасность40

Аналитика и данные

  • Аналитик данных586
  • Бизнес-аналитик487
  • Data Scientist458
  • Системный аналитик75

Другие направления

  • Проджект-менеджер114
  • UI/UX дизайн74
  • Ручное тестирование14

По регионам

  • Вакансии в США31 201
  • Вакансии в Европе11 507
  • Работа в России3 630
  • Вакансии в Канаде2 546

По формату

  • Удалённые вакансии47 761
  • Релокация в США31 201
  • Гибридная работа7 699
  • Офисная работа6 071

По уровню

  • Senior вакансии27 027
  • Middle вакансии12 284
  • Junior вакансии4 495

Сейчас нанимают

Все компании
  • Wise196 вакансий
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify38 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме scikit-learnВсе вопросы
scikit-learnJuniorКодинг

Что такое интерфейс fit(), transform() и fit_transform() в scikit-learn и почему такой дизайн API важен?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

fit() запоминает статистики по train-данным, transform() применяет их к любым данным, fit_transform() — удобный shortcut только для train. Pipeline гарантирует, что препроцессор никогда не видит тестовые данные при кросс-валидации.

Пример: StandardScaler

import numpy as np
from sklearn.preprocessing import StandardScaler

X_train = np.array([[1.0, 200.0], [2.0, 400.0], [3.0, 600.0]])
X_test  = np.array([[4.0, 800.0], [0.5, 100.0]])

scaler = StandardScaler()

# fit вычисляет mean и std ТОЛЬКО по train
scaler.fit(X_train)
print(scaler.mean_)   # [2.  400.]
print(scaler.scale_)  # [0.81649658 163.2993...]

# transform применяет (X - mean) / std
X_train_scaled = scaler.transform(X_train)
X_test_scaled  = scaler.transform(X_test)   # используем те же mean/std!

print(X_train_scaled)
# [[-1.22  -1.22]
#  [ 0.     0.  ]
#  [ 1.22   1.22]]

Контракт API: fit, transform, fit_transform

В scikit-learn все трансформеры реализуют три метода с чётким разделением ответственности:

  • fit(X, y=None) — вычисляет и запоминает статистики из обучающих данных (среднее, дисперсию, словарь категорий). Возвращает self для chaining. Не меняет X.
  • transform(X) — применяет уже вычисленные параметры к новым данным. Можно вызывать многократно: на train, val, test, production-данных.
  • fit_transform(X, y=None) — эквивалент fit(X).transform(X), но часто реализован эффективнее. Используется только на train-выборке.

Почему нельзя fit на тесте

# НЕВЕРНО: scaler видит тестовые значения
scaler_bad = StandardScaler()
X_test_wrong = scaler_bad.fit_transform(X_test)  # mean теперь другой!
# Модель получит данные в другом масштабе — предсказания будут неверными

# ВЕРНО: fit только на train, transform на всём остальном
scaler_good = StandardScaler()
X_train_scaled = scaler_good.fit_transform(X_train)
X_test_scaled  = scaler_good.transform(X_test)

Pipeline автоматически соблюдает контракт

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
import pandas as pd

X, y = make_classification(n_samples=500, n_features=4, random_state=0)
df = pd.DataFrame(X, columns=["age", "income", "score", "flag"])
df["country"] = ["RU", "US", "DE"][0:1] * 167 + ["US"] * 166

num_cols = ["age", "income", "score", "flag"]
cat_cols = ["country"]

preprocessor = ColumnTransformer([
    ("num", StandardScaler(), num_cols),
    ("cat", OneHotEncoder(handle_unknown="ignore", sparse_output=False), cat_cols),
])

pipeline = Pipeline([
    ("prep", preprocessor),
    ("clf",  LogisticRegression(max_iter=300, random_state=0)),
])

X_train, X_test, y_train, y_test = train_test_split(df, y, test_size=0.2, random_state=0)

# Pipeline.fit вызывает prep.fit_transform(X_train) + clf.fit(...)
# Pipeline.predict вызывает prep.transform(X_test)  + clf.predict(...)
pipeline.fit(X_train, y_train)
print("Test accuracy:", pipeline.score(X_test, y_test))

Зачем такой дизайн API

Единый интерфейс fit / transform позволяет:

  • Компоновать любые трансформеры в Pipeline и ColumnTransformer без изменения кода.
  • Безопасно использовать cross_validate — каждый fold независимо fit-ит препроцессор, исключая leakage.
  • Сериализовать весь pipeline одним joblib.dump(pipeline, "model.pkl") и деплоить без повторного fit-а.
  • Реализовывать кастомные трансформеры через BaseEstimator + TransformerMixin, получая fit_transform бесплатно.

Подводные камни

  • Вызов transform до fit — бросает sklearn.exceptions.NotFittedError. Проверяйте через check_is_fitted(estimator).
  • fit_transform на тесте — самая частая ошибка новичков: статистики пересчитываются, масштаб не совпадает с train.
  • Мутация входного X — некоторые трансформеры (например, SimpleImputer с copy=False) изменяют массив на месте. По умолчанию copy=True.
  • ColumnTransformer отбрасывает неперечисленные столбцы — используйте remainder="passthrough", если нужно сохранить остальные признаки.
  • sparse_output=True у OneHotEncoder — по умолчанию возвращает разреженную матрицу; StandardScaler её не принимает. Используйте sparse_output=False или MaxAbsScaler.
  • set_output API (sklearn 1.2+) — pipeline.set_output(transform="pandas") возвращает DataFrame с именами столбцов; без него именованный доступ к признакам теряется.

Типичные ошибки

  • Объяснять fit transform api только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать fit transform api с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

Как вы знаете этот вопрос?

Проверить себя по теме scikit-learn →

Источники

  • https://scikit-learn.org/stable/user_guide.html
←Предыдущий вопросКак обнаружить и предотвратить утечку данных (data leakage) при построении пайплайна в scikit-learn?Следующий вопрос→В каких data/AI-задачах scikit-learn даёт реальный выигрыш, а где лучше выбрать другой инструмент или более простой pipeline?

Связанные темы

scikit-learndata-aievaluationmodel-training

Вакансии с этим навыком

  • 📑 Вакансия Junior Data Scientist / ML Engineer

Частые вопросы на собеседовании

  • В чём разница между train_test_split() и кросс-валидацией (cross_val_score)? Когда применять каждый из них?
  • Как работает Pipeline в scikit-learn и какие проблемы он решает (утечка данных — data leakage)?
  • Какие метрики применять для задачи классификации с несбалансированными классами и как их вычислить в scikit-learn?
  • Как обнаружить и предотвратить утечку данных (data leakage) при построении пайплайна в scikit-learn?