我想使用Synthetic Data Vault(SDV)库的合成数据生成方法(参考https://sdv.dev/SDV/index.html),但我不能。我认为我的问题是如何以方法". fit()"所需的输入格式准备数据。
演示代码如下所示:
from sdv import SDV, load_demo
metadata, tables = load_demo(metadata=True)
SDV().fit(metadata, tables)
sampled = sdv.sample_all()
对象"元数据"为:
type(metadata) = <class 'sdv.metadata.dataset.Metadata'>
并且对象"表"是3个 Dataframe 的字典:
type(tables) = <class 'dict'>
type(tables['users']) = <class 'pandas.core.frame.DataFrame'>
我的案例研究从Pandas Dataframe 开始:
df_input = pd.read_csv("file.csv")
所以我可以将"table"对象示例化为一个dict:
table_input={'input':df_input}
但我不确定如何示例化"元数据"对象。我尝试过:
from sdv import Table
metadata_input=Table(name='input',
field_names =df_input.columns.tolist(),
field_types = {'ID':'int64',
'Type':'object',
'Air temperature [K]':'float64',
'Rotational speed [rpm]':'int64',
},
primary_key = 'ID')
但这并不管用
sdv.fit(metadata=metadata_input,
tables= table_input)
错误为:
TypeError: 'Table' object is not subscriptable
最后,我应该如何创建元数据对象?
2条答案
按热度按时间uhry853o1#
自述文件中的
SDV
案例是为multi-table
数据集设计的。为了使用single-table
案例(这将是您的案例),您可以使用GaussianCopula
模型并跳过当前正在执行的一些步骤。以下是使用 Dataframe 的示例:
有关高级用法,请参阅文档:https://sdv.dev/SDV/user_guides/single_table/gaussian_copula.html
dbf7pr2w2#
我在使用sdmetrics创建质量报告时遇到过类似的问题,我通过将Table对象转换为dict来解决。
顺便说一句,你可以通过这种方式从 Dataframe 中推断出元数据: