知识点回顾
- 序列预测介绍
- 单步预测
- 多步预测的2种方式
- 序列数据的处理:滑动窗口
- 多输入多输出任务的思路
- 经典机器学习在序列任务上的劣势;以随机森林为例
作业:手动构造类似的数据集(如cosx数据),观察不同的机器学习模型的差异
1.滑动窗口的实现
def create_sliding_window(data, window_size=3):
X, y = [], []
for i in range(len(data)-window_size):
X.append(data[i:i+window_size])
y.append(data[i+window_size:i+window_size+2]) # 多输出预测
return np.array(X), np.array(y)
2.多输入多输出架构
from sklearn.multioutput import MultiOutputRegressor
# 随机森林多输出扩展
model = MultiOutputRegressor(RandomForestRegressor(n_estimators=100))
作业实现方案
1. 余弦数据集构造
import numpy as np
def generate_cos_data(samples=1000, noise=0.1):
x = np.linspace(0, 8*np.pi, samples)
y = np.cos(x) + np.random.normal(0, noise, samples)
return y.reshape(-1,1)
2.模型对比实验
from sklearn.ensemble import RandomForestRegressor
from sklearn.svm import SVR
from sklearn.linear_model import LinearRegression
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
models = {
"RF": RandomForestRegressor(),
"SVR": SVR(),
"LSTM": Sequential([
LSTM(32, input_shape=(3,1)),
Dense(2)])
}
3.执行命令
python -m src.models.train --task sequence_comparison --window_size 5