时间序列生成器(TimeseriesGenerator)

参考How to Use the TimeseriesGenerator for Time Series Forecasting in Keras

时间序列

监督学习时间序列的问题

如何应用TimeseriesGenrator

Keras 提供了TimeseriesGenrator 时间序列生成器,它可以用来自动把单序列或者多序列集转换为监督学习问题。

  • 定义一个时间序列生成器
    你可以创建一个Sequence class 类实例,来定义自己的输入和输出。它可以用来迭代你的输入和输出序列。
    一旦这个时间序列生成器被定义,它就可以用来训练神经网络模型。
  • 用 fit_generaor()函数来训练模型
  • how to use
from numpy import array
from keras.preprocessing.sequence import TimeseriesGenerator
# define dataset
series = array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# define generator
n_input = 2
generator = TimeseriesGenerator(series, series, length=n_input, batch_size=1)
# number of samples
print('Samples: %d' % len(generator))
# print each sample
for i in range(len(generator)):
	x, y = generator[i]
	print('%s => %s' % (x, y))

length=2,batch_size=1

Samples: 8
[[1 2]] => [3]
[[2 3]] => [4]
[[3 4]] => [5]
[[4 5]] => [6]
[[5 6]] => [7]
[[6 7]] => [8]
[[7 8]] => [9]
[[8 9]] => [10]

x,y=generator[0]
print(y.shape)
print(x.shape)

(1,)
(1, 2)

length=2,batch_size=2

Samples: 4
[[1 2]
[2 3]] => [3 4]
[[3 4]
[4 5]] => [5 6]
[[5 6]
[6 7]] => [7 8]
[[7 8]
[8 9]] => [ 9 10]

x,y=generator[0]
print(y.shape)
print(x.shape)

(2,)
(2, 2)

length=3,batch_size=2

Samples: 4
[[1 2 3]
[2 3 4]] => [4 5]
[[3 4 5]
[4 5 6]] => [6 7]
[[5 6 7]
[6 7 8]] => [8 9]
[[7 8 9]] => [10]

x,y=generator[0]
print(y.shape)
print(x.shape)

(2,)
(2, 3)

  • 实例
from numpy import array
from keras.models import Sequential
from keras.layers import Dense
from keras.preprocessing.sequence import TimeseriesGenerator
# define dataset
series = array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# define generator
n_input = 2
generator = TimeseriesGenerator(series, series, length=n_input, batch_size=8)
# define model
model = Sequential()
model.add(Dense(100, activation='relu', input_dim=n_input))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# fit model
model.fit_generator(generator, steps_per_epoch=1, epochs=200, verbose=1)
# make a one step prediction out of sample
x_input = array([9, 10]).reshape((1, n_input))
yhat = model.predict(x_input, verbose=0)
print(yhat)

输出
在这里插入图片描述

  • 升级
    我们也可以用RNN训练,例如LSTM。
    LSTM 期望的数据类型是[samples,timesteps,features],然而时间序列生成器目前为止的形状是[smaples,features]
    我们可以这样reshape
n_features = 1
series = series.reshape((len(series), n_features))
# univariate one step problem with lstm
from numpy import array
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.preprocessing.sequence import TimeseriesGenerator
# define dataset
series = array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# reshape to [10, 1]
n_features = 1
series = series.reshape((len(series), n_features))
# define generator
n_input = 2
generator = TimeseriesGenerator(series, series, length=n_input, batch_size=8)
# define model
model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(n_input, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# fit model
model.fit_generator(generator, steps_per_epoch=1, epochs=500, verbose=0)
# make a one step prediction out of sample
x_input = array([9, 10]).reshape((1, n_input, n_features))
yhat = model.predict(x_input, verbose=0)
print(yhat)
### 安装VirtualBox并将其文件存储在D盘 为了将VirtualBox及其虚拟机文件安装到Windows系统的D盘,可以按照以下方法操作: #### 修改默认虚拟机位置 当首次启动VirtualBox时,默认情况下会将虚拟机及相关文件保存在C盘的用户目录下。要更改此路径至D盘,需调整全局设置中的默认机器文件夹。 进入VirtualBox程序后,在顶部菜单栏找到`File`(文件),接着选择`Preferences`(首选项)[^3]。随后切换到`General`(常规)标签页下的`Machine Folders`(机器文件夹)部分,点击右侧浏览按钮指定新的目标地址为D:\CodeSoftware\VirtualBox\VirtualBox VMs 或者其他自定义路径。 #### 设置ISO镜像库路径 除了改变虚拟机本身的存放地点外,还可以考虑把ISO映像也转移到非系统分区来节省空间。同样是在上述提到的偏好设置窗口里,转到`Paths`(路径)选项卡,这里能够单独设定用于存放光驱映像(.iso,.vmdk等格式)的具体位置。 #### 执行实际安装过程 下载适用于Windows平台版本的VirtualBox安装包,并双击运行。由于官方并不强制限定应用程序本身必须安放在特定磁盘内,所以在弹出来的图形化向导界面上按提示一步步完成部署即可;通常建议保持默认选项不变,即让其自动决定放置于Program Files之下还是便携模式中任意一处未被占用的地方[^1]。 ```powershell # 如果需要通过命令行方式安装VirtualBox(可选) choco install virtualbox --installargs 'TARGETDIR=D:\Applications' ``` 请注意以上PowerShell脚本仅作为示例展示如何利用Chocolatey工具链实现静默安装并将主程序定位到D盘的应用案例之一,具体执行前应先确认环境兼容性和依赖关系。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值