使用多属性时间序列数据预测风电场实际功率
- 数据展示
![使用数据](https://img-blog.csdnimg.cn/20200706092818193.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU1NTQwOA==,size_16,color_FFFFFF,t_70#pic_center)
第A列时间数据作为时间索引,第N行B-L列作为特征属性(X),第N+1行L列作为预测属性(y),即用上一时刻的数据预测下一时刻的实际功率。下面的series_to_supervised先把数据构建成X-y形式,实际输入时用多少个时间步长作为输入由超参 time-step决定。
- 实验代码
from sklearn import preprocessing
import pandas as pd
import numpy as np
import sys
import torch.optim as optim
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np
np.set_printoptions(threshold=np.inf)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
np.set_printoptions(threshold= sys.maxsize)
def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
cols, names = list(), list()
for i in range(n_in, 0, -1):
cols.append(df.shift(i))
names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
for i in range(0, n_out):
cols.append(df.shift(-i))
if i == 0:
names += [('var%d(t)' % (j+1)) for j