Какими библиотеками для машинного обучения ты пользовался?

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

Ответ

В своей работе я активно использую широкий спектр библиотек, каждая для своих задач:

Для классического ML и базовых операций:

  • Scikit-learn (sklearn): Основная библиотека для всего цикла ML. Использую ее для имплементации алгоритмов (от LogisticRegression и RandomForestClassifier до KMeans), предобработки данных (StandardScaler, OneHotEncoder), построения пайплайнов (Pipeline, ColumnTransformer) и оценки моделей (метрики, кросс-валидация).
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score

model = RandomForestClassifier(n_estimators=200, max_depth=10, random_state=42)
# Быстрая оценка качества через кросс-валидацию
cv_scores = cross_val_score(model, X, y, cv=5, scoring='roc_auc')
print(f"Mean ROC-AUC: {cv_scores.mean():.3f} (+/- {cv_scores.std()*2:.3f})")

Для градиентного бустинга (работа с табличными данными):

  • XGBoost, LightGBM, CatBoost: Это мои основные инструменты для задач классификации и регрессии на структурированных данных. Выбор между ними зависит от задачи: LightGBM — для скорости на больших данных, CatBoost — для работы с категориальными признаками без предварительного кодирования, XGBoost — как надежный, хорошо настраиваемый вариант. Все они имеют отличные интерфейсы для Python и поддерживают раннюю остановку, что критично для валидации.
import xgboost as xgb
from xgboost import XGBClassifier

# Создание DMatrix - оптимизированной структуры данных для XGBoost
dtrain = xgb.DMatrix(X_train, label=y_train)
dval = xgb.DMatrix(X_val, label=y_val)

params = {'objective': 'binary:logistic', 'max_depth': 6, 'eta': 0.1}
evals = [(dtrain, 'train'), (dval, 'eval')]

# Обучение с отслеживанием метрик на валидации
model_xgb = xgb.train(params, dtrain, num_boost_round=100,
                      evals=evals, early_stopping_rounds=20, verbose_eval=False)

Для глубокого обучения:

  • PyTorch: Моя основная библиотека для задач, где нужны нейронные сети: компьютерное зрение (CV), обработка естественного языка (NLP), рекомендательные системы. Ценю ее за гибкость, динамический computational graph и питоноцентричный подход.
  • TensorFlow/Keras: Использую для более быстрого прототипирования стандартных архитектур или когда проект уже построен на этом стеке.

Для обработки и анализа данных:

  • Pandas & NumPy: Фундаментальные библиотеки для манипуляций с данными, без них никуда.
  • Matplotlib & Seaborn: Для визуализации на этапах EDA и представления результатов.
  • SciPy & Statsmodels: Для проведения статистических тестов и более сложного анализа.

Для специфических областей:

  • NLP: transformers (Hugging Face) для state-of-the-art моделей, nltk/spaCy для лингвистической обработки.
  • CV: OpenCV для базовой обработки изображений, albumentations для аугментаций.
  • Интерпретация моделей: SHAP и LIME — must-have для объяснения предсказаний, особенно в регулируемых областях вроде финтеха.