ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【7】【数据管理】【验证集本地化】

2021-10-15 19:02:33  阅读:299  来源: 互联网

标签:dm val df 本地化 indexes field shape 数据管理 风况


系列

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

前言

新版数据管理真香,不仅跑10000轮只需要11分30秒,还能边训练边计算最终得分R,而且,比起以前最多只能使用一个验证集,现在能同时使用10个验证集,避免偶然性误差。
在这里插入图片描述

前情提要

"""
               [风场, 时段, 风机, 时刻, 特征]
self.X_ : shape: (2, 17507, 25, 120, 2)    机舱数据,用作训练;特征 ['变频器电网侧有功功率', '外界温度']
self.X0 : shape: (2, 17507, 25, 120, 2)    机舱数据,用作训练;特征 ['风速', '风向']
self.Y0 : shape: (2, 17507, 25,  20, 2)    机舱数据,用作预测;特征 ['风速', '风向']

               [风场, 时段]
self.S  : shape: (2, 17507)                季节数据,用作训练

               [风场, 时段, 时刻, 特征]
self.W  : shape: (2, 17507, 14, 2)         气象数据,用作训练;特征 ['风速', '风向']

                    [风场, 时段, 风机, 特征]
self.weather : shape: (2, 17520, 26, 2)    机舱数据+气象数据;特征 ['风速', '风向']

                    [风场, 时段, 风机, 时刻, 特征]
self.test_X_ : shape: (2, 80, 25, 120, 2)       机舱数据,用作测试;特征 ['变频器电网侧有功功率', '外界温度']
self.test_X0 : shape: (2, 80, 25, 120, 2)       机舱数据,用作测试;特征 ['风速', '风向']

                    [风场, 时段, 时刻, 特征]
self.test_W  : shape: (2, 80, 14, 2)            气象数据,用作测试;特征 ['风速', '风向']
"""

制作1个验证集

times = 1
dm.generate_indexes(times)

访问风场1的训练集、验证集和测试集的风速风向数据

f = 0
print(field[f], end='\n\n')

indexes = dm.get_indexes(f)
print(indexes, end='\n\n')
print('训练集', dm.X0[f, indexes].shape, end='\n\n')

indexes = dm.val_indexes[field[f]][0]
print(indexes, end='\n\n')
print('验证集', dm.X0[f, indexes].shape, end='\n\n')

print('测试集', dm.test_X0[f].shape)

在这里插入图片描述

哇,格式多么的统一,怎么对待测试集,就怎么对待验证集,完全无缝切换。
但有些人可能更想要保存到本地,然后格式基本上和测试集_初赛一样的那种,那就把验证集保存到本地吧

验证集本地化

要求:和测试集_初赛的文件夹组织形式一致

from main import *
dm = Data_Manager()
dm.load_test_data()
times = 1
dm.generate_indexes(times)
# 验证集索引
pd.DataFrame(
    data = {field[f]: dm.val_indexes[field[f]][0] for f in range(field_len)},
    index = period
).to_csv('val_indexes.csv', float_format='%.4f', encoding='utf-8')

w_df = pd.DataFrame(
    index=np.arange(80 * 14),
    columns = ['时段', '时刻', '风速', '风向']
)
w_df.loc[:, ['时段', '时刻']] = np.array(list(itertools.product(period, np.arange(-11, 2+1))))

df = pd.DataFrame(
    data = {'time': np.arange(1, 121) * 30},
    columns = ['time', '变频器电网侧有功功率', '外界温度', '风速', '风向']
)

root = '验证集'
os.makedirs(root, exist_ok=True)
for f in range(field_len):
    os.makedirs(os.path.join(root, field[f]), exist_ok=True)
    for m in tqdm(range(machine_len)):
        os.makedirs(os.path.join(root, field[f], machine[f][m]), exist_ok=True)
        for p in range(period_len):
            val_df = df.copy()
            val_df.loc[:, ['变频器电网侧有功功率', '外界温度']] = dm.X_[f, dm.val_indexes[field[f]][0][p], m]
            val_df.loc[:, ['风速', '风向']] = dm.X0[f, dm.val_indexes[field[f]][0][p], m]
            val_df.to_csv(os.path.join(root, field[f], machine[f][m], period[p]) + '.csv', float_format='%.7f', index=False, encoding='utf-8')
    val_w_df = w_df.copy()
    val_w_df.loc[:, ['风速', '风向']] = dm.W[f, dm.val_indexes[field[f]][0]].reshape(80 * 14, 2)
    val_w_df.to_csv(os.path.join(root, field[f], 'weather.csv'), float_format='%.3f', index=False, encoding='utf-8')

标签:dm,val,df,本地化,indexes,field,shape,数据管理,风况
来源: https://blog.csdn.net/weixin_44228648/article/details/120788025

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有