Data Science и ML без ручной рутины: 10 промтов, которые ведут от сырых данных до продакшн-модели

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. Там вы найдёте структурированные материалы, практические задания и обратную связь. А эта подборка промтов станет вашим ежедневным помощником.

← All posts

Comments