可以使用滑动窗口技术来将时间序列切分成多个子序列,然后对每个子序列分别建立预测模型。具体实现代码如下:
import numpy as np
from sklearn.linear_model import LinearRegression
# 生成长度为 n 的时间序列
n = 100
ts = np.random.rand(n)
# 切分成多个长度为 seq_len 的子序列
seq_len = 10
X_list = [ts[i:i+seq_len] for i in range(n-seq_len+1)]
y_list = [ts[i+seq_len] for i in range(n-seq_len)]
# 建立线性回归模型,对每个子序列进行训练和预测
model = LinearRegression()
predictions = []
for X, y in zip(X_list, y_list):
X = X.reshape(-1, 1)
model.fit(X, y)
pred = model.predict([[X[-1, 0]+1]])
predictions.append(pred[0])
# 可视化结果
import matplotlib.pyplot as plt
plt.plot(ts[seq_len:], label='true data')
plt.plot(predictions, label='predictions')
plt.legend()
plt.show()
上述代码中,首先生成一个长度为 n 的时间序列 ts,然后使用滑动窗口技术将其切分成多个长度为 seq_len 的子序列 X_list 和对应的预测目标 y_list。接着,使用线性回归模型对每个子序列进行训练和预测,将预测结果存储在列表 predictions 中。最后,将真实数据和预测结果可视化出来。
上一篇:不同长度的字符串排列
下一篇:不同长度时间序列数组的相关方法