You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SDV(合成数据仓库)问题:生成的合成数据集完全相同

关于SDV中FAST_ML预设生成重复合成数据的问题

核心原因

  • FAST_ML预设的设计特性:SDV的FAST_ML预设是为了快速训练和结果可复现设计的,它内部默认固定了随机种子,采用确定性生成逻辑——这意味着只要用这个预设且不修改种子,不管跑多少次,生成的合成数据都会完全一致。
  • 随机种子未正确传递:你当前的代码没有给合成器指定自定义随机种子,且FAST_ML会忽略环境中的全局随机状态,只使用自身内置的固定种子,所以哪怕换会话、改全局种子也没用。

解决方法

  • 显式设置合成器随机种子:
    在初始化SingleTablePreset时,通过random_state参数传入不同的随机种子值,每次运行更换这个值就能生成不同的合成数据:
    metadata.detect_from_dataframe(data=input_data)
    # 每次运行更换random_state的数值,比如42、123、456等
    synthesizer = SingleTablePreset(metadata=metadata, name='FAST_ML', random_state=42)
    synthesizer.fit(data=input_data)
    synthetic_data = synthesizer.sample(num_rows=len(input_data))
    
    也可以在sample方法中动态指定种子,实现每次采样结果不同:
    synthetic_data = synthesizer.sample(num_rows=len(input_data), random_state=随机整数)
    
  • 更换预设类型:如果不需要极致的训练速度,更希望每次生成不同的合成数据,可以改用CTGAN、TVAE这类默认保留随机性的预设,它们不会固定内置种子,每次运行都会生成不同结果(除非你主动锁种子)。
  • 重置全局随机状态:如果你的运行环境全局锁定了numpy、torch等库的随机种子,可在代码开头添加以下代码重置:
    import numpy as np
    import torch
    import random
    
    np.random.seed(None)
    torch.manual_seed(None)
    random.seed(None)
    

内容的提问来源于stack exchange,提问作者user3786999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:50:06