python打卡day55@浙大疏锦行

发布于:2025-06-27 ⋅ 阅读:(13) ⋅ 点赞:(0)

知识点回顾

  1. 序列预测介绍
    1. 单步预测
    2. 多步预测的2种方式
  2. 序列数据的处理:滑动窗口
  3. 多输入多输出任务的思路
  4. 经典机器学习在序列任务上的劣势;以随机森林为例

作业:手动构造类似的数据集(如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


网站公告

今日签到

点亮在社区的每一天
去签到