当前位置: 首页 > news >正文

企业网站模板公司拐角型布局网站

企业网站模板公司,拐角型布局网站,彩票网站怎么做赚钱吗,网站服务公司很多算法比赛经常会遇到不同的物体产生同含义的时间序列信息,比如不同位置的时间序列信息,风力发电、充电桩用电。经常会遇到该如此场景,对所有数据做统一处理喂给模型,模型很难学到区分信息,因此设计如果对不同位置的…

       很多算法比赛经常会遇到不同的物体产生同含义的时间序列信息,比如不同位置的时间序列信息,风力发电、充电桩用电。经常会遇到该如此场景,对所有数据做统一处理喂给模型,模型很难学到区分信息,因此设计如果对不同位置的装置做嵌入操作,这也是本文书写的主要目的之一,如果对不同位置装置的时序数据做模型呢?

      RGU: 循环神经网络模块,经常用于处理时序数据。

     Embedding : 是 PyTorch 中的一个类,用于将离散的整数序列映射为连续的向量表示。

使用下面比赛的数据作为一个处理的DEMO:

 2023中国华录杯数据湖算法大赛

import package

import numpy as np
import pandas as pd
import torch
import torch.nn as nn
#import tushare as ts
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.model_selection import train_test_split
from torch.utils.data import TensorDataset
from tqdm import tqdm
from torch.utils.data import Dataset, DataLoaderfrom sklearn.preprocessing import LabelEncoderimport matplotlib.pyplot as plt
import tqdm
import sys
import os
import gc
import argparse
import warningswarnings.filterwarnings('ignore')

load data

class Config():#data_path = '../data/data1/train/power.csv'timestep = 14  # 时间步长,就是利用多少时间窗口batch_size = 32  # 批次大小feature_size = 1  # 每个步长对应的特征数量,这里只使用1维,每天的风速hidden_size = 56  # 隐层大小output_size = 1  # 由于是单输出任务,最终输出层大小为1,预测未来1天风速num_layers = 1  # lstm的层数epochs = 10 # 迭代轮数best_loss = 0 # 记录损失learning_rate = 0.00003 # 学习率model_name = 'lstm' # 模型名称save_path = './{}.pth'.format(model_name) # 最优模型保存路径
config = Config()train_df = pd.read_csv('../初赛数据/phase1_train.csv')
test_df = pd.read_csv('../初赛数据/phase1_test.csv')labelEncoder = LabelEncoder()
train_df['line_label'] = labelEncoder.fit_transform(train_df['line'])
#labelEncoder.transform(test_df['line'])train_df = train_df.sort_values(["line",'date']).reset_index(drop=True)train_df.line.unique()
array(['L01', 'L02', 'L03', 'L04', 'L05', 'L06', 'L08', 'L09', 'L10'],dtype=object)

使用前面14天预测未来第七天:

1,2,3,4,5,6,7,8,9,10,11,12,13,14 -》14+7

【1,2,3,4,5,6,7,8,9,10,11,12,13,14】+1  -》 14+7+1

。。。。。

#train_df.head()
his_pow_feats = []
for i in range(config.timestep):train_df[f'shift_{7+i}'] = train_df.groupby("line_label")['passenger_flow'].shift(7+i)his_pow_feats.append(f'shift_{7+i}')
train_df_drop_na = train_df[train_df[his_pow_feats].isna().sum(axis=1)==0]class MyDataSet(Dataset):def __init__(self,train_df_drop_na,his_pow_feats):"""train_df_drop_na"""self.train_df = train_df_drop_na.reset_index(drop=True)def __len__(self):return len(self.train_df)def __getitem__(self,item):label = self.train_df.loc[item,'passenger_flow']id_encoder = self.train_df.loc[item,'line_label']his_feats_list = self.train_df.loc[item,his_pow_feats].values.tolist()return {"input_ids":torch.tensor(id_encoder,dtype=torch.long),"his_feats":torch.as_tensor(his_feats_list ,dtype=torch.float32).unsqueeze(-1),"labels":torch.tensor(label,dtype=torch.float32)}RANDOM_SEED = 1023
df_train, df_test = train_test_split(train_df_drop_na, test_size=0.2, random_state=RANDOM_SEED)
df_val, df_test = train_test_split(df_test, test_size=0.5, random_state=RANDOM_SEED)
df_train.shape, df_val.shape, df_test.shapedef create_data_loader(train_df_drop_na,his_pow_feats,batch_size=32):ds = MyDataSet(train_df_drop_na,his_pow_feats)return DataLoader(ds,batch_size=batch_size)
BATCH_SIZE = 32
train_data_loader = create_data_loader(df_train,his_pow_feats=his_pow_feats,batch_size=BATCH_SIZE)
val_data_loader = create_data_loader(df_val, his_pow_feats=his_pow_feats,batch_size=BATCH_SIZE)
test_data_loader = create_data_loader(df_test,his_pow_feats=his_pow_feats,batch_size=BATCH_SIZE)#train_df[cols]
# 7.定义LSTM网络
class GRUModel(nn.Module):def __init__(self, feature_size, hidden_size, num_layers, output_size):super(GRUModel, self).__init__()self.hidden_size = hidden_size  # 隐层大小self.num_layers = num_layers  # lstm层数# feature_size为特征维度,就是每个时间点对应的特征数量,这里为1self.gru = nn.GRU(feature_size, hidden_size, num_layers, batch_first=True,bidirectional=True)self.layer_norm = nn.LayerNorm(hidden_size*2)self.fc = nn.Linear(hidden_size*2+2, output_size)self.embedding = nn.Embedding(9, 2)def forward(self, x,id_label, hidden=None):#print(x.shape)batch_size = x.shape[0] # 获取批次大小 batch, time_stamp , feat_size# 初始化隐层状态h_0 = x.data.new(2*self.num_layers, batch_size, self.hidden_size).fill_(0).float()if hidden is not None:h_0 = hidden#print(h_0.size)# GRU 运算output, hidden = self.gru(x,h_0)output = self.layer_norm(output)last_output = output[:, -1, :]#print('output',last_output.shape)embed = self.embedding(id_label)#print("embed",embed.shape)#print('output',output.shape)concatenated = torch.cat((embed, last_output), dim=1)#print(concatenated.shape)# 全连接层output = self.fc(concatenated)  # 形状为batch_size * timestep, 1#print(output.shape)# 我们只需要返回最后一个时间片的数据即可return output
model = GRUModel(config.feature_size, config.hidden_size, config.num_layers, config.output_size)  # 定义LSTM网络loss_function = nn.L1Loss()  # 定义损失函数
# class MAPELoss(nn.Module):
#     def __init__(self):
#         super(MAPELoss, self).__init__()#     def forward(self, y_pred, y_true):
#         epsilon = 1e-8  # 用于避免除以零的小常数
#         absolute_error = torch.abs(y_true - y_pred)
#         relative_error = absolute_error / (torch.abs(y_true) + epsilon)
#         mape = torch.mean(relative_error) * 100
#         return mape
# loss_function = MAPELoss()  # 定义损失函数optimizer = torch.optim.AdamW(model.parameters(), lr=0.01)  # 定义优化器
from tqdm import tqdm# 8.模型训练
for epoch in range(500):model.train()running_loss = 0train_bar = tqdm(train_data_loader)  # 形成进度条for data in train_bar:x_train, y_train = data['his_feats'], data['labels']  # 解包迭代器中的X和Yoptimizer.zero_grad()y_train_pred = model(x_train,data['input_ids'])loss = loss_function(y_train_pred, y_train.reshape(-1, 1))loss.backward()optimizer.step()running_loss += loss.item()train_bar.desc = "train epoch[{}/{}] loss:{:.3f}".format(epoch + 1,config.epochs,loss)# 模型验证model.eval()test_loss = 0with torch.no_grad():test_bar = tqdm(val_data_loader)for data in test_bar:x_test, y_test = data['his_feats'], data['labels']y_test_pred = model(x_test, data['input_ids'])test_loss = loss_function(y_test_pred, y_test.reshape(-1, 1))if test_loss < config.best_loss:config.best_loss = test_losstorch.save(model.state_dict(), save_path)print('Finished Training')

http://www.15wanjia.com/news/182494.html

相关文章:

  • 专业建站模板做设计的素材网站有哪些
  • 做网站用的幻灯片大小宁波网站建设营销推广
  • 做带字头像的网站怎么制作图片和文字一起
  • 门户网站推荐医院招聘网站建设和维护
  • 网站优化费用网站开发api和微端
  • 锦州网站制作做素食香料哪个网站买
  • 招聘网站开发方案doc263企业邮箱登录入口手机版
  • 重庆网站建设 观音桥自建站搭建
  • 行距网站哪些网站做翻译可以赚钱
  • 郑州有哪些搞网站开发的公司贵州省健康码二维码图片下载
  • 国内知名网站建设企业建瓯市建设银行网站
  • 北京最大专业网站建设重庆建设网站哪家专业
  • 网站建设和推广的完整话术中山网站建设优化
  • 网站开发工作方向网站建设在线学习
  • 广州做网站海珠信科百度收录网站技巧
  • 长沙企业网站建设笔记本彩页设计
  • 网站的管理包括漳州项目工程交易中心网
  • 怎么装字体到wordpress连云港网站建设优化
  • 电子商务网站的建设网页游戏推荐排行
  • 现在个人都在哪个网站做外贸苏州网页设计师培训
  • 做企业展示网站免费精品网站模板
  • 成都网站建设scdzks怎样制作游戏app软件
  • 适合个人做的网站有哪些网络宣传的好处
  • 上海网站编辑招聘建筑设计费一般多少钱一平方
  • 网站建设人力资源人员配置怎么把网站源码上传到空间根目录视频
  • wordpress网站收录插件西安专业房产网站建设
  • 织梦网站开发阿里巴巴做网站费用计入
  • 文化产业协会网站源码西安百度快照优化
  • 在网站如何做在ps软件做界面WordPress客户端
  • 购物网站html模板建设工程图审管理信息系统网站