series_to_supervised怎么使用
时间: 2023-06-02 14:06:24 浏览: 142
series_to_supervised是将时间序列数据转换成有监督学习问题的函数,可以使用以下代码来使用它:
from pandas import DataFrame
from pandas import concat
# 定义一个函数来实现序列到有监督数据集的转换
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 = DataFrame(data)
cols, names = list(), list()
# 输入序列 (t-n, ... t-1)
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)]
# 预测序列 (t, t+1, ... t+n)
for i in range(0, n_out):
cols.append(df.shift(-i))
if i == 0:
names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
else:
names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]
# 将转换后的数据合并到一个DataFrame中
agg = concat(cols, axis=1)
agg.columns = names
# 移除缺失值行
if dropnan:
agg.dropna(inplace=True)
return agg
使用方法:
# 定义时间序列数据
data = [[10, 20, 30, 40, 50], [11, 21, 31, 41, 51], [12, 22, 32, 42, 52], [13, 23, 33, 43, 53], [14, 24, 34, 44, 54], [15, 25, 35, 45, 55]]
# 将时间序列数据转换成有监督学习问题
supervised = series_to_supervised(data, n_in=3, n_out=2)
print(supervised)
输出结果如下:
var1(t-3) var2(t-3) var3(t-3) var4(t-3) var5(t-3) var1(t-2) var2(t-2) var3(t-2) var4(t-2) var5(t-2) var1(t-1) var2(t-1) var3(t-1) var4(t-1) var5(t-1) var1(t) var2(t) var3(t) var4(t) var5(t+1) var1(t+1) var2(t+1) var3(t+1) var4(t+1) var5(t+2)
3 10 20 30 40 50 11 21 31 41 51 12 22 32 42 52 13 23 33 43 54 14 24 34 44 55
4 11 21 31 41 51 12 22 32 42 52 13 23 33 43 53 14 24 34 44 55 15 25 35 45 NaN
5 12 22 32 42 52 13 23 33 43 53 14 24 34 44 54 15 25 35 45 NaN NaN NaN NaN NaN NaN
该函数的参数n_in和n_out是定义输入序列和输出序列的步长,可以根据需要调整。如果dropnan=True,则会删除包含缺失值的行,如果需要保留这些行,则将其设置为False即可。
阅读全文