xx = prevlabel[i - 1][int(np.argwhere(prevnumber[i - 1] == number[j]))]
时间: 2024-01-04 20:01:48 浏览: 23
这行代码是在从一个二维数组 `prevlabel` 中取出对应的元素赋值给变量 `xx`,其中 `i` 和 `j` 是两个循环变量,`prevnumber` 是另一个与 `prevlabel` 相关的数组。具体来说,`prevnumber[i - 1]` 是一个一维数组,其中存储了一些数字,`number[j]` 也是一个数字,`np.argwhere(prevnumber[i - 1] == number[j])` 是在 `prevnumber[i - 1]` 中查找与 `number[j]` 相等的数字,返回其索引,然后 `prevlabel[i - 1]` 是一个一维数组,其中存储了一些标签,`int(np.argwhere(prevnumber[i - 1] == number[j]))` 将查找到的索引转换成整数,并作为下标取出对应的标签,赋值给 `xx`。
相关问题
s = self.ps*self.skip + self.Ck-1 + self.h-1 X1 = np.zeros((self.n-s, self.w, self.m)) # short term dataset X2 = np.zeros((self.n-s, self.ps*self.Ck, self.m)) # long term dataset Y = np.zeros((self.n-s, self.m)) # output dataset for i in range(s, self.n): t = i-self.h+1 X1[i-s] = self.raw[t-self.w:t].copy() idx = [] for k in range(self.ps): # 执行4次,每次间隔skip长,取Ck=6, total = 4 * 6 = 24 idx = list(range(t-self.Ck-k*self.skip, t-k*self.skip)) + idx idx = np.array(idx, dtype=int) X2[i-s] = self.raw[idx].copy() Y[i-s] = self.raw[i].copy() return X1, X2, Y 把这个单步预测改为多步预测结构
为了将单步预测改为多步预测结构,我们需要对代码进行以下修改:
1. 首先,我们需要定义一个变量 `horizon`,表示我们要预测的时间步数。
2. 然后,在循环中,我们需要将 `Y` 的维度从 `(self.n-s, self.m)` 改为 `(self.n-s-horizon, horizon, self.m)`,表示我们要预测多个时间步。
3. 接下来,我们需要在循环中添加一个内嵌循环,用于预测每个时间步。我们可以使用和单步预测相同的方法进行预测。
4. 最后,我们需要将预测结果添加到 `Y` 中,以便在循环结束后返回。
下面是修改后的代码:
```
s = self.ps*self.skip + self.Ck-1 + self.h-1
X1 = np.zeros((self.n-s, self.w, self.m)) # short term dataset
X2 = np.zeros((self.n-s, self.ps*self.Ck, self.m)) # long term dataset
horizon = 3 # 预测的时间步数
Y = np.zeros((self.n-s-horizon, horizon, self.m)) # output dataset
for i in range(s, self.n-horizon): # 预测第 i+h 时间步
t = i-self.h+1
X1[i-s] = self.raw[t-self.w:t].copy()
idx = []
for k in range(self.ps): # 执行4次,每次间隔skip长,取Ck=6, total = 4 * 6 = 24
idx = list(range(t-self.Ck-k*self.skip, t-k*self.skip)) + idx
idx = np.array(idx, dtype=int)
X2[i-s] = self.raw[idx].copy()
for j in range(horizon):
y_pred = self.model.predict([X1[i-s][None, ...], X2[i-s][None, ...]])[0] # 预测下一个时间步
Y[i-s, j] = y_pred # 将预测结果添加到 Y 中
X1[i-s, :-1] = X1[i-s, 1:] # 更新 X1
X1[i-s, -1] = y_pred
X2[i-s, :-self.Ck] = X2[i-s, self.Ck:] # 更新 X2
X2[i-s, -self.Ck:] = X1[i-s, -self.Ck:]
return X1, X2, Y
```
下面是单步单维预测模型的数据结构,如果改为多步预测,结构如何修改: s = self.ps*self.skip + self.Ck-1 + self.h-1 X1 = np.zeros((self.n-s, self.w, self.m)) # short term dataset X2 = np.zeros((self.n-s, self.ps*self.Ck, self.m)) # long term dataset Y = np.zeros((self.n-s, self.m)) # output dataset for i in range(s, self.n): t = i-self.h+1 X1[i-s] = self.raw[t-self.w:t].copy() idx = [] for k in range(self.ps): # 执行4次,每次间隔skip长,取Ck=6, total = 4 * 6 = 24 idx = list(range(t-self.Ck-k*self.skip, t-k*self.skip)) + idx idx = np.array(idx, dtype=int) X2[i-s] = self.raw[idx].copy() Y[i-s] = self.raw[i].copy() return X1, X2, Y
如果要改为多步预测,需要修改输出数据集Y的维度,变成一个矩阵,其中每一行表示从当前时间步开始的未来若干时间步的预测值。同时,由于需要预测多个时间步,长期数据集X2也需要进行相应的修改,变成一个三维数组,其中第一维表示时间步,第二维表示长期时间窗口,第三维表示特征数量。修改后的代码如下:
```
s = self.ps*self.skip + self.Ck-1 + self.h-1
X1 = np.zeros((self.n-s, self.w, self.m)) # short term dataset
X2 = np.zeros((self.n-s, self.ps, self.Ck, self.m)) # long term dataset
Y = np.zeros((self.n-s-self.h+1, self.h, self.m)) # output dataset
for i in range(s, self.n):
t = i-self.h+1
X1[i-s] = self.raw[t-self.w:t].copy()
idx = []
for k in range(self.ps):
idx = list(range(t-self.Ck-k*self.skip, t-k*self.skip)) + idx
idx = np.array(idx, dtype=int)
X2[i-s] = self.raw[idx].reshape(self.ps, self.Ck, self.m).copy()
Y[i-s-self.h+1] = self.raw[i-self.h+1:i+1].copy()
return X1, X2, Y
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)