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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python9 224
  • Облачные технологии4 076
  • QA вакансии1 588
  • Android1 322
  • Инженер данных805
  • Продакт-менеджер368

Разработка

  • Backend вакансии1 317
  • iOS1 239
  • AI вакансии608
  • Fullstack вакансии523
  • Frontend вакансии456
  • Mobile вакансии28

По стеку

  • Go5 445
  • Java3 175
  • Kotlin1 119
  • Node.js1 026
  • Rust949
  • .NET666
  • PHP311
  • C#210
  • C++204

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

  • DevOps вакансии2 713
  • Kubernetes2 308
  • Linux-инфраструктура1 890
  • Terraform / IaC1 406
  • CI/CD842
  • Мониторинг и Observability645
  • SRE226
  • Кибербезопасность84

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

  • Аналитик данных483
  • Data Scientist469
  • Бизнес-аналитик349
  • Системный аналитик48

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

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

По регионам

  • Вакансии в США24 791
  • Вакансии в Европе9 439
  • Работа в России2 924
  • Вакансии в Канаде2 178

По формату

  • Удалённые вакансии43 505
  • Релокация в США24 791
  • Гибридная работа3 370
  • Офисная работа2 525

По уровню

  • Senior вакансии20 898
  • Middle вакансии12 438
  • Junior вакансии3 864

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

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

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

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

Как использовать make_pipeline() и какова конвенция именования шагов?

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

make_pipeline() создаёт Pipeline с именами шагов из имён классов в нижнем регистре. Для явного контроля используйте Pipeline(steps=[('имя', объект)]) — это необходимо для set_params() и GridSearchCV.

Пример: make_pipeline()

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression

# Автоматические имена: standardscaler, pca, logisticregression
pipe = make_pipeline(
    StandardScaler(),
    PCA(n_components=10),
    LogisticRegression(max_iter=1000)
)
print(pipe.named_steps.keys())
# dict_keys(['standardscaler', 'pca', 'logisticregression'])

make_pipeline() и конвенция именования шагов

make_pipeline() — это сокращённый способ создать объект Pipeline без явного указания имён шагов. Имена генерируются автоматически из имени класса в нижнем регистре. Это удобно для быстрого прототипирования, но в серьёзных проектах лучше использовать Pipeline(steps=[...]) с явными именами — они нужны для set_params(), GridSearchCV и отладки.

Как работает автоматическое именование

Функция берёт класс каждого трансформера/оценщика и переводит его имя в нижний регистр. Например:

  • StandardScaler → "standardscaler"
  • PCA → "pca"
  • LogisticRegression → "logisticregression"

Если передать два объекта одного класса, make_pipeline добавит числовой суффикс: "standardscaler-1", "standardscaler-2".

Пример: Pipeline() с явными именами

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression

pipe = Pipeline(steps=[
    ("scaler", StandardScaler()),
    ("reducer", PCA(n_components=10)),
    ("clf", LogisticRegression(max_iter=1000))
])

# Доступ к шагу по имени
print(pipe.named_steps["scaler"])

# Задать параметр через GridSearchCV-нотацию: имя_шага__параметр
pipe.set_params(clf__C=0.1)

set_params и GridSearchCV

from sklearn.model_selection import GridSearchCV

param_grid = {
    "reducer__n_components": [5, 10, 20],
    "clf__C": [0.01, 0.1, 1.0]
}
gs = GridSearchCV(pipe, param_grid, cv=5, scoring="accuracy")
gs.fit(X_train, y_train)
print(gs.best_params_)

Конвенция именования в команде

  • Используйте короткие смысловые имена: "scaler", "enc", "clf", "reg".
  • Избегайте транслитерации и аббревиатур, понятных только автору.
  • Финальный шаг всегда называйте единообразно: "clf" для классификации, "reg" для регрессии, "estimator" для generic-кода.
  • В библиотечном коде предпочитайте явный Pipeline(), а не make_pipeline(), чтобы потребитель мог предсказуемо обращаться к шагам.

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

  • Коллизия имён: два объекта одного класса в make_pipeline получат суффиксы вида -1/-2; GridSearchCV-ключи будут неочевидны.
  • set_params ломается при опечатке: pipe.set_params(clf__max_itr=500) молча проигнорируется — нет исключения, если имя параметра неверно (до scikit-learn 1.4 поведение зависело от версии).
  • Все шаги кроме последнего обязаны реализовывать transform(): передача финального классификатора не в конец вызовет AttributeError.
  • clone() не копирует подобранные параметры: sklearn.base.clone(pipe) сбрасывает fitted-состояние — не путайте с deepcopy при сохранении обученной модели.
  • memory= кеширует трансформации на диск по сигнатуре шага; если менять параметры без сброса кеша, GridSearchCV будет возвращать устаревшие результаты.
  • Имена шагов не должны содержать двойное подчёркивание: "my__scaler" сломает парсинг нотации шаг__параметр.
  • verbose_feature_names_out: с set_output(transform="pandas") имена шагов префиксируются к именам колонок — длинные авто-имена делают DataFrame неудобочитаемым.

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

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

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

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

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

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

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

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

Источники

  • https://scikit-learn.org/stable/modules/compose.html#pipeline
←Предыдущий вопросВ чём разница между `StandardScaler`, `MinMaxScaler` и `RobustScaler`? Когда использовать каждый?Следующий вопрос→В чём разница между `predict()` и `predict_proba()` и когда важен последний?

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

scikit-learndata-aievaluationmodel-training

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

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