Писали ли вы модели машинного обучения на Python?

«Писали ли вы модели машинного обучения на Python?» — вопрос из категории Python, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Python — мой основной язык для реализации ML-моделей. Я использовал полный стек библиотек от scikit-learn для классических алгоритмов до PyTorch/TensorFlow для глубокого обучения.

1. Классическое ML (scikit-learn, XGBoost, LightGBM): Для задач с табличными данными (например, прогнозирование оттока или кредитного скоринга) я чаще всего использую ансамбли.

# Пример пайплайна для предсказания цены автомобиля (регрессия)
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_score

# Предобработка: масштабирование числовых и кодирование категориальных признаков
numeric_features = ['mileage', 'engine_power']
numeric_transformer = Pipeline(steps=[('scaler', StandardScaler())])

categorical_features = ['brand', 'fuel_type']
categorical_transformer = Pipeline(steps=[('onehot', OneHotEncoder(handle_unknown='ignore'))])

preprocessor = ColumnTransformer(
    transformers=[
        ('num', numeric_transformer, numeric_features),
        ('cat', categorical_transformer, categorical_features)
    ])

# Создание полного пайплайна: предобработка + модель
model = Pipeline(steps=[
    ('preprocessor', preprocessor),
    ('regressor', RandomForestRegressor(n_estimators=100, random_state=42))
])

# Оценка модели
scores = cross_val_score(model, X, y, cv=5, scoring='neg_mean_squared_error')
print(f"CV RMSE: {(-scores.mean())**0.5:.2f}")

2. Глубокое обучение (PyTorch): Для задач компьютерного зрения (CV) и обработки естественного языка (NLP). Например, реализовывал архитектуру U-Net для семантической сегментации медицинских снимков или fine-tuned BERT для классификации текстовых обращений в поддержку.

3. MLOps аспекты: В продакшене важно не только написать модель, но и обеспечить её воспроизводимость и мониторинг. Для этого я использовал:

  • MLflow для трекинга экспериментов и версионирования моделей.
  • DVC для версионирования данных.
  • Docker для упаковки inference-сервиса.