短期光伏发电量短期预测(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_TIME PLANT_ID SOURCE_KEY DC_POWER AC_POWER DAILY_YIELD TOTAL_YIELD
15-05-2020 00:00 4135001 1BY6WEcLGh8j5v7 0 0 0 6259559
15-05-2020 00:00 4135001 1IF53ai7Xc0U56Y 0 0 0 6183645
15-05-2020 00:00 4135001 3PZuoBAID5Wc2HD 0 0 0 6987759
15-05-2020 00:00 4135001 7JYdWkrLSPkdwr4 0 0 0 7602960
15-05-2020 00:00 4135001 McdE0feGgRqW7Ca 0 0 0 7158964
15-05-2020 00:00 4135001 VHMLBKoKgIrUVDU 0 0 0 7206408
15-05-2020 00:00 4135001 WRmjgnKYAwPKWDb 0 0 0 7028673
15-05-2020 00:00 4135001 ZnxXDlPa8U1GXgE 0 0 0 6522172
15-05-2020 00:00 4135001 ZoEaEvLYb1n2sOq 0 0 0 7098099
15-05-2020 00:00 4135001 adLQvlD726eNBSB 0 0 0 6271355
15-05-2020 00:00 4135001 bvBOhCH3iADSZry 0 0 0 6316803
15-05-2020 00:00 4135001 iCRJl6heRkivqQ3 0 0 0 7177992
15-05-2020 00:00 4135001 ih0vzX44oOqAx2f 0 0 0 6185184
15-05-2020 00:00 4135001 pkci93gMrogZuBj 0 0 0 7169102
15-05-2020 00:00 4135001 rGa61gmuvPhdLxV 0 0 0 7111493
15-05-2020 00:00 4135001 sjndEbLyjtCKgGv 0 0 0 7016832
15-05-2020 00:00 4135001 uHbuxQJl8lW7ozc 0 0 0 7038681
15-05-2020 00:00 4135001 wCURE6d3bPkepu2 0 0 0 6782598
15-05-2020 00:00 4135001 z9Y9gH1T5YWrNuG 0 0 0 7007866
15-05-2020 00:00 4135001 zBIq5rxdHJRwDNY 0 0 0 6339380
15-05-2020 00:00 4135001 zVJPv84UY57bAof 0 0 0 7116151
15-05-2020 00:15 4135001 1BY6WEcLGh8j5v7 0 0 0 6259559
15-05-2020 00:15 4135001 1IF53ai7Xc0U56Y 0 0 0 6183645
15-05-2020 00:15 4135001 3PZuoBAID5Wc2HD 0 0 0 6987759
15-05-2020 00:15 4135001 7JYdWkrLSPkdwr4 0 0 0 7602960
15-05-2020 00:15 4135001 McdE0feGgRqW7Ca 0 0 0 7158964
15-05-2020 00:15 4135001 VHMLBKoKgIrUVDU 0 0 0 7206408
15-05-2020 00:15 4135001 WRmjgnKYAwPKWDb 0 0 0 7028673
15-05-2020 00:15 4135001 ZnxXDlPa8U1GXgE 0 0 0 6522172

中期时间段数据展示

20-05-2020 06:45 4135001 uHbuxQJl8lW7ozc 947.875 92.0875 40.25 7071238.25
20-05-2020 06:45 4135001 wCURE6d3bPkepu2 944.25 91.725 41.25 6815390.25
20-05-2020 06:45 4135001 z9Y9gH1T5YWrNuG 953.875 92.6625 40.375 7040505.375
20-05-2020 06:45 4135001 zBIq5rxdHJRwDNY 936.75 91 39.625 6372010.625
20-05-2020 06:45 4135001 zVJPv84UY57bAof 933.625 90.675 40.125 7148377.125
20-05-2020 07:00 4135001 1BY6WEcLGh8j5v7 1564.714286 152.9571429 68 6290165
20-05-2020 07:00 4135001 1IF53ai7Xc0U56Y 1790.375 175.2375 76.625 6216506.625
20-05-2020 07:00 4135001 3PZuoBAID5Wc2HD 1728.714286 169.1571429 73.71428571 7020585.714
20-05-2020 07:00 4135001 7JYdWkrLSPkdwr4 1690.571429 165.4285714 74.85714286 7635282.857
20-05-2020 07:00 4135001 McdE0feGgRqW7Ca 1628.714286 159.2571429 71.42857143 7192169.429
20-05-2020 07:00 4135001 VHMLBKoKgIrUVDU 1727.428571 169.0428571 76.57142857 7239618.571
20-05-2020 07:00 4135001 WRmjgnKYAwPKWDb 1700 166.3571429 72.57142857 7061004.571
20-05-2020 07:00 4135001 YxYtjZvoooNbGkE 1593.857143 155.7857143 70 7212546
20-05-2020 07:00 4135001 ZnxXDlPa8U1GXgE 1638.428571 160.1857143 59.57142857 6555195.571
20-05-2020 07:00 4135001 ZoEaEvLYb1n2sOq 1567 153.1857143 69.57142857 7130401.571
20-05-2020 07:00 4135001 adLQvlD726eNBSB 1818.125 178 79.125 6304592.125
20-05-2020 07:00 4135001 bvBOhCH3iADSZry 1535.714286 150 66.85714286 6346973.857
20-05-2020 07:00 4135001 iCRJl6heRkivqQ3 1568.857143 153.2857143 69.85714286 7210787.857
20-05-2020 07:00 4135001 ih0vzX44oOqAx2f 1584.142857 154.8571429 69 6217346
20-05-2020 07:00 4135001 pkci93gMrogZuBj 1550.571429 151.5 68.57142857 7201417.571
20-05-2020 07:00 4135001 rGa61gmuvPhdLxV 1542 150.6714286 68.57142857 7143880.571
20-05-2020 07:00 4135001 sjndEbLyjtCKgGv 1587.714286 155.2428571 69.57142857 7049353.571
20-05-2020 07:00 4135001 uHbuxQJl8lW7ozc 1588.571429 155.3 69.71428571 7071267.714
20-05-2020 07:00 4135001 wCURE6d3bPkepu2 1578.571429 154.3 70 6815419

截止时间的数据展示

17-06-2020 23:30 4135001 wCURE6d3bPkepu2 0 0 5883 7028601
17-06-2020 23:30 4135001 z9Y9gH1T5YWrNuG 0 0 5819 7251204
17-06-2020 23:30 4135001 zBIq5rxdHJRwDNY 0 0 5817 6583369
17-06-2020 23:30 4135001 zVJPv84UY57bAof 0 0 5910 7363272
17-06-2020 23:45 4135001 1BY6WEcLGh8j5v7 0 0 5521 6485319
17-06-2020 23:45 4135001 1IF53ai7Xc0U56Y 0 0 6034 6433566
17-06-2020 23:45 4135001 3PZuoBAID5Wc2HD 0 0 6052 7237425
17-06-2020 23:45 4135001 7JYdWkrLSPkdwr4 0 0 5856 7846821
17-06-2020 23:45 4135001 McdE0feGgRqW7Ca 0 0 5992 7408587
17-06-2020 23:45 4135001 VHMLBKoKgIrUVDU 0 0 6007 7456208
17-06-2020 23:45 4135001 WRmjgnKYAwPKWDb 0 0 5953 7273532
17-06-2020 23:45 4135001 YxYtjZvoooNbGkE 0 0 5886 7425442
17-06-2020 23:45 4135001 ZnxXDlPa8U1GXgE 0 0 5929 6770737
17-06-2020 23:45 4135001 ZoEaEvLYb1n2sOq 0 0 5871 7341753
17-06-2020 23:45 4135001 adLQvlD726eNBSB 0 0 5237.142857 6524508
17-06-2020 23:45 4135001 bvBOhCH3iADSZry 0 0 5460 6539009
17-06-2020 23:45 4135001 iCRJl6heRkivqQ3 0 0 5957 7426263
17-06-2020 23:45 4135001 ih0vzX44oOqAx2f 0 0 5758 6426129
17-06-2020 23:45 4135001 pkci93gMrogZuBj 0 0 5952 7415430
17-06-2020 23:45 4135001 rGa61gmuvPhdLxV 0 0 5950 7356897
17-06-2020 23:45 4135001 sjndEbLyjtCKgGv 0 0 5887 7261681
17-06-2020 23:45 4135001 uHbuxQJl8lW7ozc 0 0 5967 7287002
17-06-2020 23:45 4135001 wCURE6d3bPkepu2 0 0 5147.625 7028601
17-06-2020 23:45 4135001 z9Y9gH1T5YWrNuG 0 0 5819 7251204
17-06-2020 23:45 4135001 zBIq5rxdHJRwDNY 0 0 5817 6583369
17-06-2020 23:45 4135001 zVJPv84UY57bAof 0 0 5910 7363272

 三.效果图

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

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

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

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

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

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

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

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

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

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

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

对项目感兴趣的,可以私信

你可能感兴趣的:(python,机器学习,人工智能)