Data Science и ML без ручной рутины: 10 промтов, которые ведут от сырых данных до продакшн-модели
Каждый дата-сайентист знает: 80% времени уходит не на построение моделей, а на подготовку данных, написание однотипного кода и оформление результатов. По данным опроса Kaggle State of Data Science 2023, более 70% респондентов назвали очистку данных самой времязатратной частью работы. Но что, если превратить рутину в диалог с ИИ? Современные языковые модели, такие как ChatGPT, Gemini, Claude, способны генерировать рабочий код на Python, объяснять ошибки и предлагать оптимальные решения — от pandas до scikit-learn и SHAP.
В этой подборке я собрал 10 промтов, которые закрывают весь цикл: от разведочного анализа до подготовки модели к деплою. Каждый промт сопровождается примером запроса, пояснением и реальным кодом. Вы можете адаптировать их под свои задачи и использовать в повседневной работе. Главное — не забывайте проверять сгенерированный код и адаптировать его под контекст.
1. Автоматический EDA: профилирование данных за минуты
Задача: Быстро понять структуру датасета, выявить пропуски, выбросы и распределения.
Промт:
Ты — опытный дата-сайентист. У меня есть датафрейм df с признаками: [список колонок]. Напиши код на Python, который выполняет разведочный анализ данных: выводит основную статистику, проверяет пропуски, строит гистограммы для числовых признаков и bar chart для категориальных. Используй pandas, matplotlib и seaborn. Добавь комментарии.
Пример результата:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Основная статистика
print(df.describe(include='all'))
# Пропуски
missing = df.isnull().sum()
print(missing[missing > 0])
# Гистограммы для числовых признаков
num_cols = df.select_dtypes(include=['int64', 'float64']).columns
df[num_cols].hist(figsize=(12, 8))
plt.tight_layout()
plt.show()
# Bar chart для категориальных
cat_cols = df.select_dtypes(include=['object']).columns
for col in cat_cols:
df[col].value_counts().plot(kind='bar')
plt.title(col)
plt.show()
Пояснение: Промт экономит часы рутинного кодинга. Вы получаете готовый шаблон, который можно сразу запустить в Jupyter Notebook. Для углублённого анализа добавьте в промт просьбу построить корреляционную матрицу или ящики с усами.
2. Очистка данных и обработка пропусков
Задача: Заполнить пропуски, удалить дубликаты, исправить типы данных.
Промт:
В датафрейме df есть пропуски в колонках ['age', 'income', 'city']. Предложи стратегию обработки: для числовых — медиана, для категориальных — мода или отдельная категория 'Unknown'. Напиши код с использованием pandas и sklearn.impute.SimpleImputer. Объясни выбор.
Пример результата:
from sklearn.impute import SimpleImputer
# Числовые пропуски — медиана
num_imputer = SimpleImputer(strategy='median')
df[['age', 'income']] = num_imputer.fit_transform(df[['age', 'income']])
# Категориальные — заполняем 'Unknown'
df['city'] = df['city'].fillna('Unknown')
Пояснение: Модель не будет обучена на неполных данных. Промт помогает выбрать метод и сразу получить код. Для временных рядов лучше использовать интерполяцию — уточните это в запросе.
3. Feature Engineering: создание новых признаков
Задача: Сгенерировать информативные признаки из существующих.
Промт:
У меня есть датасет с колонками: 'date', 'amount', 'category'. Предложи 5 новых признаков для прогнозирования оттока клиентов. Например, средний чек за последние 30 дней, количество транзакций за неделю, отношение расходов к доходу. Напиши код на pandas.
Пример результата:
df['date'] = pd.to_datetime(df['date'])
df['day_of_week'] = df['date'].dt.dayofweek
df['is_weekend'] = df['day_of_week'].isin([5,6]).astype(int)
# Средний чек за 30 дней
last_30 = df[df['date'] >= df['date'].max() - pd.Timedelta(days=30)]
avg_amount_30 = last_30.groupby('client_id')['amount'].mean().rename('avg_amount_30')
df = df.merge(avg_amount_30, on='client_id', how='left')
Пояснение: Feature engineering — ключ к качеству модели. Промт помогает не забыть важные аспекты: сезонность, агрегаты, взаимодействия. Для автоматизации используйте библиотеку featuretools, но промт даст базовые идеи.
4. Выбор и обучение модели: сравнение алгоритмов
Задача: Быстро обучить несколько моделей и выбрать лучшую.
Промт:
Мне нужно решить задачу бинарной классификации. Данные: X_train, y_train. Сравни LogisticRegression, RandomForest и GradientBoosting с помощью кросс-валидации. Выведи accuracy, precision, recall, F1. Напиши код.
Пример результата:
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
models = {
'LogReg': LogisticRegression(max_iter=1000),
'RF': RandomForestClassifier(),
'GB': GradientBoostingClassifier()
}
for name, model in models.items():
scores = cross_val_score(model, X_train, y_train, cv=5, scoring='f1')
print(f'{name}: F1 = {scores.mean():.3f}')
Пояснение: Промт избавляет от ручного перебора. Вы получаете сравнение и можете углубиться в настройку лучшей модели. Для несбалансированных классов добавьте в промт просьбу использовать class_weight='balanced'.
5. Оценка модели и интерпретация метрик
Задача: Понять, насколько модель хороша и где ошибается.
Промт:
Обучи модель RandomForest на данных. Выведи classification_report, confusion_matrix и ROC-AUC. Объясни, что означают эти метрики для бизнеса.
Пример результата:
from sklearn.metrics import classification_report, confusion_matrix, roc_auc_score
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
print(confusion_matrix(y_test, y_pred))
print('ROC-AUC:', roc_auc_score(y_test, model.predict_proba(X_test)[:,1]))
Пояснение: Метрики нужно интерпретировать. Например, высокий recall при низком precision означает много ложных срабатываний — это критично для медицинской диагностики. Промт поможет связать цифры с бизнес-задачами.
6. Визуализация результатов: графики для презентации
Задача: Создать понятные графики для стейкхолдеров.
Промт:
Построй график важности признаков для модели RandomForest. Используй горизонтальный bar chart, отсортируй по убыванию, добавь заголовок и подписи осей. Сохрани в PNG с высоким разрешением.
Пример результата:
import matplotlib.pyplot as plt
import pandas as pd
importances = model.feature_importances_
feat_imp = pd.Series(importances, index=X_train.columns).sort_values()
feat_imp.plot(kind='barh', figsize=(10,6))
plt.title('Feature Importance')
plt.xlabel('Importance')
plt.tight_layout()
plt.savefig('feature_importance.png', dpi=300)
Пояснение: Визуализация — мост между техническими деталями и бизнесом. Промт помогает создать профессиональный график, который можно вставить в презентацию.
7. Объяснение модели с помощью SHAP
Задача: Понять, какие признаки влияют на предсказания.
Промт:
Используй SHAP для интерпретации модели GradientBoosting. Построй summary_plot и dependence_plot для топ-3 признаков. Объясни, как читать эти графики.
Пример результата:
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test)
Пояснение: SHAP — стандарт интерпретации. Промт даёт готовый код и пояснения, что особенно полезно для отчётов перед регуляторами.
8. Подготовка к деплою: сохранение модели и API
Задача: Упаковать модель в продакшн.
Промт:
Напиши код для сохранения обученной модели в joblib, создания Flask API для предсказаний и Dockerfile для контейнеризации.
Пример результата:
import joblib
joblib.dump(model, 'model.pkl')
# app.py
from flask import Flask, request, jsonify
import joblib
app = Flask(__name__)
model = joblib.load('model.pkl')
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json()
prediction = model.predict([data['features']])
return jsonify({'prediction': prediction.tolist()})
Пояснение: Промт ускоряет переход от ноутбука к сервису. Не забудьте про валидацию входных данных и мониторинг.
9. Автоматизация отчётов: генерация PDF с результатами
Задача: Создать отчёт для руководства.
Промт:
Сгенерируй PDF-отчёт с помощью библиотеки FPDF: включи основные метрики, график важности признаков и выводы. Напиши код.
Пример результата:
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.set_font('Arial', size=12)
pdf.cell(200, 10, txt='Model Report', ln=1)
pdf.cell(200, 10, txt=f'ROC-AUC: {roc_auc:.3f}', ln=1)
pdf.image('feature_importance.png', x=10, y=50, w=180)
pdf.output('report.pdf')
Пояснение: Отчётность часто недооценивают, но она важна для коммуникации.
10. Подготовка презентации для стейкхолдеров
Задача: Перевести технические результаты на язык бизнеса.
Промт:
Составь структуру презентации для руководства: проблема, решение, метрики, влияние на бизнес, следующие шаги. Напиши тезисы для каждого слайда.
Пример результата:
Модель выдаёт текст с 5 слайдами: 1) Проблема: отток клиентов 15% в год; 2) Решение: ML-модель предсказывает уход; 3) Метрики: ROC-AUC 0.85, precision 0.8; 4) Влияние: снижение оттока на 5% = +$1M; 5) План: пилот на 2 месяца.
Пояснение: Промт помогает избежать технического жаргона и сфокусироваться на ценности.
Все эти промты — не замена экспертизе, а ускоритель. Они освобождают время для творческих задач: постановки гипотез, анализа результатов, общения с бизнесом. Попробуйте внедрить их в свой пайплайн — начните с EDA и очистки, затем перейдите к моделированию. И помните: всегда проверяйте код, сгенерированный ИИ, и адаптируйте его под свои данные.
Если вы хотите системно освоить Data Science и ML с поддержкой AI-тьютора, обратите внимание на курсы asibiont.com. Там вы найдёте структурированные материалы, практические задания и обратную связь. А эта подборка промтов станет вашим ежедневным помощником.
Comments