Data Science — это не только код, но и постоянные вопросы к данным: «а что здесь не так?», «почему модель ошибается?», «какой признак добавить?». LLM уже умеет отвечать на такие вопросы, если правильно их задать. В этой подборке — 12 промтов, которые я сам использую в ежедневной работе. Каждый проверен на реальных проектах: от разведочного анализа до интерпретации моделей. Вы получите не просто список, а готовые рецепты с примерами и кодом.
Промпт-инжиниринг для Data Science отличается от обычных запросов к ChatGPT. Здесь важно передать контекст: структуру данных, типы признаков, бизнес-задачу. Иначе LLM выдаст общие советы, которые не применить. Я покажу, как формулировать запросы, чтобы получать конкретные шаги, а не воду.
Все примеры предполагают, что вы работаете в Jupyter Notebook или IDE с доступом к LLM (например, через API OpenAI или локальную модель). Код на Python с pandas и scikit-learn. Начнём с самого начала — с EDA.
1. Быстрый EDA: автоматический отчёт по данным
Первый шаг любого проекта — разведочный анализ. LLM может сгенерировать код для первичного осмотра датасета, но только если вы дадите ему метаинформацию. Промт ниже просит модель написать скрипт, который выведет ключевые статистики, пропуски и распределения.
Промт:
Ты — senior data scientist. У меня есть датафрейм df с такими колонками: [список колонок и типов]. Напиши код на Python (pandas, matplotlib, seaborn), который:
1. Выведет размер датасета, типы признаков, количество пропусков и уникальных значений.
2. Построит гистограммы для числовых признаков и bar-чарты для категориальных (топ-10 категорий).
3. Выведет матрицу корреляций для числовых признаков.
4. Сохранит все графики в папку 'eda_plots'.
Добавь комментарии к коду и кратко опиши, на что обратить внимание в каждом блоке.
Пример использования. В проекте по прогнозу оттока клиентов телекома я передал список из 20 колонок. LLM сгенерировал скрипт, который сразу показал, что в признаке TotalCharges есть пропуски (11 значений) и что корреляция между MonthlyCharges и TotalCharges высокая (0.65). Это сэкономило около часа ручной работы.
Результат: готовый ноутбук с визуализациями, который можно адаптировать под любой датасет. Главное — не забыть проверить, что LLM правильно понял типы колонок.
2. Очистка данных: поиск аномалий и выбросов
Выбросы могут испортить модель. Промт ниже просит LLM предложить методы обнаружения аномалий и сгенерировать код для их визуализации.
Промт:
Ты — эксперт по очистке данных. Для числовых признаков [список] предложи три метода поиска выбросов: IQR, Z-score и изоляционный лес. Напиши код, который для каждого метода выведет количество выбросов и построит boxplot. Объясни, какой метод лучше выбрать в случае скошенного распределения.
Пример. В датасете о недвижимости признак price имел сильную правостороннюю асимметрию. LLM предложил использовать IQR с коэффициентом 3.0 вместо 1.5, чтобы не отсекать дорогие, но легитимные объекты. Код сработал сразу.
Trade-off: IQR устойчив к выбросам, но может пропустить экстремальные значения в малых выборках. Изоляционный лес лучше на многомерных данных, но требует настройки contamination.
3. Feature Engineering: генерация и отбор признаков
LLM может предложить новые признаки на основе существующих. Важно дать ему бизнес-контекст.
Промт:
У меня есть данные о клиентах банка: возраст, доход, количество продуктов, стаж, наличие кредитной карты. Целевая переменная — уход клиента (бинарная). Предложи 5 новых признаков, которые могут улучшить модель. Для каждого укажи формулу расчёта и обоснование. Напиши код на pandas для их создания.
Пример. LLM предложил признак доход_на_продукт (доход / количество продуктов), стаж_на_возраст и бинарный флаг молодой_и_многопродуктовый. После добавления этих признаков ROC AUC на кросс-валидации вырос с 0.82 до 0.85.
Ограничение: LLM не знает ваших данных, поэтому предложения могут быть банальными. Всегда проверяйте корреляцию новых признаков с целевой переменной.
4. Выбор модели и гиперпараметров
Промт для автоматического подбора моделей и параметров с помощью GridSearchCV.
Промт:
Ты — ML-инженер. Для задачи бинарной классификации с дисбалансом классов (10% положительных) и 50 числовыми признаками предложи три модели: логистическую регрессию, случайный лес и градиентный бустинг. Напиши код для сравнения их качества с помощью кросс-валидации (5 фолдов) и метрик ROC AUC, F1, precision, recall. Для каждой модели укажи сетку гиперпараметров для GridSearchCV. Добавь комментарии о том, как обрабатывать дисбаланс.
Пример. LLM предложил для логистической регрессии использовать class_weight='balanced', для леса — max_depth от 5 до 15, для бустинга — learning_rate и n_estimators. Код запустился без ошибок, лучше всего показал себя градиентный бустинг с ROC AUC 0.88.
Что проверить: Убедитесь, что LLM не предлагает устаревшие параметры (например, n_estimators для XGBoost всё ещё работает, но лучше использовать early stopping).
5. Интерпретация модели: SHAP и важность признаков
Объяснить, почему модель приняла решение, — важная часть работы. Промт просит сгенерировать код для SHAP-анализа.
Промт:
Напиши код на Python для интерпретации модели случайного леса с помощью SHAP. Построй summary_plot и bar_plot для топ-10 признаков. Объясни, как читать эти графики и какие выводы можно сделать для бизнеса.
Пример. В проекте по кредитному скорингу SHAP показал, что признак просрочки_за_последний_год имеет наибольший вклад. LLM также подсказал, что для клиентов с высокой вероятностью дефолта значение этого признака смещает предсказание в положительную сторону.
Нюанс: SHAP может быть медленным на больших данных. LLM предложил использовать shap.sample для ускорения.
6. Визуализация: интерактивные графики с Plotly
Статические графики не всегда удобны. Промт для создания интерактивных дашбордов.
Промт:
Создай интерактивный график с Plotly Express для датасета [описание]. Нужно: scatter plot с размером точки, пропорциональным третьему признаку, и цветом по категории. Добавь возможность фильтрации по категории через выпадающий список. Напиши код и кратко опиши, как встроить в Jupyter Notebook.
Пример. Для данных о продажах построил график, где по осям — цена и количество, размер точки — выручка, цвет — регион. LLM сгенерировал код с px.scatter и updatemenus. График сразу выявил аномалию: один регион имел высокие продажи при низкой цене.
7. Оценка качества модели: метрики и их интерпретация
Промт для расчёта метрик и объяснения, что они значат в контексте задачи.
Промт:
У меня есть предсказания модели и истинные метки. Напиши код для расчёта accuracy, precision, recall, F1, ROC AUC и построения confusion matrix. Объясни, какую метрику выбрать, если ложноотрицательные ошибки дороже ложноположительных в 5 раз.
Пример. В задаче обнаружения мошенничества LLM объяснил, что при таком соотношении costs нужно максимизировать recall, даже в ущерб precision. Код сгенерировал матрицу ошибок и метрики.
8. Работа с пропусками: стратегии импутации
Промт для выбора метода заполнения пропусков в зависимости от типа данных и механизма пропусков.
Промт:
В датафрейме есть пропуски в колонках: [список]. Для каждой колонки предложи метод импутации (среднее, медиана, мода, KNN, специальное значение) и обоснуй. Напиши код с использованием sklearn.impute.SimpleImputer и KNNImputer. Учти, что пропуски могут быть не случайными (MNAR).
Пример. Для признака доход с пропусками 15% LLM рекомендовал медиану, так как распределение скошено. Для категориального признака город — заполнение модой. Код сработал.
9. Создание ML-пайплайна с Pipeline
Промт для автоматизации preprocessing и модели в одном пайплайне.
Промт:
Создай Pipeline в scikit-learn для задачи регрессии. В пайплайне должны быть: импутация пропусков, масштабирование числовых признаков, one-hot encoding категориальных, и модель Ridge. Напиши код с ColumnTransformer и GridSearchCV для подбора alpha. Выведи лучшие параметры и R2 на тесте.
Пример. Пайплайн из 4 шагов позволил избежать утечки данных при кросс-валидации. LLM сгенерировал код, который сразу заработал.
10. Генерация синтетических данных
Когда данных мало, LLM может помочь сгенерировать синтетические примеры (с осторожностью).
Промт:
Напиши код для генерации синтетических данных с помощью SMOTE для бинарной классификации с дисбалансом. Используй imblearn. Покажи, как встроить SMOTE в пайплайн и как оценить качество модели после балансировки.
Пример. В датасете с 5% положительных примеров SMOTE улучшил recall с 0.6 до 0.75, но precision упал с 0.8 до 0.7. LLM предупредил об этом trade-off.
11. Подготовка отчёта: автоматическое описание результатов
Промт для генерации текстового отчёта по метрикам и графикам.
Промт:
Ты — аналитик. На основе следующих метрик модели: accuracy=0.85, precision=0.82, recall=0.78, F1=0.80, ROC AUC=0.88, напиши краткий отчёт для бизнеса. Объясни, что означает каждая метрика простым языком, и какие рекомендации можно дать по улучшению модели. Добавь раздел с ограничениями.
Пример. LLM сгенерировал текст, который после минимальной правки пошёл в презентацию для заказчика.
12. Деплой модели: сохранение и загрузка
Промт для сохранения модели и создания API-эндпоинта.
Промт:
Напиши код для сохранения обученной модели (RandomForest) с помощью joblib и создания простого Flask API, который принимает JSON с признаками и возвращает предсказание. Добавь обработку ошибок и пример запроса curl.
Пример. Код позволил быстро развернуть модель на локальном сервере для тестирования.
Все 12 промтов проверены в реальных проектах. Они не заменят экспертизу, но ускоряют рутину. Главное — не слепо копировать код, а адаптировать под свои данные. Если хотите глубже разобраться в аналитике данных, обратите внимание на наш SQL и базы данных и профессию аналитика данных. А для автоматизации тестирования моделей пригодятся промты для юнит-тестов на Python с LLM.
Попробуйте эти промты на своём следующем проекте — начните с EDA и постепенно добавляйте остальные. Если что-то не работает, уточняйте контекст в промте: чем больше деталей, тем точнее ответ.