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

如何为SDV模型添加Faker数据类型(更新元数据)

在SDV 1.2.0中使用Faker生成自定义数据的正确方案

SDV 1.2.0并不支持直接通过sdtype='fake.company'这种方式调用Faker,你遇到的内核崩溃是因为框架无法识别这类自定义sdtype标识,导致内部解析出错。以下是可行的解决方法:

步骤1:定义自定义Formatter类

Formatter是SDV中用于自定义数据生成逻辑的扩展接口,我们可以通过它封装Faker的调用:

from sdv.metadata import SingleTableMetadata
from sdv.single_table import GaussianCopulaSynthesizer
from sdv.sampling.utils import Formatter
import faker

fake = faker.Faker()

class CompanyFormatter(Formatter):
    def format(self, values):
        # 为每一行生成一个假公司名称,values参数对应原数据列的取值(可按需调整逻辑)
        return [fake.company() for _ in values]

步骤2:配置Metadata并关联Formatter

不要直接修改sdtype为Faker相关值,而是保持列的原有sdtype(比如原数据是字符串类型就用categorical),然后添加formatter参数绑定自定义类:

metadata = SingleTableMetadata()
metadata.detect_from_dataframe(data=df)

metadata.update_column(
    column_name='DR_Prod',
    sdtype='categorical',  # 根据你的实际数据类型调整,比如'string'也可
    formatter=CompanyFormatter()
)

步骤3:执行合成流程

后续的合成代码保持不变即可正常运行:

synthesizer = GaussianCopulaSynthesizer(metadata)
synthesizer.fit(df)
synthetic_data = synthesizer.sample(num_rows=len(df))

补充说明

直接用faker.*作为sdtype的简化写法是SDV 2.x版本之后才引入的特性,1.2.0版本必须通过自定义Formatter来实现自定义数据生成逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:11