一种非时态表格式数据综合生成器性能的测试框架

sdgym的Python项目详细描述


sdgym麻省理工学院从数据到人工智能实验室的开源项目。

travispypi shield

SDGym-合成数据健身房

  • 许可证:麻省理工学院
  • 文档:https://dai-lab.github.io/sdgym/" rel="nofollow">https://dai-lab.github.io/sdgym/
  • 主页:https://github.com/dai-lab/sdgym" rel="nofollow">https://github.com/dai-lab/sdgym

概述

synthetic data gym(sdgym)是一个测试合成数据生成器性能的框架 对于非时态表格数据。SDGym基于一篇论文,该论文使用条件建模表格数据 gan,该项目是人工智能数据的一部分。 麻省理工学院的实验室

合成器的基准测试是由 合成器。然后,对每一对真实和合成数据进行多重评分。

什么是合成器功能?

为了使用sdgym,您需要一个合成器功能。 这是一个函数,它接受一个包含真实数据的numpy矩阵作为输入,并输出另一个numpy 用合成数据填充相同形状的矩阵。

此外,除了实际数据之外,还有一些其他变量通知列内容 将被传递,这意味着函数的确切签名如下:

defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray

如果您的合成器实现了不同的接口,您可以将其包装成这样的函数:

defmy_synthesizer_function(real_data,categorical_columns,ordinal_columns):# ...do all necessary steps here...returnsynthesized_data

此函数应包含使用 合成器,并调用它根据实际数据生成新的合成数据,即 正在通过。

你的合成器应该使用什么数据?

如前一节所述,sdgym的主要输入是 基准化的,预期是一个函数,它具有作为唯一输入和输出的 数据:

合成器功能的输入应为:

  • 真实数据:2dnumpy.ndarray合成器将尝试模拟真实数据。
  • 分类列:a列表包含应考虑的任何列的索引 根据类型独立分类。
  • 序数列:a列表包含应视为 序数值。

输出应该是单个2dnumpy.ndarray真实数据的形状完全相同 矩阵<<P>

基准数据集

用于基准测试的所有数据集都可以在sgdym s3 bucket中找到。 以.npznumpy矩阵存档和包含信息的.json元数据文件的形式 关于数据集结构及其列。

为了以相同的格式加载这些数据集,它们将被传递给合成器函数 您可以使用sdgym.loadataset函数传递要加载的数据集的名称。

在本例中,我们将加载成人数据集:

fromsdgymimportload_datasetdata,categorical_columns,ordinal_columns=load_dataset('adult')

这将返回一个numpy矩阵,其中包含将传递给合成器函数的数据, 以及分类列和序号列的索引列表:

>>>dataarray([[2.70000e+01,0.00000e+00,1.77119e+05,...,4.40000e+01,0.00000e+00,0.00000e+00],[2.70000e+01,0.00000e+00,2.16481e+05,...,4.00000e+01,0.00000e+00,0.00000e+00],[2.50000e+01,0.00000e+00,2.56263e+05,...,4.00000e+01,0.00000e+00,0.00000e+00],...,[4.50000e+01,0.00000e+00,2.07540e+05,...,4.00000e+01,0.00000e+00,1.00000e+00],[5.10000e+01,0.00000e+00,1.80807e+05,...,4.00000e+01,0.00000e+00,0.00000e+00],[6.10000e+01,4.00000e+00,1.86451e+05,...,4.00000e+01,0.00000e+00,1.00000e+00]],dtype=float32)>>>categorical_columns[1,5,6,7,8,9,13,14]>>>ordinal_columns[3]

演示合成器

为了开始使用基准测试工具,已经包含了一些演示合成器 在图书馆里。

这些合成器是可以从sdgym.synthesizers模块导入的类,并且 以下方法:

  • fit:在数据上匹配合成器。需要以下参数:
    • 数据(numpy.ndarray):二维numpy矩阵,包含要学习的实际数据。
    • 分类列(列表或元组):数据集中分类列的索引列表。
    • 序号列(列表或元组):数据集中序号列的索引列表。
  • sample:生成与原始数据集相似的新数据。需要以下参数:
    • n_samples(int):要生成的样本数。
  • fit_sample:适合数据集上的合成器,然后采样数据集中的所有行 原始数据集。它需要与fit方法相同的参数,并且可以直接 传递到基准函数以评估合成器性能。

有关如何使用它们的完整示例,请参见下面的"用法"部分。

安装

要求

sdgym已经在python 3.5和3.6上开发和测试

此外,尽管不是严格要求,但使用avirtualenv 强烈建议使用,以避免干扰系统中安装的其他软件 在运行sdgym的地方。

以下是使用python3.6为sdgym创建virtualenv所需的最少命令:

pip install virtualenv
virtualenv -p $(which python3.6) sdgym-venv

之后,必须执行此命令才能激活virtualenv:

source sdgym-venv/bin/activate

记住每次启动一个新的控制台来处理sdgym时都要执行它!

使用PIP安装

创建并激活virtualenv之后,我们建议使用 pip以便安装sdgym:

pip install sdgym

这将从pypi中拉取并安装最新的稳定版本。

从源安装

或者,激活virtualenv后,可以克隆存储库并从 通过在stable分支上运行make install进行源代码:

git clone git@github.com:DAI-Lab/SDGym.git
cd SDGym
git checkout stable
make install

安装用于开发

如果您想对项目做出贡献,则需要执行一些步骤来准备项目 为了发展。

首先,请转到项目的github页面 并通过单击 页面的右上角。

然后,克隆fork并从master创建一个具有描述性名称的分支,该名称包括 您要处理的问题的编号:

git clone git@github.com:{your username}/SDGym.git
cd SDGym
git branch issue-xx-cool-new-feature master
git checkout issue-xx-cool-new-feature

最后,使用以下命令安装项目,该命令将安装一些 代码行和测试的依赖关系。

defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
0

确保在开发时定期使用它们,方法是运行命令make lint进行测试

< H2>编译C++依赖项

为了能够对我们从SDCype中获取所有特性,用C++编写的一些依赖项需要 编译。

为此:

    确保安装了所有必要的依赖项来编译C++。在Linux发行版中 基于ubuntu,这可以通过以下命令来完成:< > >
    defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
    1
    1. 执行:
    2. < > >
      defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
      2

      用法

      基准

      要使用sdgym基准,只需导入并调用sdgym.benchmark 将合成器函数传递给它的函数:

      defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
      3

      基准函数的输出将是包含所有分数的pd.dataframe 由不同的评估者计算:

      defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
      4

      使用演示合成器

      要使用sdgym中包含的合成器类,需要执行以下步骤:

      1. 从sdgym.synthesizers导入合成器类 < > >
        defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
        5
        1. 创建合成器的实例,传递任何需要的参数。在这种情况下,我们将使用 可以在没有初始化参数的情况下实例化的独立合成器:
        2. < > >
          defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
          6
          1. 加载一些数据以适合您的合成器。在这种情况下,我们将加载成人 数据集:
          2. < > >
            fromsdgymimportload_datasetdata,categorical_columns,ordinal_columns=load_dataset('adult')
            1. 调用其fit方法传递数据以及分类列和顺序列的列表:
            2. < > >
              defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
              8
              1. 调用其sample方法,传递要采样的行数:
              2. < > >
                defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
                9

                这将返回一个包含与原始数据相同列的sampeld数据的numpy矩阵,并且 我们要求的行数:

                defmy_synthesizer_function(real_data,categorical_columns,ordinal_columns):# ...do all necessary steps here...returnsynthesized_data
                0

                对演示合成器进行基准测试

                简单地评估任何演示合成器的性能:

                1. 创建合成器实例:
                2. < > >
                  defmy_synthesizer_function(real_data:numpy.ndarray,categorical_columns:list,ordinal_columns:list)->syntehtesized_data:numpy.ndarray
                  6
                  1. 将实例的fit_sample方法传递给benchmark函数作为 合成器功能:
                  2. < > >
                    defmy_synthesizer_function(real_data,categorical_columns,ordinal_columns):# ...do all necessary steps here...returnsynthesized_data
                    2

                    接下来是什么?< >

                    有关sdgym及其所有可能性和功能的详细信息,请查看 文档站点

                    在那里你可以了解更多 如何为sdgym做出贡献 以帮助我们开发新功能或新创意。

                    相关项目

                    SDV

                    对于synthetic data vault,sdv是 在hdi项目下合成开发中的数据。 sdv允许您使用copulas(一个简单的api)轻松地建模和采样关系数据集。 其他功能包括个人身份信息的匿名化(PII)和保存 采样记录上的关系完整性。

                    tgan

                    tgan是一个基于gan的表格数据合成模型。 它也是由麻省理工学院的人工智能实验室数据开发的。 积极发展。

                    历史记录

                    V0.1.0-2019-08-07

                    pypi的第一个版本

                    欢迎加入QQ群-->: 979659372 Python中文网_新手群

                    推荐PyPI第三方库


热门话题
java如何从数组中打印int值?   prepared语句Java中奇怪的异常PreparedStatement:参数索引超出范围   封装如何在OOP Java中为主方法编码?   java某些手机显示快捷方式徽章需要什么权限?   java TextView不会随OnItemSelectedListener更改   java注释处理器不会自动触发吗?   java Spring JPA如何计算外键数   c#对于这个简单的OOAD问题,哪种设计最优雅?   java如何处理while循环中的异常?   Android Studio错误:进程'command'/home/draven/Downloads/安卓studio/jre/bin/java''结束,退出值为非零2   在使用Payara服务器的Vaadin应用程序中导航到根目录时,java将丢失上下文根目录   使用contentType application/json而不是application/jsonpatch+json的java修补程序   带有tomcat的java HAproxy连接不足   Java:在应用过滤器后创建一个简单的通用方法进行计数   java如何使用多态性创建一个实例化对象的方法,然后用它们高效地填充ArrayList?