第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【6】【数据可视化】【训练集】

第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【6】【数据可视化】【训练集】,第1张

第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【6】【数据可视化】【训练集】 声明
  1. 系列博客不会出现任何真实数据
  2. 比赛期间将拒绝一切私信,有问题请发评论

系列文章目录

第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【0】【风况预测评分规则-最终得分R的计算】【已弃用】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【1】【验证集制作】【已弃用】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【2】【验证集使用】【已弃用】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【3】【计算最终得分】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【4】【数据管理】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【5】【数据可视化】【测试集_初赛】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【6】【数据可视化】【训练集】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【7】【数据管理】【验证集本地化】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【8】【数据可视化】【验证集】
第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【9】【数据可视化】【气象数据】


文章目录
  • 声明
  • 系列文章目录
  • 更新说明
  • 前言
  • 一、必要的准备
  • 二、随机选取一个数据进行可视化(包含预测数据)
  • 三、可视化所有训练数据并保存到本地(包含预测数据)
  • 四、随机选取某风场某风机其中一日的训练数据并保存到当前文件夹(包含预测数据)


更新说明



注:大赛官网明确规定数据不可用作其他用途,所以图就不展示了

前言

本篇90%内容和【5】【数据可视化】【测试集_初赛】一样,运行一下看一下结果就好了。


一、必要的准备

main.py见系列第5个博客【4】【数据管理】

  1. 你需要把mian.py和train放在同一目录下,然后运行以下代码
from main import *

dm = Data_Manager()

dm.load_test_data()

np.nan_to_num(dm.X_, copy=False)
np.nan_to_num(dm.X0, copy=False)
np.nan_to_num(dm.Y0, copy=False)
np.nan_to_num(dm.S, copy=False)
np.nan_to_num(dm.W, copy=False)
np.nan_to_num(dm.test_X_, copy=False)
np.nan_to_num(dm.test_X0, copy=False)
np.nan_to_num(dm.test_W, copy=False);

二、随机选取一个数据进行可视化(包含预测数据)
f = np.random.randint(0, field_len)
i = np.random.randint(13, 17485)
m = np.random.randint(0, machine_len)

print('风场', field[f])
print('时段', time_series[field[f]][11*120:-2*120:120].iloc[i, 0])
print('风机', machine[f][m])

z_1 = np.arange(120)
z_2 = np.arange(120, 140)

spd_1 = dm.X0[f, i, m, :, 0]
spd_2 = dm.Y0[f, i, m, :, 0]

dir_1 = dm.X0[f, i, m, :, 1]
dir_2 = dm.Y0[f, i, m, :, 1]

fig, ax = plt.subplots(2, 2, figsize=(10 * 2, 10))

ax[0, 0].set_xlabel('时间')
ax[0, 0].set_ylabel('风速')
ax[0, 0].plot(z_1, spd_1, label='spd_1')
ax[0, 0].plot(z_2, spd_2, label='spd_2')
ax[0, 0].legend()

ax[0, 1].set_xlabel('时间')
ax[0, 1].set_ylabel('风向')
ax[0, 1].plot(z_1, dir_1, label='dir_1')
ax[0, 1].plot(z_2, dir_2, label='dir_2')
ax[0, 1].legend()

ax[1, 0].set_xlabel('时间')
ax[1, 0].set_ylabel('风速')
ax[1, 0].scatter(z_1, spd_1, label='spd_1')
ax[1, 0].scatter(z_2, spd_2, label='spd_2')
ax[1, 0].legend()

ax[1, 1].set_xlabel('时间')
ax[1, 1].set_ylabel('风向')
ax[1, 1].scatter(z_1, dir_1, label='dir_1')
ax[1, 1].scatter(z_2, dir_2, label='dir_2')
ax[1, 1].legend()


注:大赛官网明确规定数据不可用作其他用途,所以图就不展示了

三、可视化所有训练数据并保存到本地(包含预测数据)

全部运行完可能需要 40 * 50 分钟

root = 'train_pic'

z_1 = np.arange(120)
z_2 = np.arange(120, 140)

for f in range(field_len):
    os.makedirs(os.path.join(root, field[f]), exist_ok=True)
    for m in range(machine_len):
        save_dir = os.path.join(root, field[f], machine[f][m])
        os.makedirs(save_dir, exist_ok=True)
        for i in tqdm(range(13, 17485)):

            spd_1 = dm.X0[f, i, m, :, 0]
            spd_2 = dm.Y0[f, i, m, :, 0]
            
            dir_1 = dm.X0[f, i, m, :, 1]
            dir_2 = dm.Y0[f, i, m, :, 1]

            if (i - 13) % 24 == 0:
                fig, ax = plt.subplots(2, 24, figsize=(10*24, 10*2))

            ax[0, (i - 13) % 24].set_xlabel('时间')
            ax[0, (i - 13) % 24].set_ylabel('风速')
            ax[0, (i - 13) % 24].plot(z_1, spd_1, label='spd_1')
            ax[0, (i - 13) % 24].plot(z_2, spd_2, label='spd_2')
            ax[0, (i - 13) % 24].legend()

            ax[1, (i - 13) % 24].set_xlabel('时间')
            ax[1, (i - 13) % 24].set_ylabel('风向')
            ax[1, (i - 13) % 24].plot(z_1, dir_1, label='dir_1')
            ax[1, (i - 13) % 24].plot(z_2, dir_2, label='dir_2')
            ax[1, (i - 13) % 24].legend()
            
            if (i - 13) % 24 == 23:
                fig.savefig(os.path.join(save_dir, time_series[field[f]][11*120:-2*120:120].iloc[i, 0][:10]+'.png'))
                plt.close('all')

如图,以24小时为单位,存放在对应风场风机文件夹下,文件名就是日期。
图片内容:第一行是风速,第二行是风机,每一列是一个小时,从0时开始24时结束。

四、随机选取某风场某风机其中一日的训练数据并保存到当前文件夹(包含预测数据)
root = 'train_pic'

z_1 = np.arange(120)
z_2 = np.arange(120, 140)

f = np.random.randint(0, field_len)
i = np.random.choice(list(range(13, 17485, 24)), 1)[0]
m = np.random.randint(0, machine_len)

while 1:

    spd_1 = dm.X0[f, i, m, :, 0]
    spd_2 = dm.Y0[f, i, m, :, 0]

    dir_1 = dm.X0[f, i, m, :, 1]
    dir_2 = dm.Y0[f, i, m, :, 1]

    if (i - 13) % 24 == 0:
        fig, ax = plt.subplots(2, 24, figsize=(10*24, 10*2))

    ax[0, (i - 13) % 24].set_xlabel('时间')
    ax[0, (i - 13) % 24].set_ylabel('风速')
    ax[0, (i - 13) % 24].plot(z_1, spd_1, label='spd_1')
    ax[0, (i - 13) % 24].plot(z_2, spd_2, label='spd_2')
    ax[0, (i - 13) % 24].legend()

    ax[1, (i - 13) % 24].set_xlabel('时间')
    ax[1, (i - 13) % 24].set_ylabel('风向')
    ax[1, (i - 13) % 24].plot(z_1, dir_1, label='dir_1')
    ax[1, (i - 13) % 24].plot(z_2, dir_2, label='dir_2')
    ax[1, (i - 13) % 24].legend()

    if (i - 13) % 24 == 23:
        fig.savefig(field[f] + ' ' + machine[f][m] + ' ' + time_series[field[f]][11*120:-2*120:120].iloc[i, 0][:10]+'.png')
        plt.close('all')
        break
    
    i += 1

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4667430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存