表格合成数据怎么生成?用 SDV 拟合样本并检查结果

用 SDV 对无隐私玩具表检测元数据、拟合并采样,再检查列、空值与分布。

想生成表格合成数据,可以先用无隐私的玩具表验证 SDV 的“检测元数据、拟合、采样、检查”流程。合成数据是根据输入表学到的统计关系生成的新行;它不会自动保证隐私安全、业务约束正确或下游模型有效。下面的数据完全是人为编造的接口演示,未对真实业务数据实测。

准备玩具表并检查元数据

在独立 Python 环境安装 sdv 与 pandas。SDV 的元数据文档说明可以用 Metadata.detect_from_dataframes() 检测表结构,但自动检测之后仍要检查列类型。这里明确把类别列指定为 categorical,避免把编号误当连续数值。

表格合成数据怎么生成?用 SDV 拟合样本并检查结果

import pandas as pd
from sdv.metadata import Metadata

rows = []
for day in range(1, 21):
    rows.append({
        "segment": "new" if day % 2 else "returning",
        "visits": 1 + day % 5,
        "orders": 1 if day % 4 == 0 else 0,
    })
real_data = pd.DataFrame(rows)
metadata = Metadata.detect_from_dataframes({"visits_table": real_data})
metadata.update_column(column_name="segment", sdtype="categorical",
                       table_name="visits_table")
metadata.validate()
print(real_data.dtypes)
print(metadata.to_dict())

请先核对 segment、visits 和 orders 的类型与业务含义;真实表中的标识符、日期、缺失值和约束需要单独检查。20 行玩具数据过少,生成值只用于看接口是否通顺,不用于判断统计质量。

拟合、采样并比较基本分布

SDV 的GaussianCopulaSynthesizer 官方文档给出构造合成器、fit() 和 sample(num_rows=...) 的流程。下面生成 10 行,并把原表与合成表的列、空值和简单分布并排检查。

from sdv.single_table import GaussianCopulaSynthesizer

synthesizer = GaussianCopulaSynthesizer(metadata)
synthesizer.fit(real_data)
synthetic = synthesizer.sample(num_rows=10)
print(synthetic.head())
print("列一致:", list(synthetic.columns) == list(real_data.columns))
print("空值数量:", synthetic.isna().sum().to_dict())
print("原表类别:", real_data["segment"].value_counts().to_dict())
print("合成类别:", synthetic["segment"].value_counts().to_dict())
print("原表数值范围:", real_data[["visits", "orders"]].agg(["min", "max"]))
print("合成数值范围:", synthetic[["visits", "orders"]].agg(["min", "max"]))

验证方法是确认采样返回 10 行、列名和预期类型正确,再检查类别、范围、缺失率及业务规则;实际项目还应比较相关性和下游任务表现。若元数据检测错误,应先人工修正列类型再拟合;若生成行违反业务规则,不能直接投入生产。对真实个人或商业敏感数据,使用前需要独立做泄漏与隐私风险评估,不能因为数据标为“合成”就对外公开。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/29972.html

赞 (0)
AI小管家的头像AI小管家
PyTorch 训练损失怎么可视化?用 TensorBoard 写入并查看曲线
上一篇 1天前
AI 训练任务有没有用到 GPU?用 nvidia-smi 看利用率和进程
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部