timeseries_dataset_from_array使用详解

在以数组形式提供的时间序列上创建滑动窗口的数据集。

导入库

tf.keras.utils.timeseries_dataset_from_array

tf.keras.utils.timeseries_dataset_from_array(
    data,
    targets,
    sequence_length,
    sequence_stride=1,
    sampling_rate=1,
    batch_size=128,
    shuffle=False,
    seed=None,
    start_index=None,
    end_index=None
)

生成数据

data = [i for i in range(100)]
np.array(data)

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
       51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
       68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
       85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])

一对一的关系

生成使用过去 10 个数据集 时间步长 要预测下一个时间步长

input_data = data[:-10]
targets = data[10:]
dataset = keras.preprocessing.timeseries_dataset_from_array(
    input_data, targets, sequence_length=10)

for batch in dataset:
    # print(batch)
    inputs, targets = batch
    assert np.array_equal(inputs[0], data[:10])  # First sequence: steps [0-9]
    # Corresponding target: step 10
    assert np.array_equal(targets[0], data[10])
    break

查看输入数据

list(dataset.as_numpy_iterator())[0][0]

另外一种查看数据的方法

inputs.numpy()

多对一的关系

生成数据

data = [i for i in range(100)]
data = np.array(data).reshape(25,4)
data

切分输入和输出数据

input_data = data[:end,:]
input_data

targets_data = data[start:,1]
targets_data
输入数据
预测数据

 为方便理解。将输入输出数据可视化:

其中0-3为输入变量,4为预测变量 

多对多的关系

sample_length = 5
input_dataset = tf.keras.utils.timeseries_dataset_from_array(data[:-sample_length,:], None, sequence_length=5,sequence_stride=sample_length)
target_dataset = tf.keras.utils.timeseries_dataset_from_array(
    data[sample_length:,1], None, sequence_length=sample_length, sequence_stride=5)

表格可视化 

list(input_dataset.as_numpy_iterator())[0][0]
#%%
list(target_dataset.as_numpy_iterator())[0]
输入数据
预测数据

 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值