合成表格数据的生成性对抗训练
tgan的Python项目详细描述
麻省理工学院从数据到人工智能实验室的开源项目。
门
生成性对抗训练,用于合成表格数据。
TGAN是一个表格数据综合器。它可以从真实数据中生成完全合成的数据。目前,TGAN可以 生成数值列和分类列。
- 自由软件:麻省理工学院许可证
- 文档:https://dai-lab.github.io/tgan" rel="nofollow">https://dai-lab.github.io/tgan
- 主页:https://github.com/dai-lab/tgan" rel="nofollow">https://github.com/dai-lab/tgan
要求
巨蟒
tgan已经在python上开发并运行3.5, 3.6和 3.7
此外,尽管不是严格要求,但使用avirtualenv 强烈建议使用,以避免干扰系统中安装的其他软件,其中tgan 运行。
安装
安装tgan的最简单且推荐的方法是使用pip:
pip install tgan
或者,您也可以克隆存储库并从源安装它
git clone git@github.com:DAI-Lab/TGAN.git
cd TGAN
make install
对于开发,您可以使用make install development
来安装所有必需的
测试和代码linting的依赖项。
数据格式
输入格式
为了能够采集新的合成数据,首先需要将tgan拟合到 现有数据。
此拟合过程的输入数据必须是满足以下条件的单个表 规则:
- 没有丢失的值。
- 具有
int
、float
、str
或bool
类型的列 - 每列只包含一种类型的数据。
这种表格的一个例子是:
<表><广告>如您所见,此表包含4列:str_column
,float_column
,int_column
和
bool_column
,每个列都是支持的值类型的示例。同时也要注意
任何行都不缺少值。
注意:必须正确识别哪些列是数值列,这意味着 它们表示一个数量级,哪些是分类的,如在 数据列、数字列和分类列的处理方式将有所不同。
输出格式
tgan的输出是一个采样数据表,其列与输入表和 按要求多行。
演示数据集
tgan包含一些用于开发或演示的数据集。这些数据集 来自UCI机器学习库 根据 输入格式部分。
这些数据集可以从 hdi项目tgan aws s3 bucket
人口普查数据集
此数据集包含一个表,其中包含来自人口普查的信息,标记为 年收入是否大于50000美元。它是一个csv文件,包含 199522行41列。在这41列中,只有7列被确定为连续列。在 tgan此数据集称为人口普查
封面类型
此数据集包含一个表,其中包含标记为 福尔斯特封面类型。它是一个csv文件,包含465588行和55列。从这些 55列,10列为连续列。在tgan中,这个数据集叫做covertype。
快速启动
在这个简短的教程中,我们将指导您完成一系列步骤,帮助您获得 从最基本的tgan用法开始,以便从给定的数据集生成样本。
注意:以下示例也包含在ajupyter笔记本中, 您可以在virtualenv中运行以下命令来执行:
pip install jupyter
jupyter notebook examples/Usage_Example.ipynb
<H2>1。加载数据第一步是加载我们用来安装tgan的数据。为了做到这一点,我们将首先 导入函数tgan.data.load_data并用我们想要的数据集名称调用它 负荷:
在这种情况下,我们将加载人口普查
数据集,我们将在后续步骤中使用它,
并获得两个对象:
数据
,其中包含pandas.dataframe
和人口普查数据表
数据集已准备好用于模型。连续列
,它将包含带有连续列索引的列表。 < > >- 连续的列(
list[int]
,必需):要视为连续的列索引列表。 - output(
str
,default=output
):存储模型及其工件的路径。 - 最大历元(
int
,默认值=100
):训练期间要使用的历元数。 - 每个历元的步数(
int
,默认值=10000
):每个历元上要运行的步数。 - 保存检查点(
bool
,默认值为true):是否在每个训练阶段后存储模型的检查点。 - 恢复会话(
bool
,默认值为true):是否从最后一个检查点继续训练。 - 批大小(
int
,默认值=200
):在每个步骤为模型提供的批大小。 - Z_dim(
int
,默认值=100
):发电机噪声输入中的维数。 - 噪声(
float
,默认值=0.2
):添加到分类列的高斯噪声的上限。 - l2norm(
float
,默认值=0.00001
):计算损失时的l2调节系数。 - 学习率(
float
,默认值=0.001
):优化器的学习率。 - num_gen_rnn(
int
,默认值=400
):生成器中rnn单元中的单元数。 - num-gen-u特性(
int
,默认值=100
):发电机中完全连接层中的单元数。 - num dis_layers(
int
,默认值=2
):鉴别器中的层数。 - num_dis_hidden(
int
,default=200
):鉴别器中每层的单位数。 - 优化器(
str
,default=adamoptimizer
):要在fit
期间使用的优化器的名称,可能 值为:[gradientdescentoptimizer
,adamoptimizer
,adadeltaoptimizer
]。 csv文件中的数据集,不缺少任何值,只包含
bool
、str
、int
或float
并且只有一种列类型,如输入格式中指定的那样包含搜索配置的json文件。此配置应包含:
名称
:实验的名称。将创建具有此名称的文件夹。num_random_search
:超参数搜索中的迭代次数。train_csv
:包含数据集的csv文件的路径。连续列
:列索引列表,从0开始,视为连续。epoch
:训练模型的epoch数。每个历元的步骤数:每个历元中的优化步骤数。
采样行
:评估模型时要采样的行数。
- 我们在测试和列车之间提取和分割数据。
- 我们随机选择要测试的超参数。
- 然后,对于每个超参数组合,我们使用真实的训练数据训练一个tgan模型。 生成一个综合训练数据集tsynth。
- 然后,我们在真实数据集和合成数据集上训练机器学习模型。
- 我们在真实的测试数据上使用这些经过训练的模型,看看它们的性能如何。 < > >
- 一个json文件,在上面的例子中称为
results.json
,包含实验的摘要。 这个json将为每个实验name
包含一个键,在这个键上,有一个长度数组num_random_search
,带有所选参数及其评估分数。对于配置 与示例一样,摘要将如下所示: - 一组文件夹,每个文件夹的名称都在json配置中指定的
名称
之后,包含 在实验
文件夹中。在每个文件夹中,都可以找到采样数据和模型。对于配置 与示例一样,这将如下所示: - pypi上的第一个版本。
>>> from tgan.data import load_demo_data
>>> data, continuous_columns = load_demo_data('census')
>>> data.head(3).T[:10]
0 1 2
0 73 58 18
1 Not in universe Self-employed-not incorporated Not in universe
2 0 4 0
3 0 34 0
4 High school graduate Some college but no degree 10th grade
5 0 0 0
6 Not in universe Not in universe High school
7 Widowed Divorced Never married
8 Not in universe or children Construction Not in universe or children
9 Not in universe Precision production craft & repair Not in universe
>>> continuous_columns
[0, 5, 16, 17, 18, 29, 38]
<H2>2。创建tgan实例下一步是导入tgan并创建模型的实例。
为此,我们需要导入tgan.model.tganModel
类并用
连续列
作为唯一参数。
这将创建一个带有默认参数的tgan实例:
>>> from tgan.model import TGANModel
>>> tgan = TGANModel(continuous_columns)
<H2>3。安装模型一旦有了tgan实例,就可以继续调用它的fit
方法来传递数据
您以前加载过以便开始装配过程:
>>> tgan.fit(data)
此过程不会返回任何内容,但是,将在 屏幕:
注意这取决于您运行的系统的性能以及所选的参数 对于车型,此步骤可能需要几个小时。
<H2>4。新数据示例安装模型后,您可以通过调用sample
tgan实例的方法,将所需的样本量传递给它:
>>> num_samples = 1000
>>> samples = tgan.sample(num_samples)
>>> samples.head(3).T[:10]
0 1 2
0 12 27 56
0 12 27 56
1 Not in universe Self-employed-not incorporated Private
2 0 4 35
3 0 34 22
4 Children Some college but no degree Some college but no degree
5 0 0 500
6 Not in universe Not in universe Not in universe
7 Never married Married-civilian spouse present Married-civilian spouse present
8 Not in universe or children Construction Finance insurance and real estate
9 Not in universe Precision production craft & repair Adm support including clerical
返回的对象samples
是一个pandas.dataframe
包含
与我们要求的输入数据和1000行格式相同。
在上面的台阶上我们看到安装过程可能需要很多时间,所以我们可能会 避免了我们想要的每一个样本。取而代之的是我们可以装一个模型, 保存它,并在每次我们想采样新数据时加载它。
如果我们有一个合适的模型,我们可以通过调用它的save
方法来保存它,这只需要
作为参数存储模型的路径。类似地,tganmodel.load
允许加载
通过作为参数传递存储模型的路径而存储在磁盘上的模型。
>>> model_path = 'models/mymodel.pkl'
>>> tgan.save(model_path)
Model saved successfully.
记住,如果文件已经存在,tgan将避免覆盖它,除非
force=true
参数被传递:
>>> tgan.save(model_path)
The indicated path already exists. Use `force=True` to overwrite.
为此:
pip install tgan
0
保存模型后,可以使用 此时,我们可以使用此模型实例生成更多示例。 在前面的步骤中,我们使用了一些演示数据,但是我们没有向您展示如何加载您自己的
数据集: 为此,需要从数据集生成 此外,您还需要创建列索引的0索引列表,将其视为连续的。 例如,如果要加载本地csv文件 现在,您可以使用 如果要更改 如果要创建与步骤2中创建的实例相同的实例,但传递
参数以明确的方式表示,这可以通过以下几行实现: 我们包括一个命令行界面,允许用户访问tgan功能。仅限当前
支持一个操作。 为了随机搜索给定数据集的最佳模型超参数,我们需要: 您可以在examples/config.json中看到这样一个json文件的示例
可以下载并用作模板。 一旦我们准备好一切,我们就可以使用以下命令启动随机超参数搜索: 其中第一个参数 这将运行随机搜索,基本上包括以下步骤: 实验完成后,可以找到以下内容: 第一个tagn版本是为使用生成性对抗网络合成表格数据而构建的支持软件。
本文提到的软件的确切版本可以在releases部分找到,如研究预发布版 如果您使用TGAN,请引用以下工作: 徐磊,维拉马切内尼。2018。使用生成性对抗网络合成表格数据。tgan model.load
方法:< > >
1
pip install tgan
加载自定义数据集
pandas.dataframe
对象。如果你
数据集是一种csv
格式,您可以使用pandas来执行此操作。读取csv
并将路径传递给它
要加载的CSV文件。path/to/my.csv
,该文件具有连续列
它们的前4列,即索引[0,1,2,3]
,我们会这样做:
2
pip install tgan
连续的列来创建一个tgan实例,并使用
数据来适应
就像我们以前一样:
3
pip install tgan
模型参数
tganmodel
的默认行为,例如differentbatch\u size
或
num-epochs
,您可以在创建实例时通过传递不同的参数来完成此操作。模型一般行为
神经网络定义与拟合
4
pip install tgan
命令行界面
随机超参数搜索
输入
执行
5
pip install tgan
config.json
是配置json的路径,第二个参数,
results.json是存储执行摘要的路径。
输出
6
pip install tgan
7
pip install tgan
研究
引文
8
pip install tgan
历史记录
0.1.0
推荐PyPI第三方库