Набор ноутбуков и скриптов для подготовки табличных датасетов, обучения CTGAN по разным схемам кодирования признаков и оценки качества синтетических выборок через метрики распределений и utility-моделей.
datasets_registry.csv— реестр датасетов: путь до исходника, путь до служебногоdata.csv, целевая колонка и списки категориальных признаков. Копия файла лежит и вdatasets/datasets_registry.csv.download_datasets.py— загрузка исходных CSV из OpenML/UCI, очистка NaN и семплирование до 10k строк.notebooks/dataset_encoding.ipynb— готовит версии датасетов сone_hot_encoding,label_encoding,frequency_encodingиoriginal(LabelEncoder только для таргета). Обновляетdatasets/<dataset>/data.csv.ctgan_model_creator_new.ipynb— обучает CTGAN для каждой закодированной версии, сохраняет модели вdatasets/<dataset>/modelsи графики лоссов вtraining_schedules, прописывает пути вdata.csv.card_creator_patched.ipynb— загружает модели, генерирует синтетику, считает JSD по признакам, utility-gap (LogReg/XGBoost) и формирует сводкиdata.csvи визуальный отчетreport.html.datasets/— сырье вdatasets/original/*.csvи папки по датасетам с закодированными CSV,data.csv, моделью и графиком лоссов.requirements.txt— зависимости (ctgan,sdv,sdmetrics,pandas,scikit-learn,xgboostи др.).
Пример структуры для одного датасета:
datasets/
original/adult.csv
adult/
adult_ohe.csv | adult_label.csv | adult_frequency.csv | adult_original.csv
data.csv # перечень версий, категориальных колонок, путей до модели/графика
models/ctgan_adult_<encoding>_model.pkl
training_schedules/ctgan_adult_<encoding>_losses.png
- Установите окружение
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Скачайте исходные данные (при необходимости обновить
datasets/original)
python3 download_datasets.py
- Подготовьте закодированные версии
Откройтеnotebooks/dataset_encoding.ipynbи выполните ячейки. Для каждого датасета появятся новые CSV и обновитсяdatasets/<dataset>/data.csvс колонками:
method— способ кодирования,path— путь до подготовленного CSV,New_cat_cols— итоговые категориальные признаки для CTGAN,model_path/schedul_path— будут заполнены после обучения.
-
Обучите CTGAN
Вctgan_model_creator_new.ipynbвызовитеprocess_all_datasets(epochs=300, verbose=True)илиtrain_single_dataset(<name>, <method>, epochs=...). Модели сохранятся вmodels/, графики лоссов — вtraining_schedules/, пути пропишутся вdata.csv. -
Посчитайте метрики и сформируйте отчет
Запуститеcard_creator_patched.ipynb: ноутбук загрузит модели, сэмплирует синтетику, посчитает JSD по признакам, accuracy/R² для LogReg и XGBoost на реальных vs синтетических данных. Результат:
data.csvв корне — агрегированная таблица по всем (датасет, кодировка) с метриками и разницей качеств;report.html— интерактивный обзор с матрицей кодировок и карточками моделей.
- Поместите исходный CSV в
datasets/original/. - Добавьте строку в
datasets_registry.csv:dataset_name,dataset_path(до исходника),dataset_csv(куда писатьdata.csv),target,cat_col(список категориальных признаков). - Прогоните шаги 3–5 из раздела «Как пользоваться».
data.csv— сводка метрик для всех обученных моделей на момент последнего прогона.report.html— статичный HTML-отчет с карточками моделей и графиками лоссов (подтягиваются в base64).