Вы когда-нибудь тратили полдня на очистку датасета, хотя знали, что нейросеть справится за минуту? Я — да. В 2026 году это уже непозволительная роскошь. Пока одни спорят, заменит ли ИИ дата-сайентистов, другие используют LLM как ассистентов, ускоряя рутину в разы. В этой статье — не просто список промтов, а выжимка из моего опыта: что реально работает, а что — пустая трата токенов. Здесь вы найдете 10 проверенных промтов, которые покрывают весь цикл DS-проекта — от первой гипотезы до мониторинга в продакшене. Каждый — с примером использования и кодом, чтобы вы могли применить их сразу.
1. Базовый: Разведка данных (EDA) без боли
Задача: Быстро понять структуру датасета, выявить пропуски и аномалии до того, как строить модели.
Промт:
Ты — опытный дата-сайентист. Проведи разведочный анализ данных для датасета с колонками: [перечислите колонки]. Для каждой колонки определи тип данных, количество уникальных значений, пропуски, среднее, медиану, стандартное отклонение, min/max. Выяви потенциальные выбросы (используя метод IQR) и корреляцию с целевой переменной. Оформи результат в виде краткого отчета с визуализациями (используй Python: pandas, matplotlib, seaborn).
Пример использования:
Вы загрузили датасет о клиентах банка (возраст, доход, кредитный рейтинг, дефолт). Вместо того чтобы писать десятки строк кода, вы копируете промт, вставляете названия колонок и получаете готовый скрипт для EDA.
Пример кода (фрагмент, который сгенерирует LLM):
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('clients.csv')
print(df.describe())
# Проверка пропусков
print(df.isnull().sum())
# Выбросы по возрасту
Q1 = df['age'].quantile(0.25)
Q3 = df['age'].quantile(0.75)
IQR = Q3 - Q1
outliers = df[(df['age'] < Q1 - 1.5*IQR) | (df['age'] > Q3 + 1.5*IQR)]
print(f'Найдено выбросов: {len(outliers)}')
Почему это работает: LLM обучены на тысячах подобных скриптов, поэтому они выдают структурированный код, который вы можете сразу запустить и адаптировать.
2. Базовый: Очистка данных — полный автомат
Задача: Автоматизировать процесс очистки: обработка пропусков, дубликатов, приведение типов.
Промт:
Сгенерируй Python-скрипт для очистки датафрейма pandas. Скрипт должен: 1) удалять дубликаты, 2) заполнять пропуски в числовых колонках медианой, в категориальных — модой, 3) приводить строковые колонки к нижнему регистру и удалять пробелы, 4) конвертировать колонку 'date' в формат datetime. Добавь логирование каждого шага. Выполни очистку для данных вида: [пример данных].
Пример использования:
У вас есть «грязный» CSV с опечатками и пропусками. Промт создает скрипт, который делает все рутинные операции за вас, и вы можете переиспользовать его для других датасетов.
Пример кода:
import pandas as pd
import numpy as np
def clean_dataframe(df):
print(f'Исходный размер: {df.shape}')
df = df.drop_duplicates()
for col in df.select_dtypes(include=[np.number]).columns:
df[col] = df[col].fillna(df[col].median())
for col in df.select_dtypes(include=['object']).columns:
df[col] = df[col].fillna(df[col].mode()[0])
df[col] = df[col].str.strip().str.lower()
if 'date' in df.columns:
df['date'] = pd.to_datetime(df['date'])
print(f'После очистки: {df.shape}')
return df
# Применение
clean_df = clean_dataframe(pd.read_csv('raw_data.csv'))
3. Продвинутый: Генерация синтетических данных для балансировки классов
Задача: Создать синтетические данные для классов с недостаточным представлением, чтобы улучшить качество модели.
Промт:
Используя библиотеку imbalanced-learn, сгенерируй синтетические данные для датасета с дисбалансом классов. Примени метод SMOTE (Synthetic Minority Over-sampling Technique) к данным [описание датасета]. Оцени, как изменилось распределение классов до и после. Покажи код на Python.
Пример использования:
В датасете о мошеннических транзакциях только 1% положительных примеров. SMOTE создает искусственные примеры, балансируя классы.
Пример кода:
from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
print('До:', y_train.value_counts().to_dict())
print('После:', y_resampled.value_counts().to_dict())
Важно: SMOTE — стандартный метод, описанный в статье Chawla et al. (2002), и он доступен в библиотеке imbalanced-learn, о чем можно упомянуть в статье.
4. Продвинутый: Автоматический подбор гиперпараметров с объяснением
Задача: Найти оптимальные гиперпараметры модели и понять, почему они выбраны.
Промт:
Подбери гиперпараметры для модели RandomForestClassifier с помощью GridSearchCV. Данные: [описание]. Используй сетку параметров: n_estimators (50, 100, 200), max_depth (None, 10, 20), min_samples_split (2, 5, 10). Оцени качество по метрике F1. Выведи лучшие параметры и среднее время подбора. Добавь комментарии к коду, объясняющие выбор.
Пример использования:
Вы хотите обучить модель, но не знаете, какие параметры лучше. Промт генерирует код, который перебирает комбинации и дает вам готовый оптимум.
Пример кода:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [None, 10, 20],
'min_samples_split': [2, 5, 10]
}
grid = GridSearchCV(RandomForestClassifier(random_state=42), param_grid, cv=5, scoring='f1')
grid.fit(X_train, y_train)
print('Лучшие параметры:', grid.best_params_)
print('Лучший F1:', grid.best_score_)
5. Продвинутый: Интерпретация модели с SHAP
Задача: Объяснить предсказания модели — для бизнеса или регуляторов.
Промт:
Используя библиотеку SHAP, проанализируй важность признаков для обученной модели XGBoost. Построй summary plot и waterfall plot для одного из предсказаний. Объясни, как интерпретировать эти графики. Данные: [описание].
Пример использования:
Банк должен объяснить клиенту, почему отказано в кредите. SHAP показывает вклад каждого признака.
Пример кода:
import shap
import xgboost as xgb
model = xgb.XGBClassifier().fit(X_train, y_train)
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test, feature_names=feature_names)
# Waterfall для первого объекта
shap.waterfall_plot(explainer.expected_value, shap_values[0], X_test[0])
Ссылка: SHAP основан на теории игр (Shapley values), подробнее можно посмотреть в оригинальной статье Лундберга и Ли (2017).
6. Экспертный: Генерация фич с помощью featuretools
Задача: Автоматически создавать новые признаки из временных рядов и реляционных данных.
Промт:
Создай новые фичи для датасета транзакций с помощью featuretools. У нас есть таблица транзакций (id клиента, дата, сумма) и таблица клиентов (id, возраст, город). Создай entity set, добавь отношения, и сгенерируй признаки с помощью Deep Feature Synthesis. Выведи топ-5 признаков по важности. Код на Python.
Пример использования:
В retail-аналитике вы хотите автоматически создать признаки типа «средняя сумма покупки за неделю».
Пример кода:
import featuretools as ft
es = ft.EntitySet(id='transactions')
es = es.add_dataframe(dataframe_name='transactions', dataframe=transactions_df, index='transaction_id')
es = es.add_dataframe(dataframe_name='clients', dataframe=clients_df, index='client_id')
relationship = ft.Relationship(es['clients']['client_id'], es['transactions']['client_id'])
es = es.add_relationship(relationship)
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name='clients', agg_primitives=['mean', 'max', 'count'])
print(feature_matrix.head())
7. Экспертный: Автоматизация ML-пайплайна с помощью PyCaret
Задача: Сравнить несколько моделей и выбрать лучшую за один запуск.
Промт:
Используя PyCaret, создай классификационный пайплайн для датасета [описание]. Сравни модели: логистическая регрессия, случайный лес, градиентный бустинг, XGBoost. Отсортируй по метрике AUC. Выведи таблицу сравнения и сохрани лучшую модель в файл. Код на Python.
Пример использования:
Вы хотите быстро протестировать разные алгоритмы, не тратя часы на написание кода.
Пример кода:
from pycaret.classification import *
clf1 = setup(data=data, target='target', session_id=123)
best_model = compare_models(include=['lr', 'rf', 'gbc', 'xgboost'], sort='AUC')
print(best_model)
save_model(best_model, 'best_model')
Примечание: PyCaret — библиотека с открытым исходным кодом, активно развивается, так что упоминание актуально.
8. Экспертный: Создание отчета в формате HTML для стейкхолдеров
Задача: Сгенерировать красивый, интерактивный отчет о ходе эксперимента.
Промт:
Создай HTML-отчет о результатах эксперимента по классификации. Включи: описание данных, EDA (графики), метрики модели (accuracy, precision, recall, F1, ROC-AUC), confusion matrix, важность признаков. Используй Plotly для интерактивных графиков. Код на Python, сохрани в 'report.html'.
Пример использования:
Вы закончили эксперимент и хотите показать результаты менеджеру, который не понимает Python.
Пример кода:
import plotly.graph_objects as go
from sklearn.metrics import roc_auc_score, confusion_matrix
# Строим ROC-кривую
fpr, tpr, _ = roc_curve(y_test, y_pred_proba)
fig = go.Figure(data=go.Scatter(x=fpr, y=tpr, mode='lines', name='ROC'))
fig.add_shape(type='line', line=dict(dash='dash'), x0=0, x1=1, y0=0, y1=1)
fig.update_layout(title='ROC Curve', xaxis_title='False Positive Rate', yaxis_title='True Positive Rate')
fig.write_html('report.html')
9. Экспертный: Написание юнит-тестов для кода ML
Задача: Убедиться, что код обработки данных и модели работает корректно.
Промт:
Напиши юнит-тесты с использованием pytest для следующих функций: [описание функций]. Тесты должны проверять: корректность типов, обработку пропусков, работу с пустыми датафреймами, соответствие ожидаемым результатам на маленьких данных. Приведи примеры.
Пример использования:
Вы написали функцию для масштабирования данных и хотите убедиться, что она не сломается на граничных случаях.
Пример кода:
import pytest
import pandas as pd
def scale_data(df):
return (df - df.mean()) / df.std()
def test_scale_data():
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
scaled = scale_data(df)
assert abs(scaled.mean().sum()) < 1e-6
assert abs(scaled.std().sum() - 2) < 1e-6
10. Экспертный: Мониторинг дрейфа данных в продакшене
Задача: Настроить автоматическое обнаружение дрейфа данных (data drift) для модели, работающей в продакшене.
Промт:
Используя библиотеку evidently, создай скрипт для мониторинга дрейфа данных. Сравни распределения обучающей выборки и новых данных по колонкам [перечислить]. Выведи отчет с метриками дрейфа (например, PSI — Population Stability Index). Если дрейф превышает порог 0.2, отправь предупреждение в консоль. Код на Python.
Пример использования:
Вы обучили модель прогнозирования спроса, и через полгода рынок изменился. Мониторинг ловит это.
Пример кода:
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
report = Report(metrics=[DataDriftPreset()])
report.run(reference_data=train_data, current_data=new_data)
report.save_html('drift_report.html')
# Проверяем дрейф по PSI
psi_value = report.as_dict()['metrics'][0]['result']['drift_by_columns']['feature_name']['psi']
if psi_value > 0.2:
print('Warning: Data drift detected!')
Ссылка: Метод PSI описан в литературе по риск-менеджменту, например, в Basel II.
Вместо заключения
Эти 10 промтов — лишь верхушка айсберга. Начните с базовых, чтобы почувствовать стиль общения с LLM, затем переходите к продвинутым и экспертных. Главное — не просто копировать, а адаптировать под свои данные и задачу. И помните: ИИ — не замена вашему опыту, а усилитель. Чем лучше вы понимаете, что хотите получить, тем точнее будет результат.
Если вы хотите систематизировать свои знания и научиться применять такие промты в реальных проектах, обратите внимание на курсы по Data Science, где разбираются подобные кейсы. А пока — экспериментируйте, и пусть ваш код будет чистым, а модели — точными!
Комментарии