Промты для Data Science: как обучить модель, проанализировать данные и построить визуализации за один вечер
Каждый дата-сайентист знает: 80% времени уходит не на обучение модели, а на подготовку данных, разведочный анализ и визуализацию. Хорошая новость в том, что большую часть рутины можно автоматизировать с помощью правильно составленных промтов для больших языковых моделей (LLM). В этой подборке — 15 проверенных промтов, которые покрывают полный цикл работы с данными: от загрузки и очистки до выбора модели, настройки гиперпараметров и создания понятных графиков. Каждый промт сопровождается примером, ожидаемым результатом и пояснением, для какой задачи он подходит.
Все примеры предполагают, что вы работаете в Jupyter Notebook или Google Colab с установленными библиотеками: pandas, numpy, scikit-learn, matplotlib, seaborn. Если вы новичок, не пугайтесь — каждый промт можно скопировать и вставить в чат с LLM (например, ChatGPT, Claude, DeepSeek), заменив данные на свои. Главное — следовать структуре и не забывать проверять код на корректность.
1. Первичный осмотр датасета
Задача: быстро понять, что в данных, какие типы признаков, есть ли пропуски и выбросы.
Промт:
Ты — опытный дата-сайентист. У меня есть датасет в pandas DataFrame `df`. Напиши код на Python, который:
1. Выводит размер датасета, типы данных и количество пропусков по каждому столбцу.
2. Показывает описательные статистики для числовых признаков.
3. Строит гистограммы распределений для всех числовых признаков (сетка 3x3).
4. Выводит количество уникальных значений для категориальных признаков.
5. Сохраняет отчёт в текстовый файл `data_overview.txt`.
Добавь комментарии к каждой строке кода.
Пример использования: вы загрузили датасет о клиентах телеком-компании. Промт сгенерирует код, который покажет, что в столбце TotalCharges 11 пропусков, а MonthlyCharges имеет выбросы. Вы сразу поймёте, что нужно обработать.
Ожидаемый результат: готовый блок кода для первого знакомства с данными. Экономит 20–30 минут рутинного анализа.
2. Очистка данных и обработка пропусков
Задача: автоматически предложить стратегию обработки пропусков и выбросов.
Промт:
Дан DataFrame `df` с пропусками и выбросами. Предложи оптимальную стратегию:
- Для числовых признаков с нормальным распределением — заполнить медианой.
- Для категориальных — заполнить модой или создать отдельную категорию 'Unknown'.
- Выбросы определить методом IQR и заменить на границы (winsorization).
Напиши функцию `clean_data(df)`, которая возвращает очищенный DataFrame и лог изменений.
Объясни, почему выбрана та или иная стратегия.
Пример: в датасете о недвижимости признак price имеет выбросы в 10 раз выше среднего. Функция заменит их на 95-й перцентиль, чтобы модель не смещалась.
Совет: всегда проверяйте, не потеряли ли вы важную информацию при заполнении. Иногда пропуск сам по себе является признаком (например, «нет данных о доходе» может коррелировать с отказом от кредита).
3. Разведочный анализ данных (EDA) с автоматическими выводами
Задача: получить текстовое резюме о закономерностях в данных.
Промт:
Проведи разведочный анализ данных для DataFrame `df` (целевая переменная — `target`).
1. Рассчитай корреляции Пирсона и Спирмена для числовых признаков.
2. Построй тепловую карту корреляций.
3. Для категориальных признаков построй boxplot-ы относительно целевой переменной.
4. Сформулируй 5 ключевых инсайтов на русском языке: какие признаки наиболее важны, есть ли мультиколлинеарность, какие категории сильнее всего влияют на цель.
Выведи инсайты в формате маркированного списка.
Пример: для задачи предсказания оттока клиентов промт покажет, что Contract_Monthly и Tenure — самые сильные предикторы, а Gender не влияет.
Ожидаемый результат: вы получаете не только графики, но и готовые формулировки для отчёта.
4. Кодирование категориальных признаков
Задача: выбрать между One-Hot, Label Encoding и Target Encoding.
Промт:
У меня есть категориальные признаки с разной кардинальностью:
- `city` (50 уникальных значений)
- `gender` (2 значения)
- `product_category` (200 значений)
Предложи оптимальный метод кодирования для каждого и напиши код с использованием `sklearn.preprocessing` и `category_encoders`.
Учти, что модель — градиентный бустинг (CatBoost или LightGBM).
Объясни, почему для высококардинальных признаков лучше использовать Target Encoding с кросс-валидацией.
Пример: для product_category с 200 значениями One-Hot создаст 200 столбцов — это увеличит размерность. Target Encoding заменит категории на среднее целевой переменной, что эффективнее.
Важно: Target Encoding требует осторожности, чтобы избежать утечки данных. Используйте KFold для расчёта статистик.
5. Отбор признаков
Задача: уменьшить размерность и убрать шум.
Промт:
Напиши код для отбора признаков тремя методами:
1. SelectKBest с mutual_info_classif (для классификации).
2. Recursive Feature Elimination (RFE) с логистической регрессией.
3. Важность признаков из Random Forest.
Сравни результаты и выведи топ-10 общих признаков.
Построй график важности признаков.
Пример: в датасете о кредитном скоринге из 30 признаков после отбора останется 12, что ускорит обучение и снизит переобучение.
6. Выбор модели и базовый бенчмарк
Задача: быстро сравнить несколько алгоритмов.
Промт:
Сравни 5 моделей для задачи классификации (или регрессии):
- Логистическая регрессия
- Random Forest
- Gradient Boosting (XGBoost)
- SVM
- KNN
Напиши код, который обучает каждую модель на тренировочной выборке, оценивает на валидационной с помощью кросс-валидации (5 фолдов) и выводит таблицу с метриками: accuracy, precision, recall, F1, ROC-AUC (или MAE, RMSE для регрессии).
Используй Pipeline для предобработки.
Пример: для задачи прогнозирования цены квартиры вы увидите, что XGBoost даёт RMSE на 15% ниже, чем линейная регрессия. Это ориентир для дальнейшей настройки.
7. Гиперпараметрическая настройка
Задача: автоматический подбор параметров.
Промт:
Напиши код для оптимизации гиперпараметров XGBoost с помощью Optuna.
Пространство поиска:
- n_estimators: 100–1000
- max_depth: 3–10
- learning_rate: 0.01–0.3
- subsample: 0.5–1.0
- colsample_bytree: 0.5–1.0
Запусти 50 испытаний, используй 5-фолдовую кросс-валидацию, метрика — ROC-AUC.
Выведи лучшие параметры и график оптимизации.
Пример: после 50 итераций Optuna находит max_depth=7, learning_rate=0.05, n_estimators=500, что улучшает ROC-AUC с 0.82 до 0.86.
Совет: если данных мало, используйте Bayesian optimization вместо GridSearch — это быстрее.
8. Визуализация результатов модели
Задача: показать качество модели на графиках.
Промт:
Построй 4 графика для оценки классификатора:
1. ROC-кривая с AUC.
2. Precision-Recall кривая.
3. Матрица ошибок (confusion matrix) с нормализацией.
4. Калибровочная кривая (reliability diagram).
Используй matplotlib и seaborn, сделай графики информативными, добавь заголовки и подписи осей на русском языке.
Пример: для модели оттока клиентов вы увидите, что при пороге 0.4 достигается баланс precision и recall, а матрица ошибок покажет, сколько ложных срабатываний.
9. Интерпретация модели с SHAP
Задача: объяснить, почему модель приняла то или иное решение.
Промт:
Напиши код для интерпретации модели XGBoost с помощью SHAP.
1. Построй summary plot для всех признаков.
2. Построй dependence plot для топ-3 признаков.
3. Для конкретного примера (индекс 42) выведи force plot и объясни вклад каждого признака в предсказание.
Дай интерпретацию на русском языке.
Пример: для клиента с высоким риском оттока SHAP покажет, что основной вклад внёс признак Contract_Monthly (значение 1) и низкий Tenure. Это позволит бизнесу предложить скидку на годовой контракт.
10. Визуализация данных с Plotly для презентаций
Задача: создать интерактивные графики для стейкхолдеров.
Промт:
Создай интерактивный дашборд с Plotly Express для датасета `df`:
- Scatter plot: зависимость целевой переменной от двух признаков, с цветом по категории.
- Box plot: распределение целевой переменной по категориям.
- Heatmap: корреляции.
- Гистограмма с возможностью выбора признака.
Сохрани дашборд в HTML-файл `dashboard.html`.
Пример: вы можете отправить HTML-файл заказчику, и он сам покрутит графики, не устанавливая Python.
11. Автоматизация отчёта с помощью pandas-profiling
Задача: сгенерировать полный EDA-отчёт за одну команду.
Промт:
Напиши код для генерации отчёта с помощью библиотеки ydata-profiling (бывшая pandas-profiling).
Отчёт должен включать: обзор данных, распределения, корреляции, пропуски, дубликаты.
Сохрани отчёт в `report.html`.
Дополнительно: настрой минимальный режим для больших датасетов (mode='minimal').
Пример: для датасета в 100 000 строк отчёт сгенерируется за пару минут и даст полную картину.
12. Работа с временными рядами
Задача: анализ и прогнозирование временных рядов.
Промт:
У меня есть временной ряд с датой и значением. Напиши код для:
1. Декомпозиции ряда на тренд, сезонность и остатки (STL).
2. Проверки стационарности (тест Дики-Фуллера).
3. Построения модели SARIMA и Prophet.
4. Оценки качества на отложенной выборке (MAE, MAPE).
5. Визуализации прогноза с доверительными интервалами.
Пример: для прогноза продаж на месяц вперёд Prophet покажет сезонный всплеск в декабре.
13. Кластеризация и сегментация
Задача: разбить клиентов на группы.
Промт:
Проведи кластеризацию клиентов методом K-means.
1. Определи оптимальное число кластеров с помощью метода локтя и silhouette score.
2. Визуализируй кластеры на двумерной проекции (PCA или t-SNE).
3. Для каждого кластера выведи средние значения признаков и дай бизнес-интерпретацию.
Пример: вы получите 4 сегмента: «экономные», «лояльные», «новые» и «уходящие». Для каждого можно предложить свою маркетинговую стратегию.
14. Развёртывание модели (кратко)
Задача: сохранить модель и сделать простой API.
Промт:
Напиши код для сохранения обученной модели с помощью joblib и создания REST API на FastAPI.
API должно принимать JSON с признаками и возвращать предсказание.
Добавь пример запроса с помощью curl.
Пример: после сохранения модели вы можете запустить uvicorn main:app и отправить POST-запрос с данными клиента, получив вероятность оттока.
15. Оптимизация пайплайна
Задача: ускорить обучение и инференс.
Промт:
Предложи способы оптимизации пайплайна машинного обучения:
- Использование категориальных признаков без One-Hot (CatBoost).
- Уменьшение размерности с помощью PCA.
- Кэширование предобработки.
- Параллелизация с joblib.
Напиши пример кода для каждого пункта.
Пример: переход на CatBoost с нативной поддержкой категорий сократил время предобработки в 3 раза.
Заключение
Эти 15 промтов покрывают 90% задач типичного дата-сайентиста. Они не заменят глубокого понимания алгоритмов, но значительно ускорят рутину. Главное — всегда проверяйте сгенерированный код, адаптируйте под свои данные и не забывайте про интерпретацию результатов. Комбинируйте промты, создавайте свои на их основе, и вы удивитесь, как много можно успеть за один вечер. Практикуйтесь, экспериментируйте и делитесь своими находками.
Примечание: для работы с LLM используйте проверенные инструменты — ChatGPT, Claude, DeepSeek или локальные модели через Ollama. Всегда проверяйте код на тестовых данных перед применением на реальных проектах.
Комментарии