1 Star 9 Fork 2

VIT / 基于CNN_A_LSTM的小时天气预测

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

基于CNN_A_LSTM的小时天气预测

介绍

基于CNN_A_LSTM的小时天气预测(有问题请联系qq:869114539,vx:15234405680)

文件 用途
code目录 代码
Houston.csv 数据集
util.py 工具类

基于深度学习的小时天气预测(温度单步预测)

基于torch框架完成

模型 参数
RNN 神经元个数=32 步长=24
LSTM 神经元个数=32 步长=24
GRU 神经元个数=64 步长=24
CNN_LSTM 神经元个数=64 步长=24
CNN_A_LSTM 神经元个数=64 步长=24

缺失值处理

插值填充 df = df.interpolate()

weather数值化

    label_encoder = LabelEncoder()
    df['weather'] = label_encoder.fit_transform(df['weather'])
    category_mapping = dict(zip(label_encoder.classes_, label_encoder.transform(label_encoder.classes_)))

输入图片说明

数据格式处理

因需要预测未来一小时天气(时间序列单步预测),基于滑动窗口的方式对数据格式进行处理: 输入图片说明

def create_sliding_window(data, window_size):
    window_data = []
    for i in range(len(data) - window_size):
        window = data[i:i + window_size]
        target = data[i + window_size][2]
        window_data.append((window, target))
    return window_data

RNN实现

class RNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(LSTMModel, self).__init__()
        self.hidden_size = hidden_size
        self.lstm = nn.RNN(input_size, hidden_size)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        lstm_out, _ = self.lstm(x)
        output = self.fc(lstm_out[:, -1, :])
        return output

RNN训练LossRNN测试集预测结果展示

LSTM实现

class LSTMModel(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(LSTMModel, self).__init__()
        self.hidden_size = hidden_size
        self.lstm = nn.LSTM(input_size, hidden_size)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        lstm_out, _ = self.lstm(x)
        output = self.fc(lstm_out[:, -1, :])
        return output

LSTM训练LossLSTM测试集预测结果展示

GRU实现

输入图片说明输入图片说明

CNN_LSTM实现

class CNNLSTMModel(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(CNNLSTMModel, self).__init__()
        self.hidden_size = hidden_size
        self.conv1 = nn.Conv1d(input_size, hidden_size, kernel_size=3, padding=1)
        self.lstm = nn.LSTM(hidden_size, hidden_size)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        x = x.permute(0, 2, 1)  # 转换输入的维度,使其适合卷积层的输入
        x = F.relu(self.conv1(x))
        x = x.permute(2, 0, 1)  # 将维度转换回原始维度
        lstm_out, _ = self.lstm(x)
        output = self.fc(lstm_out[-1, :, :])  # 只使用最后一个时间步的输出
        return output

输入图片说明 输入图片说明

CNN_A_LSTM实现

输入图片说明输入图片说明

空文件

简介

基于CNN_A_LSTM的小时天气预测 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/VIT19980106/CNN_A_LSTM_Weather_Predict.git
git@gitee.com:VIT19980106/CNN_A_LSTM_Weather_Predict.git
VIT19980106
CNN_A_LSTM_Weather_Predict
基于CNN_A_LSTM的小时天气预测
master

搜索帮助