短期光伏发电量短期预测(Python代码,先对异常值处理,再基于XGBoost模型预测)

一.代码流程(运行效果:短期光伏发电量短期预测(Python代码,先对异常值处理,再基于XGBoost模型预测)_哔哩哔哩_bilibili

模型流程:

  1. 导入所需的库,包括NumPy、Pandas、Matplotlib、Seaborn等。

  2. 读取发电数据和天气传感器数据,将它们存储在df_plt1_gendf_plt1_weather中。

  3. 数据预处理:

    • 对发电数据进行了一些处理,包括删除不需要的列、将日期时间列转换为日期时间类型,并根据逆变器创建了新的逆变器列。
    • 天气数据也被处理,删除了不需要的列,将日期时间列转换为日期时间类型。
  4. 确保数据完整性:

    • 创建了一个完整的日期时间序列,以确保数据中没有缺失值。
    • 初始化一个空列表,用于存储处理后的发电数据。
  5. 遍历每个逆变器:

    • 选择特定逆变器的数据。
    • 使用完整的日期时间序列合并数据,以确保没有缺失值。
    • 添加逆变器列并将数据附加到列表中。
  6. 合并所有逆变器的数据,创建了一个完整的数据集df

  7. 提取并映射日期时间特征,计算特征之间的相关性,并检查是否有负值。

  8. 创建一个新的数据集df_eda,用于探索性数据分析(EDA)。

  9. 处理异常值:

    • 创建用于统计异常值的数据集,包括低异常值、高异常值和标准差范围内的数据点。
    • 绘制散点图可视化数据点。
  10. 统计低异常值的数量,包括低异常值且AC功率为0的数量。

  11. 绘制逆变器异常值计数的条形图,包括AC功率为0的部分。

  12. 定义一个函数outliers用于处理异常值,并绘制散点图可视化处理后的数据。

  13. 处理DAILY_YIELD特征的异常值,包括将夜间时间段的发电功率设为0。

  14. 插补缺失值:

    • 使用KNNImputer插补缺失值。
    • 使用时间插值、线性插值和多项式插值方法插补缺失值。
  15. 计算每天的总发电量,并将目标变量向后移动一天,以便进行预测。

  16. 使用季节性分解方法对目标变量进行分解,以查看趋势和季节性成分。

  17. 创建基准模型,计算基准模型的RMSE(均方根误差)。

  18. 准备数据用于机器学习模型和深度学习模型的训练和测试。

  19. 使用XGBoost模型进行训练和测试,评估模型的性能,并绘制预测结果。

  20. 最后,绘制了模型的特征重要性图表。

二.数据集(68779条数据)

这些数据是在印度的两个太阳能发电厂收集的,时间跨度为34天。每对文件包含一个电力发电数据集和一个传感器读数数据集。电力发电数据集是在逆变器级别收集的,每个逆变器都连接着多行太阳能电池板。传感器数据是在发电厂级别收集的,是单个传感器阵列在发电厂中的最佳放置。

  • DATE_TIME: 表示日期和时间的时间戳,记录数据采集的具体时间点。
  • PLANT_ID: 发电厂的唯一标识符,用于区分不同的太阳能发电厂。
  • SOURCE_KEY: 太阳能发电设备的唯一标识符,用于区分不同的发电设备。
  • DC_POWER: 直流功率的测量值,表示从太阳能电池板产生的直流电功率。
  • AC_POWER: 交流功率的测量值,表示从逆变器转换后的交流电功率。
  • DAILY_YIELD: 每天的发电量,表示在给定日期内生成的总电量。
  • TOTAL_YIELD: 总发电量,表示从安装以来生成的总电量。

这些列提供了关于太阳能发电厂的重要信息,包括发电设备的功率输出、每天的发电量以及总发电量。通过这些数据,可以进行发电量的分析、设备性能的评估以及故障检测等任务。

开始时间

DATE_TIMEPLANT_IDSOURCE_KEYDC_POWERAC_POWERDAILY_YIELDTOTAL_YIELD
15-05-2020 00:0041350011BY6WEcLGh8j5v70006259559
15-05-2020 00:0041350011IF53ai7Xc0U56Y0006183645
15-05-2020 00:0041350013PZuoBAID5Wc2HD0006987759
15-05-2020 00:0041350017JYdWkrLSPkdwr40007602960
15-05-2020 00:004135001McdE0feGgRqW7Ca0007158964
15-05-2020 00:004135001VHMLBKoKgIrUVDU0007206408
15-05-2020 00:004135001WRmjgnKYAwPKWDb0007028673
15-05-2020 00:004135001ZnxXDlPa8U1GXgE0006522172
15-05-2020 00:004135001ZoEaEvLYb1n2sOq0007098099
15-05-2020 00:004135001adLQvlD726eNBSB0006271355
15-05-2020 00:004135001bvBOhCH3iADSZry0006316803
15-05-2020 00:004135001iCRJl6heRkivqQ30007177992
15-05-2020 00:004135001ih0vzX44oOqAx2f0006185184
15-05-2020 00:004135001pkci93gMrogZuBj0007169102
15-05-2020 00:004135001rGa61gmuvPhdLxV0007111493
15-05-2020 00:004135001sjndEbLyjtCKgGv0007016832
15-05-2020 00:004135001uHbuxQJl8lW7ozc0007038681
15-05-2020 00:004135001wCURE6d3bPkepu20006782598
15-05-2020 00:004135001z9Y9gH1T5YWrNuG0007007866
15-05-2020 00:004135001zBIq5rxdHJRwDNY0006339380
15-05-2020 00:004135001zVJPv84UY57bAof0007116151
15-05-2020 00:1541350011BY6WEcLGh8j5v70006259559
15-05-2020 00:1541350011IF53ai7Xc0U56Y0006183645
15-05-2020 00:1541350013PZuoBAID5Wc2HD0006987759
15-05-2020 00:1541350017JYdWkrLSPkdwr40007602960
15-05-2020 00:154135001McdE0feGgRqW7Ca0007158964
15-05-2020 00:154135001VHMLBKoKgIrUVDU0007206408
15-05-2020 00:154135001WRmjgnKYAwPKWDb0007028673
15-05-2020 00:154135001ZnxXDlPa8U1GXgE0006522172

中期时间段数据展示

20-05-2020 06:454135001uHbuxQJl8lW7ozc947.87592.087540.257071238.25
20-05-2020 06:454135001wCURE6d3bPkepu2944.2591.72541.256815390.25
20-05-2020 06:454135001z9Y9gH1T5YWrNuG953.87592.662540.3757040505.375
20-05-2020 06:454135001zBIq5rxdHJRwDNY936.759139.6256372010.625
20-05-2020 06:454135001zVJPv84UY57bAof933.62590.67540.1257148377.125
20-05-2020 07:0041350011BY6WEcLGh8j5v71564.714286152.9571429686290165
20-05-2020 07:0041350011IF53ai7Xc0U56Y1790.375175.237576.6256216506.625
20-05-2020 07:0041350013PZuoBAID5Wc2HD1728.714286169.157142973.714285717020585.714
20-05-2020 07:0041350017JYdWkrLSPkdwr41690.571429165.428571474.857142867635282.857
20-05-2020 07:004135001McdE0feGgRqW7Ca1628.714286159.257142971.428571437192169.429
20-05-2020 07:004135001VHMLBKoKgIrUVDU1727.428571169.042857176.571428577239618.571
20-05-2020 07:004135001WRmjgnKYAwPKWDb1700166.357142972.571428577061004.571
20-05-2020 07:004135001YxYtjZvoooNbGkE1593.857143155.7857143707212546
20-05-2020 07:004135001ZnxXDlPa8U1GXgE1638.428571160.185714359.571428576555195.571
20-05-2020 07:004135001ZoEaEvLYb1n2sOq1567153.185714369.571428577130401.571
20-05-2020 07:004135001adLQvlD726eNBSB1818.12517879.1256304592.125
20-05-2020 07:004135001bvBOhCH3iADSZry1535.71428615066.857142866346973.857
20-05-2020 07:004135001iCRJl6heRkivqQ31568.857143153.285714369.857142867210787.857
20-05-2020 07:004135001ih0vzX44oOqAx2f1584.142857154.8571429696217346
20-05-2020 07:004135001pkci93gMrogZuBj1550.571429151.568.571428577201417.571
20-05-2020 07:004135001rGa61gmuvPhdLxV1542150.671428668.571428577143880.571
20-05-2020 07:004135001sjndEbLyjtCKgGv1587.714286155.242857169.571428577049353.571
20-05-2020 07:004135001uHbuxQJl8lW7ozc1588.571429155.369.714285717071267.714
20-05-2020 07:004135001wCURE6d3bPkepu21578.571429154.3706815419

截止时间的数据展示

17-06-2020 23:304135001wCURE6d3bPkepu20058837028601
17-06-2020 23:304135001z9Y9gH1T5YWrNuG0058197251204
17-06-2020 23:304135001zBIq5rxdHJRwDNY0058176583369
17-06-2020 23:304135001zVJPv84UY57bAof0059107363272
17-06-2020 23:4541350011BY6WEcLGh8j5v70055216485319
17-06-2020 23:4541350011IF53ai7Xc0U56Y0060346433566
17-06-2020 23:4541350013PZuoBAID5Wc2HD0060527237425
17-06-2020 23:4541350017JYdWkrLSPkdwr40058567846821
17-06-2020 23:454135001McdE0feGgRqW7Ca0059927408587
17-06-2020 23:454135001VHMLBKoKgIrUVDU0060077456208
17-06-2020 23:454135001WRmjgnKYAwPKWDb0059537273532
17-06-2020 23:454135001YxYtjZvoooNbGkE0058867425442
17-06-2020 23:454135001ZnxXDlPa8U1GXgE0059296770737
17-06-2020 23:454135001ZoEaEvLYb1n2sOq0058717341753
17-06-2020 23:454135001adLQvlD726eNBSB005237.1428576524508
17-06-2020 23:454135001bvBOhCH3iADSZry0054606539009
17-06-2020 23:454135001iCRJl6heRkivqQ30059577426263
17-06-2020 23:454135001ih0vzX44oOqAx2f0057586426129
17-06-2020 23:454135001pkci93gMrogZuBj0059527415430
17-06-2020 23:454135001rGa61gmuvPhdLxV0059507356897
17-06-2020 23:454135001sjndEbLyjtCKgGv0058877261681
17-06-2020 23:454135001uHbuxQJl8lW7ozc0059677287002
17-06-2020 23:454135001wCURE6d3bPkepu2005147.6257028601
17-06-2020 23:454135001z9Y9gH1T5YWrNuG0058197251204
17-06-2020 23:454135001zBIq5rxdHJRwDNY0058176583369
17-06-2020 23:454135001zVJPv84UY57bAof0059107363272

 三.效果图

对项目感兴趣的,可以关注中间一行

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
import warnings
import datetime as dt
import matplotlib.dates as mdates
#代码和数据集的压缩包:https://mbd.pub/o/bread/mbd-ZJ6Zmphv
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
import warnings
import datetime as dt
import matplotlib.dates as mdates

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习的奋斗者

你的鼓励是我努力的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值