Python|使用深度神经网络的 K-Means 聚类进行短期风电预测

目录

1 引言

2 问题描述

3 目的

4 重要性

5 创新点

6 Python代码

7 结果


1 引言

可再生能源的开发利用一直是世界上最热门的热点之一。风力发电由于清洁和广泛的可用性,正迅速向大规模产业发展,并具有波动性和间歇性电力的特点。准确可靠的风电预测方法对于电能质量、可靠性管理以及降低旋转备用供电成本至关重要.

2 问题描述

风能预测对应于对近期一个或多个风力涡轮机的预期产量的估计。在电网中,任何时候都必须在用电量和发电量之间保持平衡——否则可能会出现电能质量或供应的干扰。风力发电是风速的直接函数,与传统发电系统相比,风力发电不易调度。因此,风力发电的波动受到了极大的关注。

3 目的

一种风电功率预测数据挖掘方法,由K-means聚类方法和bagging神经网络组成。根据气象条件和历史功率对历史数据进行聚类。皮尔逊相关系数用于计算预测日与聚类之间的距离。

4 重要性

风电功率预测(WPF)对于有效指导电网调度和风电场生产规划具有重要意义。风的间歇性和波动性导致训练样本的多样性对预测精度有重大影响。由于必须保持消耗和发电之间的平衡,因此风力发电的波动是一个非常重要的研究领域。

5 创新点

为了处理训练样本的动态并提高预测精度,提出了一种针对短期WPF的由MinMax归一化、K-means聚类和深度神经网络组成的数据挖掘方法。基于历史天数之间的相似性,K-means聚类用于通过取各个聚类的质心来减少数据集。此外,当给定参数的标准化值时,这个简化的数据集用于预测未来产生的功率。

6 Python代码

部分代码: 

import numpy as np
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import pandas as pd
import datetime as dt
import matplotlib.dates as mdates


def str_to_datetime(date):
    return dt.datetime.strptime(date, '%Y-%m-%d %H:%M:%S')


def main():
    df = pd.read_csv('Processed_data/wp7.csv', names=['dates', 'ws-2', 'ws-1', 'ws', 'ws+1', 'wd-2',
                                                      'wd-1', 'wd', 'wd+1', 'hour_from_06', 'week', 'mounth',
                                                      'production'], sep=',', skiprows=1)

    real_production = df.production[48:]
    real_production.index = np.arange(len(real_production))
    M = len(real_production)
    predicted_production = df.production[:M]

    df['dates'] = df['dates'].apply(str_to_datetime)

    xDates = df.dates.iloc[0:M]

    realFrame = pd.DataFrame({"Dates": xDates, "Real": real_production})
    predFrame = pd.DataFrame({"Dates": xDates, "Prediction": predicted_production})

    print("MSE: ", mean_squared_error(realFrame.Real, predFrame.Prediction))

    fig, ax = plt.subplots()

    ax.plot(realFrame["Dates"], realFrame["Real"])
    ax.plot(predFrame["Dates"], predFrame["Prediction"])

    ax.xaxis.set_major_formatter(mdates.DateFormatter('%m.%Y'))

    plt.show()


if __name__ == '__main__':
    main()

import numpy as np
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import pandas as pd
import datetime as dt
import matplotlib.dates as mdates


def str_to_datetime(date):
    return dt.datetime.strptime(date, '%Y-%m-%d %H:%M:%S')


def main():
    df = pd.read_csv('Processed_data/wp7.csv', names=['dates', 'ws-2', 'ws-1', 'ws', 'ws+1', 'wd-2',
                                                      'wd-1', 'wd', 'wd+1', 'hour_from_06', 'week', 'mounth',
                                                      'production'], sep=',', skiprows=1)

    real_production = df.production[48:]
    real_production.index = np.arange(len(real_production))
    M = len(real_production)
    predicted_production = df.production[:M]

    df['dates'] = df['dates'].apply(str_to_datetime)

    xDates = df.dates.iloc[0:M]

    realFrame = pd.DataFrame({"Dates": xDates, "Real": real_production})
    predFrame = pd.DataFrame({"Dates": xDates, "Prediction": predicted_production})

    print("MSE: ", mean_squared_error(realFrame.Real, predFrame.Prediction))

    fig, ax = plt.subplots()

    ax.plot(realFrame["Dates"], realFrame["Real"])
    ax.plot(predFrame["Dates"], predFrame["Prediction"])

    ax.xaxis.set_major_formatter(mdates.DateFormatter('%m.%Y'))

    plt.show()


if __name__ == '__main__':
    main()
 

 

7 结果

Python|使用深度神经网络的 K-Means 聚类进行短期风电预测_第1张图片

Python|使用深度神经网络的 K-Means 聚类进行短期风电预测_第2张图片  

你可能感兴趣的:(电力系统,python,dnn,kmeans)