首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ydata的python时间序列合成数据.合成包.时间序列GAN

使用ydata的python时间序列合成数据.合成包.时间序列GAN
EN

Stack Overflow用户
提问于 2021-09-24 13:49:51
回答 1查看 634关注 0票数 1

你好,像一个标题,我试着用合成软件包来表示时间序列GAN,我第一次想把整数加到输出也是数字,但它不是,输出数据是我使用ydata合成(https://github.com/ydataai/ydata-synthetic)的十进制数

这是我制作数据的代码,请帮助我

#导入练习所需的库

代码语言:javascript
复制
from os import path
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from ydata_synthetic.synthesizers import ModelParameters
from ydata_synthetic.preprocessing.timeseries import processed_stock
from ydata_synthetic.synthesizers.timeseries import TimeGAN
import torch


arr_data = np.random.randint(0,600000,(100,1))

#Specific to TimeGANs

#stock_data
seq_len=20
n_seq = 1  #number of columns


hidden_dim=24
gamma=1

noise_dim = 32
dim = 128
batch_size = len(arr_data) - seq_len

log_step = 100
learning_rate = 5e-4

gan_args = ModelParameters(batch_size=batch_size,
                           lr=learning_rate,
                           noise_dim=noise_dim,
                           layers_dim=dim)


lst_temp = []
for i in range(0,len(arr_data) - seq_len):
    _x = arr_data[i:i+20]
    lst_temp.append(_x)

tens_rand_data = torch.tensor(lst_temp)
lst_rand_data = tens_rand_data.numpy()

synth = TimeGAN(model_parameters=gan_args, hidden_dim=24, seq_len=seq_len, n_seq=n_seq, gamma=1)

synth.train(lst_rand_data, train_steps=10)
synth_data = synth.sample(len(lst_rand_data))
print(synth_data.shape)

cols = ['Car price']

for j, col in enumerate(cols):
    df = pd.DataFrame({'Real': lst_rand_data[-1][:, j],'Synthetic': synth_data[-1][:, j]})
    
df.plot(title = "Car price",secondary_y='Synthetic data', style=['-', '--'])

print(df)

在这里输入图像描述

EN

回答 1

Stack Overflow用户

发布于 2021-12-14 17:08:28

您的输入应该在安装到MinMaxScaler之前使用TimeGAN进行处理,并且您将始终收到0到1之间的十进制输出,这是因为它的生成器的最后一层激活了sigmoid。

您可以通过以下两种方式更改代码:

  1. 将输入从整数更改为小数范围0,1。 arr_data = np.random.randint(0,600000,(100,1)) 转到 arr_data = np.random.uniform(0,1,(100,1)) 这样,您的虚拟输入就不需要定标,因为它已经在0,1中了。
  2. 使用MinMaxScaler缩放数据 从sklearn.preprocessing MinMaxScaler arr_data = np.random.randint(0,600000,(100,1)) scaler = MinMaxScaler(feature_range = (0,1)) scaled_data = scaler.fit_transform(arr_data) 请注意,当使用TimeGAN时,您将始终收到0,1的十进制输出。现在,如果要将合成数据反演为整数,请考虑使用逆变换
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69316150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档