Synthetic Data SDK条件生成教程:定制化合成数据的完整实现
Synthetic Data SDK条件生成教程定制化合成数据的完整实现【免费下载链接】mostly-pythonSynthetic Data SDK ✨项目地址: https://gitcode.com/gh_mirrors/mo/mostly-pythonSynthetic Data SDK是一款强大的合成数据生成工具能够帮助用户快速创建具有真实统计特性的合成数据。本教程将详细介绍如何使用Synthetic Data SDK进行条件生成实现定制化合成数据的完整流程让你轻松掌握这一实用技能。什么是条件生成条件生成是Synthetic Data SDK的一项核心功能它允许用户通过设置特定属性值来生成符合预期的合成数据。简单来说就是创建部分固定、部分随机的合成数据这些数据仍然具有统计代表性但会受到固定属性的影响。通过条件生成我们可以实现两种主要应用场景假设分析探测模型在特定属性组合下的表现部分合成数据保留真实属性同时生成其他合成属性准备工作安装与初始化在开始条件生成之前我们需要先安装Synthetic Data SDK。可以通过以下命令进行安装# 安装CLIENT模式 !uv pip install -U mostlyai # 或安装LOCAL模式 !uv pip install -U mostlyai[local]安装完成后我们需要初始化SDKfrom mostlyai.sdk import MostlyAI # 初始化SDK mostly MostlyAI()使用案例1UCI成人收入数据的假设分析训练生成器首先我们使用UCI成人收入数据集训练一个生成器import pandas as pd # 获取原始数据 df pd.read_csv(https://github.com/mostly-ai/public-demo-data/raw/dev/census/census.csv.gz) # 在原始训练数据上训练生成器 g mostly.train( config{ name: Conditional Simulation Tutorial Census, tables: [{name: data, data: df}], } )条件探测生成器假设我们想研究50岁男性高管、高中学历、美国出生这一特定人群的共同特征。我们可以创建一个包含这些固定属性的种子数据框record { age: 50, sex: Male, occupation: Exec-managerial, education: HS-grad, native_country: United-States, } seed pd.DataFrame([record] * 10_000)然后使用这个种子来探测生成器# 使用种子探测生成器以获取合成数据 syn_us mostly.probe(g, seedseed)通过分析生成的合成数据我们可以得到该人群的高收入概率print(50y male Executive Manager, with high-school diploma, born in the United States) print(f- Probability of Earning High Income: {(syn_us.income 50K).mean():.1%})进行假设分析我们可以通过改变种子数据中的某些属性来进行假设分析。例如我们想知道如果这个人来自墨西哥高收入概率会如何变化seed_mx seed.copy() seed_mx[native_country] Mexico syn_mx mostly.probe(g, seedseed_mx)同样我们可以分析不同年龄段对收入的影响seed_age_us seed.copy() seed_age_mx seed_mx.copy() inc_age_us {} inc_age_mx {} for age in list(range(20, 70, 5)): seed_age_us[age] age seed_age_mx[age] age syn_age_us mostly.probe(g, seedseed_age_us) syn_age_mx mostly.probe(g, seedseed_age_mx) inc_age_us[age] (syn_age_us.income 50K).mean().item() inc_age_mx[age] (syn_age_mx.income 50K).mean().item()通过可视化这些数据我们可以更直观地看到年龄和国籍对收入的影响使用案例2部分合成地理数据数据预处理我们使用2019年曼哈顿AirBnB listings数据集该数据集包含48,895条记录和10个混合类型的列其中两个代表房源的纬度和经度。我们将这些地理信息合并为一个列以便Synthetic Data SDK更好地处理df df_orig.copy() # 将纬度和经度合并为LAT, LONG格式 df[LAT_LONG] df[latitude].astype(str) , df[longitude].astype(str) df df.drop(columns[latitude, longitude]) # 定义我们想要条件化的列列表 seed_cols [neighbourhood, LAT_LONG] # 创建将用作种子的数据框 df_seed df[seed_cols]使用MOSTLY AI创建生成器下面的代码将使用MOSTLY AI Synthetic Data SDK创建一个生成器。我们需要将列LAT_LONG配置为Latitude, Longitude编码类型# 在预处理的AirBnB数据上训练生成器 config { name: Conditional Simulation Tutorial AirBnB, tables: [ { name: AirBnB, data: df, columns: [ {name: neighbourhood_group, model_encoding_type: TABULAR_CATEGORICAL}, {name: neighbourhood, model_encoding_type: TABULAR_CATEGORICAL}, {name: room_type, model_encoding_type: TABULAR_CATEGORICAL}, {name: price, model_encoding_type: TABULAR_NUMERIC_AUTO}, {name: minimum_nights, model_encoding_type: TABULAR_NUMERIC_AUTO}, {name: number_of_reviews, model_encoding_type: TABULAR_NUMERIC_AUTO}, {name: last_review, model_encoding_type: TABULAR_DATETIME}, {name: reviews_per_month, model_encoding_type: TABULAR_NUMERIC_AUTO}, {name: availability_365, model_encoding_type: TABULAR_NUMERIC_AUTO}, {name: LAT_LONG, model_encoding_type: TABULAR_LAT_LONG}, ], tabular_model_configuration: { max_training_time: 2, }, } ], } g_airbnb mostly.train(configconfig)使用MOSTLY AI生成合成数据集现在我们可以使用之前创建的种子生成合成数据集# 使用种子生成合成数据集 syn_partial mostly.probe(generatorg_airbnb, seeddf_seed) print(fCreated synthetic data with {syn_partial.shape[0]:,} records and {syn_partial.shape[1]:,} attributes)探索合成数据我们可以比较曼哈顿各地的价格分布。请注意虽然部分合成数据中的位置是真实的位置但所有其他属性包括每晚价格都是由生成模型随机采样的。结论在本教程中我们介绍了使用Synthetic Data SDK进行条件生成以产生部分合成数据的过程。这使你能够使用特定的上下文来探测生成模型无论是假设的用例1还是真实的用例2并获得特定场景的相应见解。进一步练习除了按照上述说明操作外我们建议对美国人口普查数据集使用不同的固定列集为固定值集生成大量记录例如创建100万条48岁女性教授的记录对AirBnB曼哈顿数据集执行完全合成数据集参考资料https://archive.ics.uci.edu/ml/datasets/adulthttp://insideairbnb.com/get-the-data【免费下载链接】mostly-pythonSynthetic Data SDK ✨项目地址: https://gitcode.com/gh_mirrors/mo/mostly-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考