IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> CNN_BiLSTM_Attention模型,LSTM模型,DNN(全连接神经网络)三种模型对短期日负荷曲线的预测 -> 正文阅读

[人工智能]CNN_BiLSTM_Attention模型,LSTM模型,DNN(全连接神经网络)三种模型对短期日负荷曲线的预测

1.数据说明:

数据来源

是针对变压器上的负荷变化进行研究,每15分钟采集一次负荷数据,也就是说一天内的负荷曲线由4*24=96个点组成,这份数据集里不仅考虑了历史负荷数据对负荷变化的影响,还考虑了当天的温度情况。

2.训练集与测试集的划分

取2013年9月1日到2014年8月31日作为训练集,取2014年9月1日到9月30日作为测试集

输入特征:预测日的前两周数据

输出特征:预测日内96个点的大小

3.DNN代码

# -*- coding: utf-8 -*-
"""
Created on Wed Apr 13 11:02:02 2022

@author: pony
"""

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import pickle
import keras
import warnings
warnings.filterwarnings("ignore")

data = pd.read_csv("p.csv")
parts = 14
this_one = data.iloc[parts:]#取14行以后数据
bak_index = this_one.index#取索引
for k in range(1, parts + 1):
    last_one = data.iloc[(parts - k):(this_one.shape[0] - k + parts)]
    this_one.set_index(last_one.index, drop=True, inplace=True)
    this_one = this_one.join(last_one, lsuffix="", rsuffix="_p" + str(k))

this_one.set_index(bak_index, drop=True, inplace=True)
this_one = this_one.fillna(0)#用0填充缺失值
t0 = this_one.iloc[:, 0:96]#取0-96列
t0_min = t0.apply(lambda x: np.min(x), axis=0).values#每一列的最小值
t0_ptp = t0.apply(lambda x: np.ptp(x), axis=0).values#最大值和最小值的差值
this_one = this_one.apply(lambda x: (x - np.min(x)) / np.ptp(x), axis=0)#归一化
'''
划分训练集与测试集
'''
test_data = this_one.iloc[-30:]#最后30天当做测试集
train_data = this_one.iloc[:-30]
train_y_df = train_data.iloc[:, 0:96]#取前96列当做标签
train_y = np.array(train_y_df)
train_x_df = train_data.iloc[:, 96:]#取96列以后,也就是前14天的数据作为特征输入
train_x = np.array(train_x_df)

test_y_df = test_data.iloc[:, 0:96]
test_y = np.array(test_y_df)
test_x_df = test_data.iloc[:, 96:]
test_x = np.array(test_x_df)
test_y_real = t0.iloc[-30:]#测试集归一化前的真实标签
'''
建立模型
'''
import keras
import pickle
init = keras.initializers.glorot_uniform(seed=1)
simple_adam = keras.optimizers.Adam()
model = keras.models.Sequential()
model.add(keras.layers.Dense(units=512, input_dim=1434, kernel_initializer=init, activation='relu'))
model.add(keras.layers.Dense(units=256, kernel_initializer=init, activation='relu'))
model.add(keras.layers.Dense(units=128, kernel_initializer=init, activation='relu'))
model.add(keras.layers.Dropout(0.1))
model.add(keras.layers.Dense(units=96, kernel_initializer=init, activation='tanh'))
model.compile(loss='mse', optimizer=simple_adam, metrics=['accuracy'])
model.fit(train_x, train_y, epochs=100, batch_size=32, shuffle=True, verbose=True)

pred_y = model.predict(test_x)
pred_y = (pred_y*t0_ptp)+t0_min

import pickle
import matplotlib.pyplot as plt
import matplotlib
# 以下 font.family 设置仅适用于 Mac系统,其它系统请使用对应字体名称
matplotlib.rcParams['font.family'] = 'Arial Unicode MS'
import numpy as np


    
realdf = test_y*t0_ptp[0:96]+t0_min[0:96]
base = 0
error = 0
plt.figure(figsize=(20, 10))
for index in range(0, 30):
    real_array = realdf[index][0:96]
    pred_array = pred_y[index][0:96]
    pred_array[np.where(pred_array < 0)] = 0
    plt.subplot(5, 7, index + 1)
    plt.plot(range(96), real_array, '-', label="real",c='red')
    plt.plot(range(96), pred_array, '--', label="pred",c='green')
    plt.ylim(0, 250)
    base = base + np.sum(real_array)
    error = error + np.sum(np.abs(real_array-pred_array))
plt.show()
v = 100*(1-error/base)
print("Evaluation on test data: accuracy = %0.2f%% \n" % v)
# Evaluation on test data: accuracy = 74.95% 

?DNN测试集结果图(每个小图是一天,一共是30天):

4.?CNN_BiLSTM_Attention模型,LSTM模型的结果分别是

?

?5.通过计算累积误差率,CNN_BiLSTM_Attention模型,LSTM模型,DNN模型的整体精度分别为:75.44%,78.68%,80.89%。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:56:33  更:2022-04-14 23:58:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:32:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码