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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 146
  • Облачные технологии14 070
  • QA вакансии3 446
  • Backend вакансии2 089
  • Инженер данных1 792
  • Продакт-менеджер1 233

Разработка

  • Android1 863
  • iOS1 701
  • Fullstack вакансии976
  • AI вакансии944
  • Frontend вакансии738
  • Mobile вакансии44

По стеку

  • Go8 699
  • Java6 545
  • Node.js2 025
  • .NET1 723
  • Kotlin1 613
  • Rust1 462
  • C#710
  • PHP684
  • C++574

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

  • Kubernetes7 765
  • DevOps вакансии6 051
  • Linux-инфраструктура5 492
  • Terraform / IaC4 271
  • CI/CD3 242
  • Мониторинг и Observability1 790
  • SRE565
  • Кибербезопасность451

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

  • Data Scientist1 124
  • Бизнес-аналитик916
  • Аналитик данных839
  • Системный аналитик151

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

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

По регионам

  • Вакансии в США43 473
  • Вакансии в Европе23 552
  • Вакансии в Канаде4 376
  • Работа в России3 902

По формату

  • Удалённые вакансии72 758
  • Релокация в США43 100
  • Гибридная работа12 402
  • Офисная работа7 096

По уровню

  • Senior вакансии42 000
  • Middle вакансии20 393
  • Junior вакансии6 602

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 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 неудобочитаемым.

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

  • Объяснять 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

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

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